<source : greatway9999>

一、關於 ORB-SLAM2

ORB-SLAM2 是一種可用於單目、雙目、RGB-D 相機的 SLAM 程式庫,可計算相機軌跡和稀疏3D 重建 (在單目與RGB-D的條件下,使用真實世界的尺度)。它能偵測迴路並即時將相機重新定位。開發者為 Raul Mur-ArtalJuan D. TardosJ. M. M. Montiel 和 Dorian Galvez-Lopez 。

二、環境建置實作

(一)、環境

Ubuntu 18.04 + ROS Melodic (安裝教學可參考此篇文章)

(二)、安裝步驟

主要分成兩部份 :
  1. 安裝第三方套件和工具
  2. 安裝 ORB-SLAM2

1.安裝第三方套件和工具

1-1 安裝 C++11 or C++0x Compiler (可略過)

安裝ROS時就安裝了C++11編譯器,故該步驟可略過。

1-2 安裝可視化與操作介面之套件 Pangolin

# 安裝相依套件
$ sudo apt-get install libglew-dev -y
$ sudo apt-get install cmake -y

# 編譯與安裝 Pangolin 
$ curr_dir=`pwd`
$ cd /tmp
$ git clone https://github.com/gaunthan/Pangolin
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ cd "$curr_dir"

實作畫面如下 :




<source : greatway9999>

1-3 安裝 OpenCV

安裝ROS時就安裝了 OpenCV,由於ROS支援Python,因此可安裝OpenCV的Python接口,以便用 Python 調用 OpenCV

sudo apt install python-opencv python3-opencv -y

<source : greatway9999>

1-4 安裝 Eigen3

前往Eigen官網,網路上的ROS大神前輩們建議使用 Eigen 3.3.4 版本,比較穩定。

$ curr_dir=`pwd`
$ cd /tmp
$ wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz
$ tar xzvf 3.3.4.tar.gz
$ cd eigen-eigen-*
$ mkdir build
$ cd build
$ cmake ..
$ sudo make install
$ cd "$curr_dir"

實作畫面如下 :






<source : greatway9999>

1-5 安裝 DBoW2 and g2o (可略過)

由於安裝命令也包含在了ORB-SLAM2的安裝腳本中,因此該步驟可跳過。

DBoW2和g2o的程式已經包含在ORB-SLAM2原始碼下的Thirdparty目錄中。由於ORB-SLAM2對這兩個套件的原始程式進行修改,因此請使用該目錄下的程式進行套件的安裝。

2.安裝 ORB-SLAM2

$ mkdir -p ~/catkin_ws/src
$ cd catkin_ws/src
$ git clone https://github.com/gaunthan/ORB_SLAM2
$ cd ORB_SLAM2/
$ chmod +x build.sh build_ros.sh
$ ./build.sh
$ echo 'export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:'"`pwd`/Examples/ROS" >> ~/.bashrc
$ ./build_ros.sh
$ source ~/.bashrc

依序完成上述指令輸入,完成畫面如下 :

<source : greatway9999>


三、測試實作

(一)、執行 ROS 雙目相機的測試程式

步驟1. 從 EuRoC dataset 下載rosbag (e.g. V1_01_easy.bag) 

步驟2. 啟動 ROS Master

roscore


步驟3. 播放 bag 檔

rosbag play --pause ./V1_01_easy.bag /cam0/image_raw:=/left/image_rect_color /cam1/image_raw:=/right/image_rect_color

只要我們的ROS node訂閱這兩個Topics,就能得到兩張對應左右目相機的圖像幀,從而進行雙目追蹤。執行指令後,Terminal會輸出以下資訊,注意其中的”Paused”字眼。模擬一開始是暫停的,直到空白鍵被按下。


步驟4. 執行 ORB-SLAM2

rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true

ROS程式執行後會載入 Vocabulary檔案和設定檔,並保持等待狀態,直到從Topic(話題)收到圖像資料。


此指令會打開兩個GUI視窗,一個視窗顯示所構建的地圖與相機的姿態,另一個視窗顯示當前幀及檢測的特徵。




回到剛才運行bag模擬的終端視窗,按下空白鍵,可以看到 "Pasued" 變成了 "Running",



此時模擬資料開始發送。回到剛才GUI視窗,就可以看到SLAM系統跑起來了。畫面截圖如下。





Demo 影片



SLAM完成後,可以在 Terminal 看到相關參數與資訊。如下圖。




---
參考資料 :

#SLAM #ORBSLAM2 #Stereo

0 留言