Ubuntu16/18.04下編譯安裝OpenVSLAM(最新版)

文章參考本文鏈接:https://blog.csdn.net/xiangxianghehe/article/details/90600396

由於版本原因略有改動

簡介

5月20日,日本先進工業科技研究所(National Institute of Advanced Industrial Science and Technology )開源了一套視覺SLAM算法:OpenVSLAM。

開源地址:
https://github.com/xdspacelab/openvslam

開源才一週star數目已逾800。博主在自己的Ubuntu18.04虛擬機下嘗試了一下,無論是代碼風格還是運行效果,感覺比ORB-SLAM2優秀很多,感覺會是以後初學者入門視覺SLAM的首選框架,牆裂推薦。

OpenVSLAM是一套單目、立體、RGB-D視覺SLAM系統,其主要特點:

兼容多種相機類型,並可以輕鬆定製兼容其他類型相機;
可以存儲和加載創建的地圖,然後OpenVSLAM可以基於預先構建的地圖定位新圖像;
系統完全模塊化的;
提供了一些代碼片段來理解該系統的核心功能。

OpenVSLAM基於具有稀疏特徵的間接SLAM算法構建的,例如ORB-SLAM,ProSLAM和UcoSLAM。

OpenVSLAM的最引人注意的特性是系統可以處理使用多種相機模型捕獲的圖像,例如透視相機、魚眼相機和equirectangular相機(環繞平行多相機系統)。如果需要,用戶可以輕鬆實現支持其他的相機模型(例如雙魚眼、catadioptric等)。

官方提供了較詳細的文檔:
https://openvslam.readthedocs.io/en/master/

簡單的教程:
https://openvslam.readthedocs.io/en/master/simple_tutorial.html

以及使用範例:
https://openvslam.readthedocs.io/en/master/example.html

它可以幫助研究SLAM算法的同學很方便地在三大數據集:

    KITTI Odometry dataset、
    EuRoC MAV dataset、
    TUM RGBD dataset
    進行算法性能評測。

該庫使用 BSD 2-Clause License,也就是允許商用,但要聲明版權方。

感謝開發者~
歡迎大家參考、貢獻代碼。
依賴

GCC >= 4.8 (必須支持C++11特性)
Eigen >= 3.3.0
g2o
SuiteSparse
DBoW2 : 必須使用作者的修改版 https://github.com/shinsumicco/DBoW2.
yaml-cpp >= 0.6.0
OpenCV >= 3.4.0
0.依賴安裝

sudo apt-get update
sudo apt-get --no-install-recommends
sudo apt-get build-essential pkg-config cmake git wget curl unzip
sudo apt-get libatlas-base-dev libsuitesparse-dev
sudo apt-get libgtk-3-dev
sudo apt-get ffmpeg
sudo apt-get libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev
sudo apt-get  libgoogle-glog-dev libgflags-dev
sudo apt-get install libopenblas-dev
sudo apt-get install --no-install-recommends libboost1.58-all-dev
sudo apt-get install libx11-dev
sudo apt-get install libgl1-mesa-dev sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install doxygen
wget https://nchc.dl.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz --no-check-certificate
tar -xzvf glew-2.1.0.tgz cd glew-2.1.0/
make -j2
sudo make install
sudo ln -s /usr/lib64/libGLEW.so.2.1 /usr/lib/libGLEW.so.2.1
sudo ldconfig -v

1. Eigen安裝(最新3.3.7)

wget https://github.com/eigenteam/eigen-git-mirror/archive/3.3.7.tar.gz
tar -xzvf 3.3.7.tar.gz
mv eigen-git-mirror-3.3.7/ eigen-3.3.7/
cd eigen-3.3.7/
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j2
sudo make install
sudo ldconfig -v

2. 安裝g2o

git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DCMAKE_CXX_FLAGS=-std=c++11 \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_UNITTESTS=OFF \
    -DBUILD_WITH_MARCH_NATIVE=ON \
    -DG2O_USE_CHOLMOD=ON \
    -DG2O_USE_CSPARSE=ON \
    -DG2O_USE_OPENGL=OFF \
    -DG2O_USE_OPENMP=ON \
    ..
make -j2
sudo make install
sudo ldconfig -v

3.安裝OpenCV3

wget -q https://github.com/opencv/opencv/archive/4.1.0.zip
unzip -q 4.1.0.zip
rm -rf 4.1.0.zip
cd opencv-4.1.0
mkdir -p build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DENABLE_CXX11=ON \
    -DBUILD_DOCS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_OPENEXR=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_TESTS=OFF \
    -DWITH_EIGEN=ON \
    -DWITH_FFMPEG=ON \
    -DWITH_OPENMP=ON \
    ..
make -j2
sudo make install
sudo ldconfig -v

4.安裝Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j
sudo make install
sudo ldconfig -v

5.安裝作者自己的DBoW2

git clone https://github.com/shinsumicco/DBoW2.git
cd DBoW2
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j2
sudo make install
sudo ldconfig -v

6.安裝yaml-cpp

注意yaml-cpp可能安裝出錯,這裏需要在CMakeLists.txt開啓fPIC選項,即需要把174行改爲:

set(yaml_cxx_flags "-Wall ${GCC_EXTRA_OPTIONS} -fPIC -pedantic -Wno-long-long ${yaml_cxx_flags}")

我發現在新版本的 代碼中應該是搜索和改爲

 $<${not-msvc}:-fPIC -pedantic -pedantic-errors>

然後依次執行以下命令:

git clone https://github.com/jbeder/yaml-cpp
cd yaml-cpp
mkdir build && cd build
cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    ..
make -j2
sudo make install
sudo ldconfig -v

  7.目前的代碼需要 安裝cuda-9.0

至此依賴已經安裝完畢,編譯安裝主項目即可:

8. 編譯主項目

https://github.com/xdspacelab/openvslam
cd openvslam
git submodule init
git submodule update
mkdir build && cd build
cmake \
    -DBUILD_WITH_MARCH_NATIVE=OFF \
    -DUSE_PANGOLIN_VIEWER=ON \
    -DUSE_STACK_TRACE_LOGGER=ON \
    -DBOW_FRAMEWORK=DBoW2 \
    -DBUILD_TESTS=OFF \
    ..
make -j2

demo 運行示例

這裏以EuRoC數據集爲例跑下demo:
文件準備

一. 首先下載orb_vocab.zip,解壓得到字典文件orb_vocab.dbow2。

二. 下載EuRoC數據集,解壓得到mav0文件夾。

三. 進入到openvslam主項目的build文件夾下,執行命令:

 ./run_euroc_slam \
    -v /path/to/orb_vocab/orb_vocab.dbow2 \
    -d /path/to/EuRoC/MAV/mav0/ \
    -c ../example/euroc/EuRoC_mono.yaml

我的是

 ./run_euroc_slam \
-v /home/amax/openvslam_tools/orb_vocab/orb_vocab.dbow2 \
-d /home/amax/openvslam_tools/V1_03_difficult/mav0 \
-c ../example/euroc/EuRoC_stereo.yaml

其中把/path/to/orb_vocab/orb_vocab.dbow2和/path/to/EuRoC/MAV/mav0/換成你本機上orb_vocab.dbow2和mav0文件夾的絕對路徑即可。然後就可以看到如下可視化效果:
slam

 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章