ORB-SLAM-Mono論文要點總結(一)——系統概述

ORB-SLAM論文要點總結

一種基於特徵識別的通用且精確單目SLAM系統

一、簡介

文章基於PTAM的主要思想、Place recognition、scale-aware loop closing和大場景共視圖設計ORB單目SLAM系統。

創新點:

  1. 所有任務均使用相同的特徵(ORB):追蹤,建圖,重定位和迴環檢測。這使得系統更高效、簡單和可靠;
  2. 在大環境可實時運行。基於共視圖可聚焦於局部共視區域進行跟蹤和建圖;
  3. 基於文章所稱Essential Graph的位姿圖優化進行實時的閉環。其通過旋轉樹、迴路閉合連接、共視圖的強邊建立;
  4. 實時的相機重定位對可視點和光照具有不變性。跟蹤丟失時可基於此恢復,也能增強地圖的複用;
  5. 基於所選模型提出一種新的自動且魯棒的初始化過程,可建立一個初始平面地圖和非平面場景地圖;
  6. 一個最優的方法進行地圖點和關鍵幀的篩選,其可提高跟蹤的魯棒性,增強系統長期的可工作性。

二、相關工作

A 位置識別

論文13認爲圖像到圖像的匹配,在大環境下,比地圖到地圖或者圖像到地圖的方法尺度性更好。論文5第一次使用詞袋,其可基於BRIEF描述子和FAST特徵檢測得到。儘管系統運行效率和魯棒性比較高,但是由於BRIEF不具有旋轉不變性和尺度不變性,所以系統只能在平坦軌跡中運行,且迴環檢測只能在相似視角中進行。文章重新基於共視圖對位置識別方面進行了改進,且檢索數據庫後返回幾個假設而不是像之前一樣返回最優結果。

B 地圖初始化

  • 跟蹤初始已知圖像結構;
  • 採用逆深度參數化後的點聚集到真實點;
  • 基於雙視角的初始化(本文中採用)。

C 單目SLAM

  • 濾波法

每幀圖像都被濾波然後去估計地圖點位置和相機位姿。其處理含有極少有用信息的連續幀時浪費資源,且模型的線性化誤差會累積。

  • 關鍵幀+優化

只使用所選擇的關鍵幀進行建圖,可採用多餘的資源進行BA優化,建圖不與幀速率綁定。在相同的計算資源下,優化方法比濾波方法精度更高。

最具代表性的基於關鍵幀的SLAM是PTAM。其是第一個介紹將跟蹤和建圖分割開,並在並行的線程裏進行並在小環境增強現實中成功驗證的系統。地圖點與局部校正匹配的FAST角點一致,這使得這些點只用於跟蹤而不能用於位置識別(?)。而且,PTAM不檢測大的迴路,其重定位只是基於關鍵幀縮略圖進行校正,此是爲了屈從可視點的低不變性。

論文6提出了一個大尺度的單目SLAM系統,其前端基於GPU上的光流法實現,以及FAST特徵點匹配和只有運動的BA優化,後端採用相似約束下的位姿圖優化(7DOF),此能夠校正單目的尺度漂移。本文在Essential Graph中借鑑了7-DOF優化的思想。

論文7採用PTAM的前端,但是隻在基於共視圖恢復出的局部地圖中進行跟蹤。其提出一種雙窗口優化後端,小窗連續進行BA,大窗口進行位姿圖優化。但是,只有當外窗口能夠包含迴路時纔可進行有效的迴路閉合。本文借鑑了基於共視圖構建局部地圖和位姿圖的思路,並將其應用在了重新設計的前端和後端中。本文另一個不同之處是未使用具體的特徵點進行迴環檢測(SURF),而是在相同的跟蹤和建圖特徵點進行位置識別,得到了一個圖像幀速率級別的重定位和迴環檢測。

論文33提出的CD-SLAM,是一個完整的SLAM系統,包含迴環、重定位、大尺度工作、適配動態環境。但是,地圖初始化未提及。

論文34使用ORB特徵進行跟蹤,滑動窗口進行BA後端優化。但是未包含全局重定位、迴環,也沒有複用地圖。該系統也使用相機和地面間的已知距離去限制單目尺度漂移。

論文25在我們提交草稿時剛出版,同樣使用ORB進行跟蹤、建圖、以及迴環檢測。但是選擇的BRIEF(不具備旋轉不變性,存在旋轉時匹配會錯誤)描述子限制只能在平坦軌跡運動。該系統只跟蹤上之前關鍵幀的特徵點,因此再訪問的時候不會複用地圖,且存在增長無邊界的問題。在VIII-E部分和本文進行了對比。

論文10是LSD-SLAM,其能夠建立大尺度半稠密地圖,使用直接法(比如直接基於像素強度進行優化)而不是基於特徵點的BA。該方法令人印象深刻之處在於其能夠實時工作,且不使用GPU加速,可建立半稠密地圖,比基於特徵點的SLAM建立的稀疏地圖更適合於機器人。然而,該方法仍然需要特徵進行迴環檢測,他們相機的定位精度明顯低於本文的系統和PTAM,可見VIII-B。該傑出的方法在IX-B中也進行了討論。

論文22是SVO,介於直接法和基於特徵的方法間的半直接法。不要求每幀圖片都提取特徵點,其在四旋翼上可以基於較高的幀速率得到較爲滿意的結果。但是,不包含迴環檢測,當前的實現主要基於俯瞰相機。

最後,幾乎所有較爲前沿的視覺SLAM工作都認爲在所有圖像幀運行所有特徵點的BA是不可行的。論文32表明最有效率的方法是在只保持必要關鍵幀的同時,保留儘可能多的特徵點。PTAM在插入關鍵幀時就非常小心,爲了避免計算複雜度的快速增長。這種較爲嚴苛的關鍵幀插入策略在未知且複雜的環境中容易導致跟蹤失敗。本文作者提出的適者生存策略,在困難複雜場景下通過儘可能快速的插入關鍵幀實現空前的魯棒性,然後移除過去時刻多餘的關鍵幀去避免額外的資源消耗。

三、系統概覽

A 特徵選擇

本文系統設計的主要思想是:爲了進行圖像幀速率級的重定位和迴環檢測,建圖和跟蹤使用的相同的特徵點同時被用來進行位置識別。此可令系統更加高效,避免如之前工作[6,7]中插入基於附近SLAM特徵點識別的特徵點深度。本系統要求每張圖像的特徵提取時間不超過33ms,基於此可排除約300ms的SIFT,約200ms的SURF, 約100ms的A-KAZE。爲了可進行位置識別,系統要求旋轉不變性,此排除了BRIEF和LDB描述子。

本文選擇ORB,其是旋轉多尺度Fast角點檢測的256位描述子。對於可視點不僅具有不變性,而且可以很快的進行計算和匹配。這使得在寬基線下可進行匹配,並提高BA的精度。在位置識別中,ORB也表現出了良好的性能[11]。儘管我們使用的是ORB,但是本文提出的技術方案不對特徵點的提取和描述子進行限制。

B 三個線程:跟蹤、局部建圖和迴環

系統如上所示,同步運行三個線程:跟蹤,局部建圖,和迴環。
在這裏插入圖片描述
跟蹤線程負責相機每幀圖像的定位,以及決定何時插入一個新的關鍵幀。系統首先進行與上一幀圖像的初始特徵點匹配,然後使用只運動的BA優化位姿。若跟蹤丟失(比如:堵塞和劇烈移動),則位置識別模塊進行全局重定位。一旦完成相機位姿的初始估計和特徵點匹配,則基於系統維持的關鍵幀得到的共視圖可建立一個局部的可視地圖。接着,基於重投影搜索局部地圖路標點的匹配,而且基於所有的匹配可再次優化相機的位姿。最後,跟蹤線程決定是否新的關鍵幀需要被插入。在第V部分詳細介紹了跟蹤步驟。創建初始地圖的新方法在第IV部分進行介紹。

局部建圖線程處理新的關鍵幀,並進行局部BA實現相機位姿環境的最優重建。在共視圖連接的關鍵幀中搜索新關鍵幀裏未匹配ORB特徵的新對應關係,然後基於此三角化新的路標點。建立新的路標點後,基於跟蹤過程中收集的信息,應用一個篩選策略去保持高質量的路標點。此局部地圖也負責篩選多餘的關鍵幀。在第VI部分中詳細介紹所有的局部地圖步驟。
迴環線程在對每個新的關鍵幀均進行迴路搜索。若一個迴路被檢測到,則計算迴路裏表示累計漂移的相似變換。接着,對齊迴路兩邊,而且融合重複點。最後,基於相似性約束進行位姿圖優化,以實現全局一致性。主要創新之處在於基於Essential Graph的優化,這是一個共視圖的稀疏子圖,在第III-D進行詳細介紹。迴路檢測和校正步驟在第VII詳細說明。

作者使用g2o中的L-M算法進行所有的優化。在附錄裏,作者列出了誤差項,代價函數,以及每個優化過程涉及的變量。

C 路標點, 關鍵幀,及其他部分

每個路標點pip_i都按照下面格式存儲:

  1. 路標點在世界座標系下的3-D位置座標Xω,iX_{\omega,i}
  2. 視線方向向量nin_i,其是所有視線方向向量的平均單位向量(射線連接路標點和觀測它的關鍵幀光心);
  3. 代表ORB描述子的向量DiD_i,其是相對可視關鍵幀裏的其他所有相關描述子漢明距離最小的ORB描述子;
  4. 根據ORB特徵的尺度不變性約束,可觀測路標點最大距離dmaxd_{max}和最小距離dmind_{min};

每個關鍵幀KiK_i存儲下面信息:

  1. 相機位姿矩陣TiwT_{iw},表示世界繫到相機系的變換;
  2. 相機內參,包括焦距和主點座標;
  3. 關鍵幀裏提取的所有ORB特徵,不管與路標點是否關聯。若提供了相機的畸變模型,則ORB特徵的座標是無畸變的。

路標點和關鍵幀的創建過程較爲寬鬆,與此同時一個較爲亟需的篩選策略負責檢測冗餘的關鍵幀、錯誤的匹配以及未跟蹤到的路標點。儘管長期工作時對同一環境的持續訪問下地圖的大小是有限的,但是這使得探索過程中的地圖擴展更加靈活,且能夠促進惡劣環境(比如:旋轉和快速移動)下的跟蹤魯棒性。此外,本文的地圖與PTAM相比,由於包含的路標點更少,所以地圖包含的外點也很少。路標點和關鍵幀的篩選步驟在第VI-B和VI-E中詳細敘述。

D 共視圖和重要圖

如論文[7]中的間接權重圖,關鍵幀間的共視信息對於系統中的幾個任務都非常有用。每個節點都是一個關鍵幀,若兩個關鍵幀存在共享的路標點超過15個,則兩幀間存在一條邊,令該邊上的共視路標點數量爲邊的權重θ\theta

爲了對一個迴路進行校正,需要進行位姿圖優化,將回路閉合的誤差沿着圖分散。爲了不包含共視圖提供的可能非常稠密的所有邊,作者建立了一個保持所有節點(關鍵幀),但是包含更少的邊,同時爲了保持精度仍舊保留了一個較強的網絡的重要圖(Essential Graph)。該系統增量式的建立起始於初始關鍵幀的旋轉樹,其提供了一個連接起來的包含最少數量邊共視圖的子圖。當一個新的關鍵幀插入時,其被包含於旋轉樹中,並和與其共享觀測的路標點數量最多的幀相連接。當關鍵幀被篩選策略刪除時,同時系統更新受此關鍵幀影響的連接。重要圖包含旋轉樹,源於高共視的共視圖邊子序列(θmin\theta_{min}=100),迴路閉合邊,一起組成了一個相機的強大網絡。共視圖、旋轉樹和連接的重要圖如下所示。
在這裏插入圖片描述
如第VIII-E中的實驗所見,進行此重要位姿圖優化時,結果要好於額外只做全局BA優化提升的結果精度。重要圖的效率和權重θmin\theta_{min}的影響見第VIII-E的末尾。
實驗中結果表明:

  • 全局BA優化收斂慢,迭代100次後的精度依然較差;
  • 重要圖優化收斂速度快,且精度更高;
  • 共視路標點數量/權重θmin\theta_{min}增大對結果的精度影響不大,但是減小了邊的數量,有助於減小耗費的時間;
  • 在位姿圖優化之後再進行一次額外的BA可稍微提高結果精度,當然也會耗費了些資源和時間。
    在這裏插入圖片描述

E 詞袋位置識別

系統包含一個基於DBoW2的詞袋位置識別模塊,進行迴環檢測和重定位。視覺單詞就是描述子空間的離散,也就是視覺詞典。該詞典基於大量圖像中的ORB描述子離線創建。如果圖像足夠多,相同的詞典可以在不同環境中使用,並可以得到較好的性能[11]。系統建立的視覺詞典中的單詞數據庫隨着可視關鍵幀的增加而增加,因此數據庫查詢效率比較高。篩選步驟中剔除關鍵幀時同時對數據庫進行更新。

在數據庫查詢時,由於在關鍵幀間存在視覺重疊部分,因此不存在一個評分很高的單獨關鍵幀。原始的DBoW2將重疊考慮在內了,其會將短期閉合的圖像的評分加起來?。這不包括哪些不同時間插入的同一位置的可視關鍵幀。相反,將哪些在共視圖裏連接的關鍵幀分組。另外,數據庫返回評分高於75%最好評分的所有關鍵幀匹配。

另一個對特徵匹配基於詞袋進行表示的優點見論文[5]。當需要對兩組ORB特徵的間的對應性進行計算時,可以將暴力匹配約束在那些在一個確定的水平(選擇2/6?)上詞典樹裏的相同節點的那些特徵,從而提高搜索速度。在三角化新點搜索匹配點、迴環檢測和重定位時,使用該策略。也可以基於方位一致性改進對應性(細節見[11]),這能夠剔除外點並保證所有匹配對應位置的連續選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章