记录在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,小改了一下配置,能跑起来。
完结撒花!!