1. 程式人生 > >小強ROS機器人教程(17)___利用ORB_SLAM2建立環境三維模型

小強ROS機器人教程(17)___利用ORB_SLAM2建立環境三維模型

準備工作

在啟動ORB_SLAM2之前,請先確認小強的攝像頭工作正常。
ORB_SLAM2建圖過程中需要移動小車,移動小車過程中ORB_SLAM2的執行狀態不方便顯示(ssh方式比較卡頓,也不可能拖著顯示器),因此請先安裝好小強圖傳遙控windows客戶端。

啟動ORB_SLAM2

更改配置檔案
ORB_SLAM2的配置檔案位於/home/xiaoqiang/Documents/ros/workspace/src/ORB_SLAM2/Examples/ROS/orb_slam2/Data資料夾內。更改setting.yaml其中的LoadMap的值,將其設定為0。當設定為1的時候程式會在啟動後自動從/home/xiaoqiang/slamdb資料夾內載入地圖資料。當設定成0時,就不會載入地圖資料。由於我們是要建立地圖,所以LoadMap要設定為0。
0_1489828772487_4.png
ssh方式進入小強,執行以下指令

ssh -X [email protected]

2017年之前購買使用者,請執行

roslaunch ORB_SLAM2 start.launch

2017年之後購買使用者,請執行

roslaunch orb_slam2 start.launch
0_1489829013495_5.png

開始建立環境三維模型

開啟小強圖傳遙控windows客戶端,點選“未連線“按鈕連線小強。在圖傳視窗右鍵開啟”原始影象“和”ORB_SLAM2的特徵點影象“
0_1489829229351_1.png
0_1489829544143_0.png
上圖中,左側影象是攝像頭原始彩色影象,右側是ORB_SLAM2處理後的黑白影象。當前ORB_SLAM2還沒有初始化成功,所以黑白影象沒有特徵點。
按住”w”鍵開始遙控小強往前緩慢移動,使ORB_SLAM2初始化成功,即黑白影象開始出現紅綠色特徵點
0_1489829731061_2.png
現在就可以開始遙控小強對周圍環境建圖,遙控過程中需要保證黑白影象一直存在紅綠色特徵點,不存在則說明視覺lost了,需要遙控小強退回到上次沒lost的地方找回視覺位置。
客戶端操作演示視訊

使用rviz檢視建圖效果

在本地虛擬機器hosts中新增小強ip地址,然後新開一個終端開啟rviz

export ROS_MASTER_URI=http://xiaoqiang-desktop:11311
rviz
開啟/home/xiaoqiang/Documents/ros/src/ORB_SLAM/Data/rivz.rviz配置檔案
0_1489831624309_6.png
如下圖所示,紅黑色點是建立的三維模型(稀疏特徵點雲),藍色方框是keyframe可以表示小強軌跡
0_1489831763020_7.png

儲存地圖

當地圖建立的範圍滿足自己要求後,在虛擬機器新開一個命令視窗,輸入下列命令儲存地圖

ssh -X [email protected]
rostopic pub /map_save std_msgs/Bool ‘{data: true}’ -r 0.1
這個命令每隔10s觸發1次儲存任務,因此當看到下圖時,請關閉上面的視窗
在虛擬機器新開一個命令視窗,輸入下列命令偵測地圖儲存命令有沒有發出

ssh -X [email protected]
rostopic echo /map_save
0_1489832316715_8.png

地圖檔案會被儲存進使用者主目錄的slamdb資料夾內。

地圖的載入

儲存地圖之後可以再次載入ORB_SLAM2程式中。地圖載入後程序可以非常迅速的定位出攝像頭的具體位置。這樣就可以開發出基於視覺定位的導航演算法了。
載入地圖的方式也非常簡單。將/home/xiaoqiang/Documents/ros/workspace/src/ORB_SLAM2/Examples/ROS/orb_slam2/Data資料夾內的setting.yaml檔案中的LoadMap的值設定為1。

地圖的後期處理

在建立地圖之後,想要使用這個地圖進行導航,還需要對地圖檔案做進一步的操作。比如建立導航的線路,標記導航路徑的行走方式等等。這一部分內容可以參見這篇文章視覺導航路徑編輯器使用教程。