王進祺 高然 董瑞虎 常浩帛 陳熙文
摘要:針對在過往SLAM研究中使用激光雷達傳感器進行實時定位與地圖構(gòu)建的各項缺點,如傳感器成本過高、缺少有效的回環(huán)檢測能力等問題,提出了在Linux系統(tǒng)下搭建基于雙目相機的SLAM系統(tǒng)來改善這些問題。研究采用的SLAM系統(tǒng)是ORB-SLAM系統(tǒng),是一個它比較完整,不僅包含有視覺里程計、跟蹤特性,還具有回環(huán)檢測的功能。
關(guān)鍵詞:雙目相機;ORB-SLAM2;實時定位
同步定位與地圖構(gòu)建在國外已經(jīng)有了三十多年的研究歷史,但國內(nèi)關(guān)于SLAM系統(tǒng)的文獻以及相關(guān)期刊雜志依然很少;并且SLAM的應(yīng)用是隨著時代的進步,越來越需要的,比如無人駕駛的很多交通工具,無論是飛機、汽車亦或是無人機,還是家庭中所廣泛應(yīng)用的的掃地機器人、智能服務(wù)機器人等大多數(shù)都是基于SLAM系統(tǒng)的基礎(chǔ)上研究的??梢允褂玫膫鞲衅饕灿性S多種,直至今日,激光雷達傳感器依然是在市面上應(yīng)用較為廣泛的傳感器,然而激光雷達傳感器的成本依然非常昂貴的,并且使用激光雷達也是非常復(fù)雜的,因此現(xiàn)在越來越多的人開始研究用視覺傳感器來應(yīng)用在此領(lǐng)域中。而ORB-SLAM系統(tǒng)正好是通過雙目相機傳感器來進行研究的一種關(guān)于SLAM的比較完善的系統(tǒng),與激光雷達相比較而言,它不僅結(jié)構(gòu)較為簡單,成本價格也較為低廉。
該系統(tǒng)的軟硬件包含:一臺運行內(nèi)存約8GB的筆記本電腦、一個USB接口的雙目相機、ubuntu16.04及其以上版本的Linux系統(tǒng)和ROS Kenetic軟件平臺。在Linux系統(tǒng)中搭建ROS環(huán)境,在其創(chuàng)建的一個工作空間即src文件下安裝Pangolin、 OpenCV、Eigen3和ORB-SLAM2等四個數(shù)據(jù)庫。Pangolin被用作可視化以及用戶的界面,OpenCV是有著很多的開源算法的一種圖像處理的算法庫,其安裝是為了后期對圖像進行處理、Eigen3是各種矢量運算和各種矩陣的數(shù)據(jù)庫。
該雙目相機的SLAM系統(tǒng)的原理分為五個模塊,五個模塊各有分工而又為下一模塊的進行做好了鋪墊:
第一步:讀取視覺傳感器即雙目相機所掃描到的信息,主要讀取并預(yù)處理雙目相機的圖像信息。若在機器人上,會有其他信息如關(guān)于慣性傳感器、碼盤等信息被讀取。這是對雙目相機的數(shù)據(jù)的讀取。
第二步:通過視覺里程計估算毗鄰的圖像之間雙目相機的移動和被掃描到的局部地圖的大致樣子等信息。這即是視覺里程計的工作。
第三步:在視覺里程計的后端進行對視覺里程計測量到的雙目相機的位姿信息和經(jīng)過回環(huán)檢測的信息進行一系列的非線性優(yōu)化,就會收到全局移動的軌跡和大致地圖。
第四步:將通過回環(huán)檢測得到的相機的移動軌跡反饋給視覺里程計的后端,再由視覺里程計的后端進行處理。若在此處未能檢測到相應(yīng)的軌跡信息,則不會進行信息的反饋,從而直接進入第五步。
第五步:相應(yīng)的地圖將會被通過一系列讀取、預(yù)處理、并進行優(yōu)化后,將其構(gòu)建出來。
其中設(shè)計非線性優(yōu)化和回環(huán)檢測兩個環(huán)節(jié)是為了解決視覺里程計工作時的漂移問題,該系統(tǒng)的運行原理圖如下圖1所示:
設(shè)計該系統(tǒng)時,大致分為四步,總體設(shè)計流程圖如圖2所示
搭建ROS平臺:首先更新Ubuntu系統(tǒng)的軟件列表,然后下載安裝git,其從Github上將項目克隆至本地,接著通過Cmake的安裝進行程序的編譯,安裝與Ubuntu16.04對應(yīng)的軟件ROS Kenetic ,最后搭建ROS平臺,用于對ORB-SLAM2系統(tǒng)的在線實時運行。
各種依賴項的安裝測試:ROS安裝成功后,創(chuàng)建一個工作空間,后續(xù)工作均在此工作空間內(nèi)完成,在剛剛建立好的工作空間下安裝各種依賴項,如Pangolin、 OpenCV、Eigen3和ORB-SLAM2四個數(shù)據(jù)庫,安裝ORB-SLAM2之前,還需要安裝一個索引圖像的C++數(shù)據(jù)庫DBoW2以及一個基于C++算法的框架g2o,它們的編譯與ORB-SLAM2統(tǒng)一編譯的,這里很重要的一點,每次在GitHub上克隆相應(yīng)項目后都會測試其是否被成功地安裝上去。
數(shù)據(jù)集單目例子的測試:接下來就是對該系統(tǒng)進行測定,測試分單目的例子和ROS例子兩方面進行,單目例子即首先在網(wǎng)上下載TUM數(shù)據(jù)集進行測試,先下載TUM的數(shù)據(jù)集,解壓到本地以后,打開終端,輸入相關(guān)命令,這時還需要將命令中帶有的數(shù)據(jù)集名稱的類型做相應(yīng)的修改,測試結(jié)果圖如圖3中a所示,
連接雙目相機后的實時測試:ROS例子即將雙目相機通過USB接口接入電腦,更改ORB-SLAM2訂閱的話題,即修改ORB-SLAM2項目的源代碼,使ORB-SLAM2訂閱的話題其與雙目相機usb_cam節(jié)點發(fā)出的話題相一致,然后打開ROS核,啟動雙目相機的節(jié)點,再運行ORB-SLAM2,結(jié)果如圖3中的b所示。Map Viewer中紅色點表示的是追蹤捕捉到的特征點,藍色方框的軌跡是裝置移動的路徑,Current Frank中掃描的綠色小方框是啟用雙目相機的節(jié)點后追蹤捕捉到的特征點。
本文介紹了關(guān)于雙目相機SLAM系統(tǒng)設(shè)計的基本組成、基本原理和該系統(tǒng)搭建的基本過程和實驗結(jié)果。研究的目的是解決激光雷達傳感器價格較為昂貴的問題,從而引進了視覺傳感器即雙目相機的使用,基于ORB-SLAM2算法在Linux系統(tǒng)下搭建了此SLAM系統(tǒng),并通過實驗驗證了該系統(tǒng)的可實施性,該系統(tǒng)可以通過雙目相機實時采集到數(shù)據(jù),然后將得到的圖像信息經(jīng)過一系列處理后傳遞給PC端。該系統(tǒng)說明采用價格低廉的雙目相機被用來替代激光雷達傳感器的不足,且ORB-SLAM2系統(tǒng)的回環(huán)檢測是其特有的,回環(huán)檢測環(huán)節(jié)可以極大的減小建圖過程中所產(chǎn)生的誤差。該研究完成了該系統(tǒng)的設(shè)計進而驗證了系統(tǒng)的可行性。
參考文獻:
[1]沈燕芬,張小紅,朱鋒.ORB-SLAM2車載雙目視覺的自主導(dǎo)航性能評估[J].導(dǎo)航定位學(xué)報,2018,6(02):29-35.
[2]陸建偉,王耀力.基于ORB-SLAM2的實時網(wǎng)格地圖構(gòu)建[J].計算機應(yīng)用研究,2019,36(10):3124-3127+3131.
[3]侯榮波,魏武,黃婷,鄧超鋒.基于ORB-SLAM的室內(nèi)機器人定位和三維稠密地圖構(gòu)建[J].計算機應(yīng)用,2017,37(05):1439-1444.