PL-SLAM配置过程
总的来说,PL-SLAM所需要的的依赖项还是挺多的,配置过程比较麻烦,下面先列一下所需要的的依赖项
- OpenCV 3+
- Eigen3
- Boost
- g2o
- YAML
- wxWidgets
- MRPT
- stvo-pl
总的来说有9个。其中3Boost、5YAML和6wxWidgets比较容易,正常情况下一句指令在线安装就可以;1Opencv和2Eigen只要本满足要求就可以,基本也没有什么问题,只不过下载和编译的时间比较长。
难点就在4g2o、7MRPT和8stvo-pl。
1. g2o的安装
首先需要注意的是:
g2o最好不要用最新的版本,否则在最后pl-slam编译的时候会报错。
建议使用高翔博士的版本:https://github.com/gaoxiang12/slambook/blob/master/3rdparty/g2o.tar.gz
使用方法:
参考:Ubuntu16.04安装视觉SLAM环境(g2o)
1.1 下载g2o源码
git clone https://github.com/RainerKuemmerle/g2o.git
1.2 安装依赖库(有些可能之前安装过,以防万一都执行一遍):
sudo apt-get install libcholmod3.0.6
sudo apt-get install libsuitesparse-dev
sudo apt-get install freeglut3 freeglut3-dev freeglut3-dbg
sudo apt-get install libqglviewer2 libqglviewer-dev libqglviewer-doc
sudo apt-get install libeigen3-dev libeigen3-doc
1.3 编译,进入下载好的g2o文件夹
mkdir build
cd build/
cmake ..
make
sudo make install
2. MRPT的安装
强调一点: mrpt、stvo-pl和pl-slam三个工程最好放在同一个文件夹下,否则最后修改路径比较麻烦
$ sudo apt-get install build-essential pkg-config libdc1394-22-dev libjpeg-dev libsuitesparse-dev libftdi-dev freeglut3-dev zlib1g-dev libusb-1.0-0-dev libudev-dev libfreenect-dev libavformat-dev libswscale-dev libassimp-dev libgtest-dev libpcap-dev
//进入MRPT码包
$ mkdir build
$ cd build
$ cmake ..
$ make -j8//电脑配置不好的可以使用j4,性能好的可以使用j12
$ sudo make install
cmake的结果图
make -j8
sudo make install
3. stvo-pl安装配置
github地址
将包解压完成后,在build文件夹下有个build.sh文件,直接执行:
./build.sh
会提示权限不够,执行:sudo chmod 777 build.sh
解决。
附安装过程截图:
4. PL-SLAM
运行PL-SLAM时首先需要修改对应的文件,然后编译。这个过程比较坎坷。
- 增加了cmake_modules文件夹,内含FindG2O.CMake
- CMakList.txt:54、67行地址注意是否需要修改(提示缺少.h文件).
- ~/src/slamConfig.cpp内vocabulary_p和vocabulary_l 地址修改.
- /config/config/config_kitti.yamlvocabulary_p和vocabulary_l 地址修改.
期间重新下载了g2o并编译,然后遇到cmake_module的问题。根据自己的多次采坑,总结出来一个简单有效的方法,只需要将g2o文件夹下的cmake_module文件夹复制到pl-slam文件夹下就好,不需要修改文件里的路径参数。
先上一幅PL-SLAM编译成功的截图。2020.10.7 上午10.20分
感谢:实测 | Stereo PL-SLAM安装运行以及错误解决
运行
Options:
-c Config file
-o Offset (number of frames to skip in the dataset directory
-n Number of frames to process the sequence
-s Parameter to skip s-1 frames (default 1)
A full command would be:
./plslam_dataset kitti/00 -c ../config/config_kitti.yaml -o 100 -s 2 -n 1000
Euroc数据集运行
./plslam_dataset mav0 -c ../config/config/config_euroc.yaml -o 100 -s 1
在运行之前需要将config/config/config_euroc.yaml文件、pl-slam/src/slamConfig.cpp文件中的vocabulary_p 和 vocabulary_l 路径换成自己的路径。
其中,以上三个文件是对voc.tar.gz解压之后生成的。
但是,以上路径都修改之后,我的运行还是报错。
再运行,提示wxWidgets找不到,好了,去安装wxWidgets。12.57分
https://blog.csdn.net/xs1102/article/details/80757404
wxWidgets下载链接
./configure --with-opengl --enable-debug --enable-unicode && make && make install
执行提示的指令
git submodule update --init 3rdparty/catch
需要在线下载一些东西,网速贼慢。
完成后再执行
./configure --with-opengl --enable-debug --enable-unicode && make && make install
经过好久的等待之后,却还是报错。顿时头大了。
没办法,直接执行
sudo apt-get install libwxgtk2.8-dev
但是提示无法定位包,之前就是因为没法安装所以才下载然后编译的,参考
Ubuntu 16.04 libwxgtk2.8-dev报错
安装成功,但是运行PL-SLAM还是报错。无奈之下,重新编译mrpt。
mrpt编译安装完成后,再运行,就运行成功了,呈上结果图。
5. 出现的问题及解决办法:
5.1 找不到-lg2o_ext_csparse
按照博客上说的,执行以下代码即可解决:
cd /usr/local/lib
sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so