ORB-SLAM2的編譯運行以及TUM數(shù)據(jù)集測試

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

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

前期準備

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

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

系統(tǒng)環(huán)境:

????? 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、官網(wǎng)下載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

? ? 它調(diào)用BLAS來實現(xiàn)更高級的功能,支持以下操作:

- 解線性方程組

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

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

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

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

? ??- 支持單精度和雙精

?DBoW2 and g2o (Included in Thirdparty folder)

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

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

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

ORB-SLAM2進行編譯

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

cd?ORB_SLAM2??

chmod?+x?build.sh??

?./build.sh??

? ? 生成的libORB_SLAM2.so位于lib目錄下,可執(zhí)行程序mono_tum, mono_kitti, rgbd_tum, stereo_kitti,?mono_euroc and stereo_euroc位于Examples目錄下。

Monocular 實例運行

在下載TUM數(shù)據(jù)集:TUM數(shù)據(jù)集 下載并解壓一個序列,如:rgbd_dataset_freiburg1_desk1.tgz

然后在ORB-SLAM2目錄下創(chuàng)建一個文件夾 Data 將數(shù)據(jù)集放置在該文件夾下,并進行解壓。

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 測試實例

?? 按照要求下載數(shù)據(jù)集,下載的是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 是指的下載數(shù)據(jù)集的目錄里面有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文件夾即為數(shù)據(jù)庫所在文件夾,我的是在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測試結果

跑自己的數(shù)據(jù)集測試

自己的數(shù)據(jù)集,是利用外部攝像頭采集的一系列視頻數(shù)據(jù)。這些數(shù)據(jù)需要進行處理,首先將視頻讀取成圖像,再傳給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?

運行筆記本攝像頭 測試數(shù)據(jù)

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

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容