Ubuntu20.04+ROS Noetic(debian full desktop ver)
相关依赖pcl, opencv都是默认apt装上的版本,分别是1.10.x和4.x,本例编译运行成功无需更换版本。
gtsam通过github编译安装
https://github.com/borglab/gtsam
以下两个实现版本参考后文步骤基本都可以正常运行
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
https://github.com/facontidavide/LeGO-LOAM-BOR
按照自带md走完并不能成功编译
一个是opencv4的头文件变化
将#include
另一个是pcl只能c++14以上,所以需要把功能包下cmakelist的C++标准改掉
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
然后接着编译到pcl的voxel_grid.h头文件时报错Eigen::Index找不到,git上LEGO-loam有这个Issue
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/215
这个里面说把Eigen::Index换成int即可,但是我之前编译别的用pcl的库不存在这个问题,所以我认为不应该在库文件修改。
改项目代码的方法:
我设法覆盖掉了Eigen::Index的定义,在utility.h中引用pcl前添加
// #include实测引用了Eigen也找不到还有新bug,这里用typedef糊弄一下,可通过 namespace Eigen{ typedef int Index; }; // 这里因为Eigen::Index找不到 #include
接下来编译末尾还会报Boost的链接错误:/usr/ld:找不到 -lBoost::serialization等
在cmakelist中添加
find_package(Boost REQUIRED thread serialization timer chrono)
以及
target_link_libraries(lego_loam_bor ... ${Boost_LIBRARIES} ...)
到此编译错误结束
运行错误:-
需要在https://github.com/TixiaoShan/Stevens-VLP16-Dataset 下载rosbag文件,区别是需要imu等话题的数据,这个比loam所需要录制的topic更多(另外readme里面漏说了,run.launch还写了一个参数imu_topic
-
tf出warning,找不到变换,rviz黑屏:将代码的/camera和/camera_init的/去掉
-
[lego_loam_bor-5] process has died [pid 8451, exit code 127 …]错误
没看明白具体log是啥, 但是参照这个issue莫名其妙地解决了问题
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/160
安装这个,然后bug就magically disappeared了
sudo apt-get install libparmetis-dev



