记录在Ubuntu22.04下编译LIO-SAM(liorf-ros2)的ROS2(humble)版本的流程[自用]

1. 系统

X64 UBUNTU 22.04 虚拟机

2. ROS Version

humble 使用鱼香ROS一键脚本,非常好用,感谢大佬。
wget http://fishros.com/install -O fishros && . fishros

3. 依赖库

3.1 GTSAM

这个也有一些依赖库需要安装,好在全是apt方式

3.1.1 TBB

安吧那就,貌似比以前Ubuntu20.04上的新一些。
sudo apt-get install libtbb-dev

3.1.2 eigen3

系统自带 3.3.7

3.1.3 编译GTSAM

一开始使用GTSAM 4.0.3
报错

CMake Error at cmake/FindTBB.cmake:187 (file):
  file failed to open for reading (No such file or directory):

    /usr/include/tbb/tbb_stddef.h

应该是 Ubuntu22.04 的tbb太新了,没有这个头文件了。
要不降级tbb,要不升级GTSAM,感觉升级GTSAM应该更可靠点。
换成 GTSAM 4.1,偷懒用apt安装试下

# Add GTSAM-PPA 
sudo add-apt-repository ppa:borglab/gtsam-release-4.1 
sudo apt install libgtsam-dev libgtsam-unstable-dev

嗯,好像Network连不上这个repo,还是源码安装吧
又试了4.1.0,还是一样的报错,直接一步到位整个4.2.0
这下能编译了,至于LIO-SAM能不能用gtsam4.2,这里先打个问号。

cmake -DGTSAM_USE_SYSTEM_EIGEN=ON -DEigen3_DIR=/usr/include/eigen3  ..
make -j4
sudo make install

3.2 Geographiclib

这里使用的的LIO_SAM版本是大佬的修改版本的ROS2分支,去掉了依赖的robot_localization模块,使用了更简洁易用的geographiclib,安装就用apt就行非常方便:
sudo apt-get install libgeographic-dev geographiclib-tools

4. 编译LIO_SAM(liorf-ros2)

大佬的源码仓库: https://github.com/YJZLuckyBoy/liorf/tree/liorf-ros2
下载完毕后放到工作空间的src目录,无脑colcon build,发现死机了,虚拟机配置不太够,控制一下编译的进程数
colcon build --parallel-workers 2
报错
error: reference to ‘Vector’ is ambiguous
应该是gtsam和eigen关于Vector类型的定义冲突了,所以把报错行的Vector(6),改成gtsam::Vector(6);
编译成功。
下了个ros2 的 horizon的bag,小改了一下配置,能跑起来。

完结撒花!!

posted @ 2025-04-11 15:51  半阙流年  阅读(488)  评论(0)    收藏  举报