ORB-SLAM2的編譯運行以及TUM數據集測試


ORB-SLAM2的編譯運行以及TUM數據集測試

2018.02.06 17:04 字數 1838 閱讀 2167評論 0

       近段時間一直在學習高翔博士的《視覺SLAM十四講》,學了以后發現自己欠缺的東西實在太多,好多都需要深入系統的學習。ORB-SLAM2是一套完整的SLAM方案,提供了單目,雙目和RGB-D三種接口。它能夠實現地圖重用,回環檢測和重新定位的功能。無論是在室內的小型手持設備,還是到工廠環境的無人機和城市里駕駛的汽車,ORB-SLAM2都能夠在標准的CPU上進行實時工作。ORB-SLAM2在后端上采用的是基於單目和雙目的光束法平差優化(BA)的方式,這個方法允許米制比例尺的軌跡精確度評估。此外,ORB-SLAM2包含一個輕量級的定位模式,該模式能夠在允許零點漂移的條件下,利用視覺里程計來追蹤未建圖的區域並且匹配特征點。 可以說,ORB_SLAM2是近幾年SLAM的集大成者,它吸收了近幾年monoslam領域的很多理論成果,比如逆深度的使用,g2o工具箱的優化等。而且以orb特征貫穿始終,從一開始的特征處理,匹配,以及用於回環的bag-of-words,詞典,全用的是orb。缺點在於它的的建圖部分只含有稀疏的map point,這不僅讓最終建的圖很難看,而且對於機器人下一步的應用會造成很大困難。

      文章主要對ORB-SLAM2進行編譯運行。以及下載TUM上的數據集。然后跑自己的數據集,以及利用筆記本攝像頭進行測試。

前期准備

鏈接在此:https://github.com/raulmur/ORB_SLAM2

 使用git clone https://github.com/raulmur/ORB_SLAM2 下載ORB-SLAM2 根據Gthub上給的依賴項 進行安裝

系統環境:

      ubuntu 16.04 LTS   安裝好gcc  g++  cmake    git (這里就不細說了)

安裝依賴庫

(1)安裝Pangolin 

       git  clone https://github.com/stevenlovegrove/Pangolin.gitcd Pangolin 進行下載

安裝依賴:

a、opengl:

b、GLEW:

sudo apt-getinstall libglew-dev

c、Boost:

sudo apt-getinstall libboost-devlibboost-thread-devlibboost-filesystem-dev

d、Python2/Python3:

sudo apt-getinstall libpython2.7-dev

e、編譯基礎庫

sudo apt-getinstall build-essential

安裝Pangolin:

終端里輸入

mkdir build

cd build

sudo cmake ..

sudo make-j(建議不要使用make-j,使用make。如果用make-j是使用多處理器編譯,可能造成死機)

(2)安裝OpenCV

安裝依賴:

a、編譯器相關:

sudo apt-getinstall build-essential

b、必須依賴:

sudo apt-getinstall cmake git libgtk2.0-devpkg-configlibavcodec-devlibavformat-devlibswscale-dev

c、可選安裝:

sudo apt-getinstall python-devpython-numpylibtbb2 libtbb-devlibjpeg-devlibpng-devlibtiff-devlibjasper-devlibdc1394-22-dev

安裝OpenCV:

a、官網下載OpenCV 2.4.11 forLinux下載地址,解壓到Ubuntu中

b、進入OpenCV文件夾,配置工程

mkdirreleasecdreleasecmake -D CMAKE_BUILD_TYPE=RELEASE-D CMAKE_INSTALL_PREFIX=/usr/local ..

c、編譯

makesudomakeinstall

(3)安裝Eigen

下載Eigen下載地址,進入到在解壓后的Eigen文件夾(例如eigen-eigen-07105f7124f9)下

mkdir buildcdbuildcmake ..makesudomake install

(7)安裝BLAS and LAPACK庫

sudo apt-getinstall libblas-dev

sudo apt-getinstall liblapack-dev

   g2o需要BLAS和LAPACK

(1) BLAS: Basic Linear Algebra Subprograms

提供了基本的向量和矩陣操作:

- Level-1 BLAS: 支持 標量、向量、向量-向量 操作

- Level-2 BLAS: 支持 矩陣-向量 操作

- Level-3 BLAS: 支持 矩陣-矩陣 操作

(2) LAPACK:Linear Algebra PACKage

    它調用BLAS來實現更高級的功能,支持以下操作:

- 解線性方程組

    - 線性方程組的最小二乘解

    - 特征值問題和奇異值問題

    - 矩陣分解 (LU, Cholesky, QR, SVD, Schur, generalized Schur)

    - 支持密集和帶狀矩陣,但不支持一般的稀疏矩陣

    - 支持單精度和雙精

 DBoW2 and g2o (Included in Thirdparty folder)

   ORB_SLAM2使用修改版的DBoW2 庫進行位置識別 ,使用 g2o 庫進行非線性優化. 這兩個修改版的庫被放在第三方文件夾內.

總的對於 opencv 和 eigen3,可以簡單的用一行命令來解決:

sudo apt-get install libopencv-dev libeigen3-dev libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2 libcholmod-dev  其中一部分是 g2o 的依賴項,不用太在意它的具體內容。至此,應該可以順利編譯 ORB-SLAM2 了

ORB-SLAM2進行編譯

編譯ORB_SLAM2庫和例子程序(單目、雙目和RGB-D)

cd ORB_SLAM2  

chmod +x build.sh  

 ./build.sh  

    生成的libORB_SLAM2.so位於lib目錄下,可執行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc and stereo_euroc位於Examples目錄下。

Monocular 實例運行

在下載TUM數據集:TUM數據集 下載並解壓一個序列,如:rgbd_dataset_freiburg1_desk1.tgz

然后在ORB-SLAM2目錄下創建一個文件夾 Data 將數據集放置在該文件夾下,並進行解壓。

cd ORB-SLAM2

mkdir  Data

tar  -zxvf   rgbd_dataset_freiburg1_desk.tgz

接下來 在終端輸入

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml Data/rgbd_dataset_freiburg1_desk

完成運行 結果如下:

monocular  測試

RGB-D 測試實例

   按照要求下載數據集,下載的是rgbd_dataset_freiburg2_pioneer_360,將其解壓到你喜歡的目錄.我放在了ORB-SLAM2/Data目錄下面

2.下載associate.py.放在/ORB_SLAM2/Examples/RGB-D/目錄下面.

3.打開終端,進入到associate.py所在目錄,即/ORB_SLAM2/Examples/RGB-D/,之后運行

python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

這里的PATH_TO_SEQUENCE 是指的下載數據集的目錄里面有depth.txt  和 rgb.txt

所以上述的我的輸入:python associate.py ../../Data/rgbd_dataset_freiburg2_pioneer_360/rgb.txt ../../Data/rgbd_dataset_freiburg2_pioneer_360/depth.txt > associations.txt

運行之后在該目錄中將會生成一個associations.txt文件.

4.參照所給鏈接中的第3步,https://github.com/raulmur/ORB_SLAM2,即

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE

PATH_TO_SEQUENCE_FOLDER文件夾即為數據庫所在文件夾,我的是在orbslam2工程下面,

ASSOCIATIONS_FILE即為第3步中生成的associations.txt,給出他的制定目錄位置。

即:./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml Data/rgbd_dataset_freiburg2_pioneer_360 Examples/RGB-D/associations.txt

遇到的問題:

由於我之前安裝的python中沒有numpy模塊 后面在生成associations.txt文件的時候一直報錯,只需要安裝 重新生成就可以了。

sudo apt-getinstall python-devpython-numpy 

運行結果:

RGB-D測試結果

跑自己的數據集測試

自己的數據集,是利用外部攝像頭采集的一系列視頻數據。這些數據需要進行處理,首先將視頻讀取成圖像,再傳給slam進行處理。

這里分別有myvideo.cpp 和 myvideo.yaml文件  需要將他們進入到CMakeListx.txt中。一下是給出的CMakeListx.txt  方案。

在目錄./Examples新建文件夾 myvideo 將myvideo.cpp 和 myvideo.yaml文件放置在該文件夾下。

myvideo.cpp中的一些加載路徑需要修改

接着在終端輸入:

./Examples/myvideo/myvideo Vocabulary/ORBvoc.txt Examples/myvideo/myvideo.yaml Examples/myvideo/myvideo.mp4

運行結果:

CMakeListx.txt 

運行筆記本攝像頭 測試數據

 同理 和運行自己的數據集一樣,添加CMakeListx.txt 方案,和上述一樣,過程也一致


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM