1. 程式人生 > >ORB-SLAM2論文解讀與總結

ORB-SLAM2論文解讀與總結

最近閱讀了Raúl Mur-Artal and Juan D. Tardós寫的ORB_SLAM2論文,並做了一些小結

ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras

本人郵箱地址[email protected],歡迎交流

以下是本人對這篇文章的一些小結,僅供參考。

一 、摘要部分

    ORB_SLAM2是一套基於單目、雙目以及RGB-D的完整方案,可以實現地圖重用、迴環檢測以及重新定位的功能。後端主要採用BA優化方法,內部包含了一個輕量級的定位模型,實現利用VO 追蹤未建圖區域和與地圖點匹配實現零漂移定位。

這篇文章是在單目ORB-SLAM的基礎上提出ORB-SLAM2,主要有以下貢獻:

1. 這是首個基於單目,雙目和RGB-D相機的開源SLAM方案,這個方案包括,迴環檢測,地圖重用和重定位。

2. 結果說明,BA優化比ICP或者光度和深度誤差最小方法的更加精確。

3. 通過匹配遠處和近處的雙目匹配的點和單目觀測,雙目的結果比直接使用雙目系統更加精確。

4. 針對無法建圖的情況,提出了一個輕量級的定位模式 ,能夠更加有效的重用地圖。


二、ORB_SLAM2

1、簡介

    ORB_SLAM2由3+1個平行執行緒組成,包括跟蹤、區域性建圖、迴環檢測以及在迴環檢測後的全域性BA優化。之所以說是3+1,因為第四個執行緒僅在迴環檢測並確認後才執行。

前三個主要並行執行緒:

a、跟蹤:通過尋找對區域性地圖特徵進行匹配,利用純運動BA最小化重投影誤差進行定位每幀圖片的相機;

b、區域性建圖:通過執行區域性BA管理區域性地圖並優化;

c、迴環檢測:檢測大的環並通過執行位姿圖優化更正漂移誤差。這個執行緒觸發第四執行緒;

d、全域性BA:在位姿圖優化之後,計算整個系統最優結構和運動結果。

    該系統運用了基於DBOM2嵌入式位置識別模型進行重定位,來防止跟蹤失敗、或已知地圖場景重初始化、迴環檢測等。系統使用ORB特徵進行追蹤、建圖和位置識別任務,該特徵的優點是具有旋轉不變性和尺度不變性。並且能夠迅速的提取特徵和進行匹配,能夠滿足實時操作的需求,能夠在基於詞袋的位置識別過程中,顯示出良好的精度。

2、單目、近處雙目和遠處雙目特徵點

ORB-SLAM2作為一種基於特徵提取的方法,系統的所有執行都是基於輸入影象的特徵展開,而不依賴於雙目或者RGB-D的相機。系統處理單目或者雙目的特徵點,分成遠處特徵點和近處特徵點兩類。

雙目特徵點 通過三個座標定義(uL,vL,uR),(uL,vL)是左圖的座標,(uR,vL)是右圖座標。對於雙目相機而言,我們提取兩幅影象當中的ORB特徵,對於每個左邊的ORB特徵我們對其匹配到右邊的影象中。由於極線是水平的,所以這對於建設雙目影象校正十分有效。在左邊的影象產生雙目的ORB特徵點,和一條水平的線向右邊的影象進行匹配,通過修補相關性來重新定義亞畫素。對於RGB-D相機在ORB影象通道上提取ORB特徵點,將該點座標作為左圖座標,將深度轉換為虛擬的右圖座標,轉換關係如下式:其中d為深度 ;fx為水平焦距 ; b為結構光投影儀 與水平相機之間的基線。

                                                                        

近雙目特徵點與遠雙目特徵點:

近雙目特徵點的定義是:匹配的深度值小於40倍雙目或者RGB-D的基線,否則的話,是遠特徵點。

近特徵點:能夠由一幀影象直接三角測量化,得到的深度是精確的估計,並且能夠提供尺度,平移和旋轉的資訊。

遠特徵點:僅僅能夠提供精確的旋轉資訊,但是很少的尺度和平移資訊。當提供多檢視的時候,我們才能三角化那些遠的點。

單目的特徵點通過左圖的兩個座標xm=(uL,vL)定義,必須保證所有的ORB特徵是一致的,這些點僅能夠從多檢視中三角測量化並且不能夠提供尺度資訊,但是可以提供旋轉和平移的估計資訊。

使用雙目以及RGBD相機的優點在於:

a、直接獲得深度資訊,而不需像單目一樣需做SFM初始化;

b、系統初始化更方便,首幀即為關鍵幀,且由於知道深度資訊,可以從立體點中直接構建初始化地圖

3、用單目或者雙目進行BA

BA主要用在以下幾個地方:在跟蹤執行緒中使用BA優化相機位姿(純運動BA);優化關鍵幀的本地視窗和區域性建圖執行緒中的點(區域性BA);在閉環檢測後優化所有關鍵幀和點(全域性BA)。

純運動BA優化,優化的是相機的R,t,通過最小化重投影誤差的方法,通過最小化3D點Xi與影象上的關鍵點xi之間的重投影誤差,ρ這裡表示魯棒核函式,魯棒核函式主要作用是平衡誤差不讓二範數誤差增長過快,π(.)類似於相機內參比上一個尺度,將3D轉為2D:

                                      

區域性BA相較於純運動BA,增加了優化該點在地圖中的3D座標,即優化了一些主要的關鍵幀以及關鍵幀中可見的所有點,具體問題描述如下:

                               

其中PL為所有關鍵幀中可觀察到的點; KL關鍵幀中所有的covisible關鍵幀, KF為除KL外的關鍵幀,兩者之集合即為所有關鍵幀; XK為PL中的點與關鍵幀k中的關鍵點匹配後的集合。

全域性BA是區域性BA的特殊形式,即所有得關鍵幀和地圖點都要被優化。

4、迴環檢測和BA優化

迴環檢測:

            迴環檢測主要分兩步:a.迴環資訊的檢測與確認;

                                               b.修正和優化位姿圖。

            單目ORB會出現尺度漂移的問題,而雙目/RGBD可以測得深度資訊,所以尺度已知,所以在幾何校驗與位姿圖優化無需處理尺度漂移的問題,是基於剛體變換而非相似度。

全域性BA:

            在圖優化之後進行全域性BA優化;

            全域性BA是一個獨立的執行緒,這使得允許系統在BA優化的同時進行建圖和迴環檢測環節,但這會影響BA優化與當前地圖 狀態合併,如其他執行緒執行中產生的新的關鍵幀與關鍵點以及在BA過程中迴環檢測執行緒檢測到了新的環等問題。當檢測到新的迴環時,將終止當前的全域性BA優化,因為新的迴環會引發新的迴環檢測,所以把這次的停了也無所謂。

全域性BA優化之後需要將全域性BA優化的關鍵幀和點的子集進行升級,同時與優化時插入的未優化的關鍵幀和點相融合,融合方式:通過生成樹的方式將關鍵幀的更正“規律”延伸至未更新關鍵幀來完成,未更新點根據其參考關鍵幀的校正進行變換。

5、關鍵幀的插入

基本遵循ORB_SLAM方式,即經常插入關鍵幀並移除多餘的關鍵幀。

利用遠近關鍵點設定關鍵幀的插入條件:

因為已知近關鍵點相較於遠關鍵點能夠提供平移資訊,所以需要大量的近關鍵點用於精確估計平移,所以設定插入幀條件為,當跟蹤的近關鍵點小於一定數目或者幀中出現的新的近關鍵點大於一定數目時插入新的關鍵幀。

6、定位模型

該模型適用於地圖輕量級且已知的情況下長期執行。定位過程,區域性建圖與迴環檢測執行緒停止,通過追蹤執行緒進行重定位,通過VO匹配影象與點雲。該方法用於未建圖區域時會造成漂移累計,在已知地圖中利用點雲地圖匹配能夠實現在地圖中的無漂移定位。

ORB-SLAM2貢獻:

這裡寫圖片描述

系統架構:

這裡寫圖片描述