LeGO-LOAM由点云分割、特征提取、激光里程计、激光建图组成,算法思想与RGBD-SLAM有些类似,系统通过接收来自三维激光雷达的输入并输出6自由度姿态估计。整个系统分为五个模块,第一个是分割,将单个扫描的点云投影到一个固定范围的图像上进行分割,然后第二个是将分割的点云发送到特征提取模块。第三个,激光雷达里程计使用从上一个模块中提取的特征找到在连续扫描过程中机器人位姿的转换,这些信息最终用于激光雷达用点云方式的建图中。第五个模块是融合激光雷达里程测量和建图的姿态估计结果,并输出最终的姿态估计。
从论文中可以得到,从地面特征中确认机器人当前位姿z,roll,pitch,而在每一帧点云数据匹配的过程中得到机器人位姿的x,y,yaw。
从CMakeLists中我们可以看到,它依赖于PCL、OpenCV、GTSAM三个库。
其中,PCL又依赖于Boost、Eigen、FLANN、VTK,其中VTK又依赖与QT5。
笔者现有一台全新的电脑(显卡2080Ti),准备在Ubuntu16.04.6的环境下进行源码的配置与安装。环境配置和安装真的是非常基础又让人头疼和烦躁的事情。前后历经了快一个周的时间才陆陆续续搞定。现在说明一下各个依赖项/库的版本设置:
Ubuntu:16.04.6(2019.02发布)
下载地址:http://releases.ubuntu.com/16.04/
PCL:1.8.1
OpenCV:3.4.1
QT:5.9.2
VTK:7.1.1(至关重要!!别装错版本)
gtsam: 4.0.0-alpha2
第一步,QT5:
chmod +x qt-opensource-linux-x64-5.9.2.run
./qt-opensource-linux-x64-5.9.2.run
第二步,PCL:
感谢:https://blog.csdn.net/lilywri823/article/details/86583269
1、首先是配置好各种依赖项,比如boost、eigen、flann、opengl(为了安装vtk)
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 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
(如果需要PCLVisualizer,安装OpenNI、OpenNI2)
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
2、安装VTK7.1.1
首先安装依赖项X11,OpenGL,CMake-gui
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
sudo apt-get install cmake cmake-gui
下载vtk源码,我选择了VTK-7.1.1.tar.gz,下载完成后解压缩到你的文件安装目录。在文件目录下打开终端,输入cmake-gui打开
cmake图形界面:
配置“where is the source code”的路径为vtk-7.1.1所在的目录
在vtk-7.1.1目录新建build文件夹,配置“where to build the binaries”为build文件夹
点击Configure,配置完成后提示configure done
选择“VTK_GROUP_QT”再次点击configure
配置完成后点击generate按钮,会在build文件夹下生成工程文件
切换文件目录到vtk-7.1.1文件夹下的build目录,然后打开终端,输入:
make
sudo make install
即可完成VTK的安装
3、安装PCL1.8.1
cd pcl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None ..
make
sudo make install
第三步,OpenCV:
感谢:https://blog.csdn.net/cocoaqin/article/details/78163171
1、去官网下载opencv,在本教程中选用的是opencv3.4.1,其他版本的配置方法异曲同工。
下载链接http://opencv.org/releases.html,选择sources版本
2、解压下载下来的zip包
unzip opencv-3.4.1.zip
3、进入到解压后的文件包中
4、安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
5、安装完cmake之后执行命令 ,创建编译文件夹
mkdir build
cd build
6、
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install
7、sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
8、执行如下命令使得刚才的配置路径生效
sudo ldconfig
9、配置bash
sudo gedit /etc/bash.bashrc
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,执行如下命令使得配置生效
source /etc/bash.bashrc
更新
sudo updatedb
10、至此所有的配置都已经完成
下面用一个小程序测试一下
cd到opencv-3.4.1/samples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功
PS:OpenCV默认安装在usr/local/
第四步,gtsam:
1、在GitHub下载源码,我第一次下载的tar.gz包不正常,无法正确解压,后来下载的zip包,似乎没有解压问题https://github.com/borglab/gtsam/releases
2、
cd gtsam_src
mkdir build
cd build
cmake ..
make check(可选)
sudo make install
make
PS:gtsam被默认安装到了/usr/local/include和/usr/local/lib下
第五步,编译LeGO-LOAM源代码
方法一、从GitHub上下载开源源代码,放到~/catkin_ws/src文件夹下,接着catkin_make编译
方法二、git方法下载,如下
cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1
结语:
整套操作下来,系统盘空间占用如下图所示:
最后的最后想说,其实在一个干净的系统下按照上述的操作进行编译和安装,是非常顺利的。但是为什么我会花费了将近一个周的时间去做呢?原因有下:1、原来的系统不干净,重装了系统才特别顺利,原来的系统有anaconda,总是链接到错误的依赖项去;2、装错过VTK的版本,卸了又装,走过长长的弯路;3、显卡驱动的问题,毕竟这台电脑以后会用于深度学习,显卡驱动这个玄学的问题必须首要处理,经历过无数次循环登录的场景,卸了又装,装了又卸,最后升级Ubuntu系统到16.04.6,再采用PPA安装NVIDIA driver,成功!!
如果您的编译和安装过程出现任何问题,欢迎留言讨论。