Abstract
ORB-SLAM2 适用于單目,雙目和RGB-D相機,包括閉環、重定位等功能,可用于室内環境、工業環境、飛行的無人機、行駛的汽車等
Introduction
單目相機:
無法觀察到深度資訊,是以地圖的比例和估計的軌迹是未知的。并且 system bootstrapping 需要多視圖或過濾技術來生成初始地圖(無法從第一幀開始triangulation)。另外,單目SLAM可能會發生 scale drift,而且過程中進行純旋轉可能會估計失敗。
這些問題可以通過使用雙目或RGB-D錄影機解決。
ORB-SLAM貢獻:
- 加了雙目和RGB-D相機
- 使用BA優化,比ICP、光度法精度更高
- 分為遠近立體點使單目精度更高
- 推出了一個輕量級的模式
雙目相機,KITTI資料集上運作結果:
軌迹+稀疏的二維的重構
具有多個回環的城市地圖
RGB-D,TUM RGB-D資料集:
具有一個循環閉合的房間場景的關鍵幀和密集點雲。
通過估計關鍵幀位姿,反投影傳感器深度圖來繪制密集點雲。
Related Work
A. Stereo SLAM
早期的 stereo SLAM主要是 EKF-SLAM,當時它能在更大的環境中運作。 将圖像分為近點和遠點(由于立體相機中的視差很小而無法可靠估計深度的點):對遠點使用 inverse depth parametrization,對近點(點的深度小于立體基線的約40倍),則可以比較可靠地進行triangular
現在大多數立體聲SLAM系統都是基于關鍵幀,并在局部區域執行BA優化:
Strasdat等人對關鍵幀的内部視窗中的BA(點-姿勢限制)和外部視窗中的姿态圖(姿勢-姿勢限制)進行了聯合優化,通過限制這些視窗的大小,該方法實作了恒定的時間複雜度,但代價是無法保證全局一緻性。
Meietal的RSLAM利用landmarks和姿勢的相對表示,并在活動區域中執行BA,該活動區域可以受到恒定時間的限制。 RSLAM能夠閉合循環,進而可以在循環的兩側擴充活動區域,但不會強制實作全局一緻性。
最近 Pire等人的S-PTAM,執行局部BA,但是它缺少大的回環。
ORB-SLAM2在局部關鍵幀執行BA,是以複雜性與地圖大小無關,并且我們可以在大型環境中運作。 我們的目标是建構全局一緻的地圖,當回環時,我們的系統會像RSLAM一樣首先對齊兩側,以便跟蹤能夠使用舊地圖繼續進行定位,然後執行姿态圖優化以最大程度地減少循環中累積的漂移,然後進行全局BA 。
最近Engel等人的雙目LSD-SLAM是一種半稠密的直接法(不提取特征,對整張圖檔的像素點做差),可将具有高梯度的圖像區域中的光度誤差降至最低。 由于不依賴特征,是以該方法有望在運動模糊或紋理較差的環境中更強大。 但是,作為直接法,其性能會因如卷簾快門或非朗伯反射率等因素嚴重降低。
B. RGB-D SLAM
Newcombe等人的KinectFusion是最早,最著名的RGB-D SLAM系統之一。該方法将來自傳感器的所有深度資料融合到一個立體的密集的模型中,該模型用于使用ICP跟蹤相機姿态。 由于其體積表示的問題和缺少回環,該系統僅限于小型工作區。
Whelan等人的Kintinuous能夠通過使用滾動的循環緩沖區在大型環境中運作,并且包括使用位置識别和pose-graph優化的回環。
第一個流行的開源系統是Endres等人的RGB-D SLAM:它是一個基于feature的系統,其前端通過特征比對和ICP計算幀間運動。 後端利用回環限制條件執行姿态圖優化。
同樣,Kerl等人的DVO-SLAM後端優化了一個姿态圖,用視覺裡程計計算出關鍵幀到關鍵幀的限制,進而将光度和深度誤差最小化。 DVO-SLAM還可以在所有以前的幀中以搜尋回環候選,而不是依賴于位置識别。
最近Whelan等人的ElasticFusion建構了面片的環境地圖。 這是一種以地圖為中心的方法,該方法會丢棄姿勢,并執行閉環操作,将非剛性變形應用于地圖,而不是标準pose-graph優化。 該系統的詳細重建和定位精度很強,但是目前的實作方式僅限于房間大小的地圖,因為複雜度随地圖中的點數量而縮放。
正如上述提出的那樣,我們的ORB-SLAM2使用深度資訊來合成立體的坐标,以提取圖像上的特征。 這樣,我們的系統就可以确定輸入是雙目還是RGB-D。 與上述所有方法不同,我們的後端基于BA,并建構了全局一緻的稀疏的重建。 是以,我們的方法是輕量級的。 我們的目标是長期和全局一緻的定位,而不是建構最詳細的密集重構。 但是,從高度準确的關鍵幀姿勢中,可以融合深度圖進行準确的即時的局部重構,也可以在完整BA之後對所有關鍵幀的深度圖進行處理,進而獲得整個場景的準确3D模型。
ORB-SLAM2
三個主要的并行線程:
- 通過查找與本地地圖比對的特征并應用BA來最大程度地減少重新投影誤差的跟蹤,以每幀定位錄影機
- 局部建圖并對其進行優化,執行局部BA
- 閉合回路以檢測大的回路并通過執行pose-graph優化來糾正累積的漂移。 該線程在pose-graph優化後啟動第四個線程以執行完整的BA,以計算最佳的解。
系統已嵌入基于DBoW2(DBow2算法主要用于重定位或者稱作閉環檢測)的位置識别子產品,用于在跟蹤失敗(例如遮擋)或在已建圖的場景中重新初始化的情況下進行重新定位,以及進行回環檢測。
系統維護一個圖(節點和連線),該圖連結具有共同點的兩個關鍵幀和連接配接所有關鍵幀的最小生成樹(生成樹是将原圖的全部頂點以最少的邊連通的子圖,權值總和最小的生成樹則稱為圖的最小生成樹)。 這些圖結構允許檢索關鍵幀的局部視窗,以便跟蹤和局部建圖,進而允許在大型環境中工作,并用作回環時執行的pose-graph優化的結構
系統依舊使用ORB特征進行跟蹤,映射和位置識别任務。這些特征對于旋轉和尺度具有魯棒性,并為相機的自動增益和自動曝光以及照明變化提供了良好的穩定性。 此外,它們快速提取和比對以實作實時操作,并在詞袋位置識别中顯示出良好的精度/召回性能
A. Monocular, Close Stereo and Far Stereo Keypoints
ORB-SLAM2作為基于特征的方法,會對輸入進行預處理,以在顯着的關鍵點位置提取特征。 然後丢棄輸入圖像,并且所有系統操作都基于這些功能,是以系統獨立于雙目或RGB-D傳感器。 我們的系統處理單目和雙目關鍵點,它們進一步分為近距離或遠距離。
Stereo keypoints
由三個坐标xs =(uL,vL,uR)定義,分别是左圖像上的坐标(uL,vL)和右圖像上的水準坐标uR。
對于雙目相機,我們在兩個圖像中都提取ORB,對于每個左ORB,我們都在右圖像中搜尋比對項。然後,我們使用左側ORB的坐标和右側比對的水準坐标生成 stereo keypoint。
對于RGB-D相機,我們在RGB圖像上提取ORB特征,并且對于具有坐标(uL,vL)的每個特征,我們将其深度值d轉換為虛拟右坐标:uR = uL − fx * b/d(fx是水準焦距,b是相機和紅外錄影機之間的基線)
深度傳感器的不确定性由虛拟右坐标的不确定性表示。雙目和RGB-D的特征點被系統的其餘部分平等地處理
如果Stereo keypoints的深度小于baseline的40倍,則将其分類為close,否則,将其分類為far。
Close keypoints 可以進行 triangulate,精确地估計深度,并提供scale, translation 和 rotation資訊。
far keypoints可以提供準确的 rotation資訊,但scale,和translation較弱。 當遠點被多個視圖觀測到時,對其進行三角測量。
Monocular keypoints
Monocular keypoints由左側圖像上的兩個坐标xm =(uL,vL)定義。 這些點僅從多個視圖進行了triangular,并且不提供scale資訊,但是有助于旋轉和平移估計。
B. System Bootstrapping
Bootstrapping:推論統計學(從樣本統計量 推算 總體統計量)下面的一種方法,利用有限的樣本重複多次抽樣擷取新樣本
使用立體聲或RGB-D錄影機的主要好處之一隻要一幀就可以擷取深度資訊,我們就不需要像單目那樣通過SfM擷取深度資訊。 在系統啟動時,我們用第一幀建立關鍵幀,将其pose設定為原點,并從所有stereo keypoints建立初始地圖。
C. Bundle Adjustment with Monocular and Stereo Constraints
系統執行BA來優化跟蹤線程中的相機pose(motion-only BA),優化關鍵幀中的局部視窗和局部建圖線程中的點(局部BA),并且回環檢測之後優化所有關鍵幀和點(full BA)。我們使用在g2o中的LM。
motion-only BA
Motion-only BA優化了相機orientation R ∈SO(3) 和position t ∈ R3,最小化世界坐标系中比對的3D點Xi∈R3與keypoints xi之間的重投影誤差(monocular xi ∈ R2 or stereo xi ∈ R3)
ρ 是 cost function , 投影函數π
monocular:πm , stereo:πs
(fx,fy)是焦距,(cx,cy)是中心點,b是baseline
Local BA
KL:可視的 keyframes
KF:其它的 keyframes
j:比對點集合
Full BA
完全BA是局部BA的特定情況,将優化的範圍擴大到地圖中的所有關鍵幀和點(原始關鍵幀除外)
其中對地圖中的所有關鍵幀和點進行了優化,但固定為消除量規自由度的原始關鍵幀除外
D. Loop Closing and Full B
閉環的執行分為兩個步驟:
- 檢測并驗證一個環路
- 通過優化pose-graph來校正循環
單目的ORB-SLAM可能發生尺度的漂移,與單目不同的是立體/深度資訊使尺度已知,并且幾何驗證和pose-graph優化不再需要處理尺度的漂移(基于剛體變換)。
在ORB-SLAM2中,我們在pose-graph之後進行了full BA優化,以實作最佳解決方案。這種優化的成本可能很高,是以我們在單獨的線程中執行該優化,進而使系統能夠繼續建圖并檢測回環。但是,這帶來了将BA輸出與地圖的目前狀态合并的挑戰。 如果在優化運作時檢測到新的循環,将中止優化并繼續進行回環,這将再次啟動full BA優化。full BA完成後,我們需要将更新後的關鍵幀和關鍵點子集(full BA後的)與未更新的關鍵幀和點合并在一起,這些關鍵點和點将在優化運作時插入,通過生成樹将更新的關鍵幀的校正傳播到未更新的關鍵幀(即從未優化的pose轉換為優化的pose), 未更新的點根據參考關鍵幀的校正進行變換
E. Keyframe Insertion
ORB-SLAM2遵循單目ORB-SLAM中引入的政策:非常頻繁地插入關鍵幀,然後剔除多餘的關鍵幀。 close stereo points 和 far stereo points之間的差別使我們能夠為關鍵幀插入引入新條件,因為場景中大部分場景都遠離雙目傳感器(如下圖),是以這在具有挑戰性的環境中至關重要。
KITTI 01中的跟蹤點。 綠點的深度小于baseline的40倍,而藍點的距離更遠。 在這種序列中,重要的是要足夠頻繁地插入關鍵幀,以使close points的數量能夠進行準确的translation估計。far points有助于估計orientation,但translation和scale資訊很少:
我們需要有足夠數量的close points來準确估計平移,是以,如果跟蹤的閉合點的數量降至τt以下,并且幀可以建立至少τc個新的close stereo points,則系統将插入一個新的關鍵幀。在所有實驗中都發現τt= 100和τc= 70效果很好。
F. Localization Mode
ORB-SLAM融合了一個定位模型,隻要環境沒有明顯變化,該模型就可用于在地圖良好的區域進行輕量級的長期定位。
在這種模式下,局部定位和回環的線程被停用,并且根據需要用重定位來連續定位錄影機。
在此模式下,tracking利用視覺裡程計比對來比對到地圖點。
視覺裡程計比對是目前幀中的ORB與根據深度資訊在前一幀中建立的3D點之間的比對。 這些比對使定位在未建圖區域具有魯棒性,但是會累積漂移。 地圖點比對可確定對現有地圖進行無漂移的定位。
Evaluation
對三個流行的資料集中的ORB-SLAM2進行評估,并将其與其他最新的SLAM系統進行比較, 為了考慮多線程系統的不确定性,每個序列運作5次,并顯示中值結果以估計軌迹的準确性:
A. KITTI Dataset
KITTI資料集包含在城市和高速公路環境中從汽車記錄的雙目的序列。雙目傳感器的baseline約為54厘米,在10Hz下工作,校正後的分辨率為1240×376。 序列00、02、05、06、07和09包含回環。 我們的ORB-SLAM2可以檢測到所有回環,并且以後可以重用其地圖。 下表顯示了11個訓練序列的結果,與最先進的雙目LSD-SLAM(雙目SLAM唯一顯示了所有序列詳細結果)相比較,使用兩個不同的度量。
trel:relative translation
rrel:relative orientation
tabs:absolute translation
在大多數序列中,我們的系統均優于stereo LSD-SLAM,并且總體而言,相對誤差低于1%。 序列01(上圖)是訓練集中唯一的高速公路序列,平移誤差稍差一些。 由于高運動速和低幀速,很難跟蹤到幾乎所有的close points,是以很難估計Translation。 但是,由于可以跟蹤許多遠點,是以可以準确估計orientation,每100米實作0.21的誤差。
KITTI 00、01、05和07:
估計的軌迹:黑色
ground-truth:紅色
與ORB-SLAM1中的單目結果相比,ORB-SLAM2雙目的部分能夠處理單目失敗的序列01。 在高速公路序列中,僅需要幾幀就能看到close points。
stereo部分能夠用一個關鍵幀建立點,而不是像單目一樣比對兩個關鍵幀(延遲初始化),在此序列中很重要,它不會丢失跟蹤。
單目系統以metric scale估計地圖和軌迹,不會受到尺度漂移
估計的軌迹:黑色
ground-truth:紅色
Left: monocular ORB-SLAM 1
right: ORB-SLAM2 (stereo).
單目ORB-SLAM有嚴重的尺度漂移,尤其是轉彎時。 相反,提出的stereo系統能夠估計軌迹和地圖的真實比例,而不會發生尺度漂移
B. EuRoC Dataset
EuRoC資料集包含11個stereo序列,這些stereo序列是從在兩個不同房間和一個大型工業環境中飛行的微型飛行器(MAV)記錄的。 雙目傳感器的baseline約為11厘米,可提供20Hz的WVGA圖像。
根據MAV的速度,照明情況和場景的紋理,這些序列分為容易,中等和困難。 在所有序列中,MAV都會重新通路環境,并且ORB-SLAM2能夠重用地圖,并在必要時進行回環檢測。
下表顯示了與Stereo LSDSLAM相比的結果,ORB-SLAM2的所有序列的absolute translation均方根值。 ORB-SLAM2可以達到幾厘米的定位精度,并且比stereo LSD-SLAM更精确。 在V2 03的某些部分中,由于嚴重的motion blur,跟蹤丢失了,可以使用IMU資訊來處理該序列。
EuRoC:V1 02 medium, V2 02 medium, MH 03 medium and MH 05 difficult:
估計的軌迹:黑色
ground-truth:紅色
C. TUM RGB-D Dataset
TUM RGB-D資料集包含來自RGB-D傳感器在室内的序列,這些傳感器分為幾類,以評估在不同紋理,光照和結構條件下的重構和SLAM /裡程計方法。
在下表中,我們将精度與以下最新技術進行了比較:ElasticFusion ,Kintinuous,DVO-SLAM [14]和RGB-D SLAM 。我們的方法是唯一基于BA的方法,并且在大多數序列中都優于其他方法。
下圖顯示了四個序列,通過從計算出的關鍵幀pose反投影深度圖而得到的點雲。
書桌和海報的良好清晰度以及筆直的輪廓證明了方法的高精度定位。
D. Timing Results
為了完成對系統的評估,我們在下表中以三個序列顯示了時序結果,這些序列具有不同的圖像分辨率和傳感器。,顯示了每個線程任務的平均值和兩個标準偏差範圍。 由于這些序列包含一個回環,是以full BA和回環任務僅執行一次,并且僅報告一次時間測量。每幀的平均跟蹤時間低于每個序列的錄影機幀頻的倒數,這意味着我們的系統能夠實時工作。 由于stereo圖像中的ORB提取是并行的,是以可以看出,在V2 02的雙目WVGA圖像中提取1000個ORB特征類似于在fr3 office的單目VGA圖像通道中提取相同數量的特征。
将回環中關鍵幀的數量表示為回環的時間參考。
然而,雖然KITTI 07中的回環包含更多關鍵幀,但室内fr3辦公室建構的圖更密集,是以 loop fusion, pose-graph優化和full BA任務更加昂貴。較高密度的圖使局部地圖包含更多關鍵幀和點,是以局部地圖tracking和局部BA也更加昂貴。
Conclusion
我們為單目,雙目和RGB-D傳感器提供了完整的SLAM系統,能夠在标準CPU上實時執行重定位,閉環并重新使用其地圖。 如實驗所示,我們專注于建構全局一緻的地圖,以在廣泛的環境中進行可靠的長期定位。 提出的具有系統重定位功能的定位模式可為已知環境提供一種非常robust,零漂移和輕量級的定位方法。 此模式對于某些情景可能很有用,例如在地圖良好的空間中跟蹤虛拟現實中的使用者視點。
與最新技術的比較表明,ORBSLAM2在大多數情況下都可以達到最高的精度。 在KITTI視覺裡程計測試中,ORB-SLAM2是目前最佳的雙目SLAM解決方案。 至關重要的是,與近年來蓬勃發展的雙目視覺裡程計相比,ORB-SLAM2在已經地圖區域實作了零漂移定位。
令人驚訝的是,RGB-D結果表明,如果需要最精确的相機定位,BA的性能将優于直接法或ICP,其另外的優勢是計算成本較低,不需要GPU處理實時運作。
未來的擴充可能包括多錄影機,魚眼或全向錄影機支援,大規模密集融合,協作映射或增強的運動模糊魯棒性。