ubuntu20.04跑通LIO-SAM算法全过程(踩出许多坑)
由于研一上学期LIO-SAM算法一直出问题没有跑通,今天特意又跑了一下,记录了一下跑通的全过程:
一、安装依赖
- Boost >= 1.65
-
sudo apt-get install libboost-all-dev
- CMake >= 3.0
-
sudo apt-get install cmake
-
gcc 4.7.3 on Linux.一般都有,查下版本,大于4.7.3就行。
-
gcc --version
之后依赖安装TBB、MKL(可选):
-
安装TBB:
-
sudo apt-get install libtbb-dev
-
安装MKL(可选):
-
由于资源库失效,这里选择忽略安装,不影响后续运行。
安装完这些依赖后我们开始下一步。
二、安装GTSAM
这里需要注意,由于我的ubuntu是20.04版本,所以我安装的GTSAM 4.0.0-alpha2,大家安装4.0.2或者4.0.3即可。
这里提供直接下载安装包的下载连接:
Releases · borglab/gtsam · GitHub 可以选择自己需要的版本,每个版本的最后都有Assets,可以直接下载安装包(.zip或者.tar.gz)。
解压后运行下述代码(由于没有安装MKL,所以按照下述代码来):
#!bash
$ cd gtsam-1.X.X #自己的GTSAM目录
$ mkdir build
$ cd build
$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_WITH_EIGEN_MKL=OFF -DGTSAM_WITH_EIGEN_MKL_OPENMP=OFF ..
$ make check
$ sudo make install
至此,GTSAM安装完毕。
三、LIO-SAM
创作工作空间,下载LIO-SAM代码:
cd ~/lio-sam/src #这里工作空间的名字可以自己修改
git clone https://github.com/TixiaoShan/LIO-SAM.git
编译之前需要避开三个坑!
1.OpenCV 版本问题
- 找到utility.h中的:#include
,修改为#include
2.pcl问题
- 为了让LIO-SAM支持C++14,需要修改下LIO-SAM文件夹下的CMakeList.txt文件:
- 修改如下:
set(CMAKE_CXX_FLAGS "-std=c++14") #将c++11改为c++14
3./usr/bin/ld问题
- 同样在刚刚打开的CMakeLists文件中加入下述代码:
find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)
至此三个坑成功避开,接下来在你的工作空间下打开终端编译LIO-SAM:
catkin_make
运行lanuch文件:
roslaunch lio_sam run.launch
如果不出问题的话效果如下:
四、LIO-SAM可跑数据集
这里提供一些LIO-SAM可直接跑的数据集,大家可自行下载:
https://drive.google.com/drive/folders/1gJHwfdHCRdjP7vuT556pv8atqrCJPbUq
五、后续我遇到的几个问题
这里我再总结几个我在跑算法过程中遇见的小问题:
1.问题1
- 对于这个问题,我也搞了很久,可以试一下下述代码,大概就是opt/ros/noetic/lib/下缺少文件libmetis.so,所以要从usr/local/lib/中copy过来,当然不同电脑这个目录下不一定有libmetis.so文件,大家可以自己去目录下查找一下看有没有:
cd /usr/local/lib/
sudo cp libmetis.so /opt/ros/noetic/lib/
2.问题2
运行LIO-SAM并play数据集bag包后出现如下情况,并且效果漂移:
这个我也没搞清楚什么原因,但是我调整params.yaml旋转矩阵后,便最后稳定了下来:
主要把extrinsicRot的矩阵改为了单位矩阵,没有再漂移,大家可以调一下试一下效果。
总的来说,我遇见的坑与问题全都总结在了这篇博客中,如果有不对的地方或者更好的方法,还请批评改正!