PL-SLAM是Ruben Gomez-Ojeda大神融合點和線特徵SLAM的最新成果,並開放了源代碼,本博文記錄安裝運行PL-SLAM遇到的一些問題。php
1源代碼地址html
https://github.com/rubengooj/pl-slam
2編譯配置PL-SLAMgit
It can be easily found at http://opencv.org.
建議安裝OpenCV 3.1.0,不然編譯過程當中會出現一些.so文件的錯誤,推測做者可能用的這個版本。github
參考教程web
http://www.javashuo.com/article/p-zytoivvx-gp.htmlapi
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-dev
g2o - General Graph Optimization
It can be found at:
https://github.com/RainerKuemmerle/g2o.git
這裏在編譯時可能會出現錯誤,將安裝好的g2o文件夾中的cmake_modules文件夾複製到~/pl-slam文件夾中便可。 bash
Installation on Ubuntu:app
sudo apt-get install libyaml-cpp-dev
It can be found at:ide
https://github.com/rubengooj/stvo-pl
這個項目一樣是做者的工做,必須安裝這個項目,由於會用到這個項目的東西。測試
https://github.com/MRPT/mrpt/tree/0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3
必須使用這個指定版本的MRPT,不然會編譯報錯
Line Descriptor
We have modified the line_descriptor module from the OpenCV/contrib library (both BSD) which is included in the 3rdparty folder.
這裏不用操做,後面的腳本build.sh會一併安裝。
可是這裏值得特別注意,通常狀況下咱們安裝OpenCV就夠用了,可是爲了使用line_descriptor,必須安裝opencv_contrib,並且最好同時安裝,不然會可能出現一些錯誤。
cd ~/pl-slam
sh build.sh
編譯過程會出現找不到g2o庫文件的錯誤,經過如下方式解決
cd /usr/local/lib
sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so
Usage
Datasets configuration
We employ an environment variable, ${DATASETS_DIR}, pointing the directory that contains our datasets. Each sequence from each dataset must contain in its root folder a file named dataset_params.yaml, that indicates at least the camera model and the subfolders with the left and right images. We provide dataset parameters files for several datasets and cameras with the format xxxx_params.yaml.
關鍵是設置數據集路徑的環境變量,閱讀~/pl-slam/app/plslam-dataset.cpp能夠加深理解。
gedit ~/.bashrc export DATASETS_DIR=/home/zn(改成你的工做目錄) source ~/.bashrc
在KITTI下載kitti/00數據,並將其放到~/KITTI目錄下。
將~/pl-slam/config/dataset_params/kitti00-02.yaml複製到~/KITTI/kitti/00,而後將kitti00-02.yaml改成dataset_params.yaml.
將~/pl-slam/config/config/config_kitti.yaml中vocabulary_p和vocabulary_l的路徑改成本身的。
./build/plslam_dataset kitti/00 -c config/config/config_kitti.yaml -o 100 -s 2 -n 1000
至此,整個編譯測試過程完成。