ubuntu16.04
pcl1.9.0
gtsam 4.0.2
电脑原来安装的是1.7的版本,网上的一些人说,1.7版本最后不能呢个成功运行,需要1.8以上的版本,所以先卸载之前的pcl版本,然后重新安装1.9.
(1)卸载不满足条件的pcl版本
sudo apt-get remove libpcl1.7
sudo apt-get remove libpcl-*
(2)PCL依赖库安装
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
注意:很多朋友应该都是换了清华、中科大、阿里等源,如果update不能成功完成的话,可以更换成UBUNTU最原始的源。(我突然遇到了这个情况,换成原来的源就解决了)。
(3)源码下载
github下载地址:pcl-1.9.0
下载tar.gz版本的
(4)编译
将安装包放在home下
1.先解压安装包
tar -zxvf pcl-pcl-1.9.0.tar.gz
2.进入到安装包
cd pcl-pcl-1.9.0
mkdir build
cd build
3.编译
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
sudo make install
时间较长,耐心等待.
lio-slam源码中是使用4.0.2的版本安装的.
(1)下载
wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build
编译之前需要提前修改下eigen3一个版本的使用问题,在gtsam-4.0.2/CMakeList.txt中接近300行左右的地方.如下图所示,在if(GTSAM_USE_SYSTEM_EIGEN)前加上
set(GTSAM_USE_SYSTEM_EIGEN on)
然后在进行编译.接着前面在创建了build文件夹进入到build文件夹中.
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
make -j4
sudo make install
sudo apt-get install -y ros-kinetic-navigation
sudo apt-get install -y ros-kinetic-robot-localization
sudo apt-get install -y ros-kinetic-robot-state-publisher
cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make
注意:我这里编译过程中在百分之95时报错,很奇怪的一个错,然后在网上找到亮一个解决方法:
/usr/bin/ld: cannot find -lBoost::timer
collect2: error: ld returned 1 exit status
LIO-SAM-master/CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target '/home/kyle/ros/kyle_ws/devel/lib/lio_sam/lio_sam_imuPreintegration' failed
make[2]: *** [/home/kyle/ros/kyle_ws/devel/lib/lio_sam/lio_sam_imuPreintegration] Error 1
CMakeFiles/Makefile2:10000: recipe for target 'LIO-SAM-master/CMakeFiles/lio_sam_imuPreintegration.dir/all' failed
make[1]: *** [LIO-SAM-master/CMakeFiles/lio_sam_imuPreintegration.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
解决方法:
修改lio中CMakeLists.txt中:
find_package(OpenMP REQUIRED)
find_package(PCL REQUIRED QUIET)
find_package(OpenCV REQUIRED QUIET)
find_package(GTSAM REQUIRED QUIET)
修改为:
find_package(OpenMP REQUIRED)
find_package(GTSAM REQUIRED QUIET)
find_package(PCL REQUIRED)
find_package(OpenCV REQUIRED)
结果竟然莫名其妙的编译成功,然后下了官网两个数据集试验了其中不需要修改配置的park数据集,下过如下:
roslaunch lio_sam run.launch
rosbag play park.bag
笔记本配置一般,3倍速播放直接点云飘飞了.
这里简单记录一下我整个编译过程
上述可能在其他环境下会出现很多其他问题,我之前在自己配置好点的台式上搭建了一次,很多问题,gtsam4.0.0,4.0.2,4.0.3三个版本我都试过,还安装了MKL.但是最后即使编译成功后,运行代码依赖有两个节点报错,自己也莫名其妙的,然后换上了笔记本,结果就成功了...
后续会尝试自己录数据集验证一下...
参考文献:
LIO-SAM编译问题_m0_38144614的博客-CSDN博客
ubuntu16.04 运行LIO-SLAM_wyy13273181006的博客-CSDN博客
GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping