開源方案 | 傳感器形式 | 地址鏈接 |
MonoSLAM | 單目 | https://github.com/hanmekim/SceneLib2 |
PTAM | 單目 | http://www.robots.ox.ac.uk/~gk/PTAM/ |
ORB-SLAM | 單目為主 | http://webdiis.unizar.es/~raulmur/orbslam/ |
ORB-SLAM2 | 單目 | https://github.com/raulmur/ORB_SLAM2 |
LSD-SLAM | 單目為主 | http://vision.in.tum.de/research/vslam/lsdslam |
SVO | 單目 | https://github.com/uzh-rpg/rpg_svo |
RTAB-MAP | RGB-D/雙目 | https://github.com/introlab/rtabmap |
OKVIS | 多目+IMU | https://github.com/ethz-asl/okvis |
ROVIO | 單目+IMU | https://github.com/ethz-asl/rovio |
【1】2007---MonoSLAM (單目-濾波)
背景:說到視覺SLAM,很多研究者第一個想到的就是A.J.Davison的單目SLAM工作,他2007年提出的MonoSLAM是第一個實時的單目視覺SLAM系統。
- Davison, A. J., et al. "MonoSLAM: real-time single camera SLAM. " IEEE Transactions on Pattern Analysis & Machine Intelligence29.6(2007):1052.
- Davison, Andrew J. "Real-Time Simultaneous Localisation and Mapping with a Single Camera." IEEE International Conference on Computer Vision IEEE Computer Society, 2003:1403.
特點:擴展卡爾曼濾波為后端,追蹤前端非常稀疏的特征點。
意義:之前的SLAM系統基本不能在線運行,只能靠機器人攜帶相機采集數據,再離線的定位和建圖。
現在看來,應用場景窄,已經停止對其開發。
【2】2007---PTAM (單目 -非線性優化)
背景:2007年,Klein等人提出了PTAM (Parallel Tracking and Mapping)
- Murray, Dw, and G. Klein. "Parallel tracking and mapping for small AR workspaces." (2007):1-10.
意義:實現了跟蹤與建圖過程的並行化;第一個使用非線性優化,而不是使用傳統的濾波器作為后端的方案。引入了關鍵幀機制,不必精細的處理每幅圖像,而是把幾個關鍵圖像串起來,然后優化其軌跡和地圖,在PTAM之后,視覺SLAM轉向以非線性優化為主導的后端。
PTAM同時是一個增強現實軟件,演示了炫酷的AR效果。根據PTAM估計的相機位姿,我們可以在一個虛擬的平面上放置虛擬物體,看起來就跟真實的場景中一樣。
【3】2015---ORB-SLAM (單目為主-特征點-圖優化)
背景:ORB-SLAM 是PTAM的繼承者中非常有名的一位。提出於2015年,是現代SLAM系統中做得非常完善的系統之一。
- Mur-Artal, Raúl, J. M. M. Montiel, and J. D. Tardós. "ORB-SLAM: A Versatile and Accurate Monocular SLAM System." IEEE Transactions on Robotics 31.5(2015):1147-1163.
優點:(1)支持單目、雙目、RGB-D三種模式;
(2)整個系統圍繞ORB特征進行計算,包括視覺里程計與回環檢測ORB字典。ORB特征不像SURF或SIFT費時,可在CPU上實時計算;相比Harris等簡單角點特征,又具有良好的旋轉和縮放不變性;ORB提供描述子,使在大范圍運動時能夠回環檢測和重定位。
(3)ORB的回環檢測是它的亮點,優秀的回環檢測算法保證了ORB-SLAM有效的防止累計誤差,並且在丟失后還能迅速找回。為此,ORB-SLAM在運行前需要加載一個很大的ORB字典文件。
(4)ORB創新使用了3個線程完成了SLAM:實時跟蹤特征點的Tracking線程,局部Bundle Adjustment的優化線程(俗稱小圖),全局Pose Graph的回環檢測與線性優化(俗稱大圖。)
Tracking線程:對每幅新來的圖像提取ORB特征點,並與最近的關鍵幀進行比較,計算特征點的位置並粗略的估計相機位姿。
小圖線程:求解一個Bundle Adjustment問題,包括局部空間內的特征點與相機位姿,負責求解更精細的相機位姿與特征點空間位置。前面的這兩個線程完成了比較好的視覺里程計。
大圖線程:對全局的地圖與關鍵幀進行回環檢測,消除累積誤差。由於全局中地圖點太多了,所以優化不包括地圖點,只有相機位姿組成的位姿圖。 【可詳細了解:http://www.cnblogs.com/Jessica-jie/p/7281944.html】
(5)ORB圍繞特征點進行了不少優化。
缺點:由於整個 SLAM系統采用特征點進行計算,對每幅圖像都計算一遍ORB特征,是非常耗時的;ORB-SLAM的三線程結構給CPU帶來了較大的負擔;ORB-SLAM的建圖為稀疏矩陣點,目前還沒有開放存儲和讀取地圖后重新定位的功能,稀疏特征點地圖只能滿足我們對定位的需求,而無法提供導航、避障、交互等功能。
【4】2014---LSD-SLAM [Large Scale Direct monocular SLAM] (單目-直接法) http://www.sohu.com/a/166136329_715754
背景:是J.Engle等人於2014年提出的SLAM工作,標志着單目直接法在SLAM中的成功應用。其核心貢獻是將直接法應用到半稠密的單目SLAM中,不需要計算特征點,還能構建半稠密地圖。(半稠密:估計梯度明顯的像素位置)
- Engel, Jakob, T. Schöps, and D. Cremers. "LSD-SLAM: Large-Scale Direct Monocular SLAM." 8690(2014):834-849.
- Engel, Jakob, and D. Cremers. "Semi-dense Visual Odometry for a Monocular Camera." IEEE International Conference on Computer VisionIEEE Computer Society, 2013:1449-1456.
優點:(1)LSD-SLAM的直接法是針對像素進行的。
(2)LSD-SLAM在CPU上實現了半稠密場景的重建,這在之前的方案中很少見。基於特征點的方法只能是稀疏的,而進行稠密重建的方案大多要使用RGB-D傳感器,或者使用GPU構建稠密地圖。
(3)LSD-SLAM的半稠密追蹤使用了一些精妙的手段保證追蹤的實時性與穩定性。例如,LSD-SLAM既不是利用單個像素,也不是利用圖像塊,而是在極線上等距取5個點,度量其SSD;在深度估計時,LSD-SLAM首先用隨機數初始化深度,在估計完后又把深度均值歸一化,以調整尺度;在度量深度不確定時,不僅考慮三角化的幾何關系,而且考慮了極限與深度的夾角,歸納成一個光度不確定性項;關鍵幀之間的約束使用了相似變換群,在后端優化中可以將不同尺度的場景考慮進來,減小了尺度漂移現象。
半稠密地圖建模了灰度圖中有明顯梯度的部分,顯示在地圖上,很大一部分都是物體的邊緣或表面上帶紋理的部分。LSD-SLAM對它們進行跟蹤並建立關鍵幀,最后優化得到這樣的地圖,看起來比稀疏的地圖具有更多的信息,但又不像稠密地圖那樣擁有完整的表面。
缺點:由於LSD-SLAM使用了直接法進行跟蹤,所以它既有直接法的優點(對特征缺失區域不敏感),也繼承了直接法的缺點。例如,LSD-SLAM對相機內參和曝光非常敏感,並且在相機快速運動時容易丟失。在回環檢測部分,由於目前沒有基於直接法的回環檢測方式,因此LSD-SLAM必須依賴於特征點方法進行回環檢測,尚未完全擺脫特征點的計算。
【5】2014---SVO[Semi-direct Visual Odoemtry] (單目-半直接法)
背景:是Forster等人於2014年提出的一種基於稀疏直接法(半直接法)的視覺里程計。特征點法與直接法混用---SVO跟蹤了一些關鍵點(角點,沒有描述子),然后直接法那樣,根據關鍵點周圍的信息(4*4的小塊進行塊匹配)估計相機的運動及其位置。
- Forster, Christian, M. Pizzoli, and D. Scaramuzza. "SVO: Fast semi-direct monocular visual odometry." IEEE International Conference on Robotics and Automation IEEE, 2014:15-22.
優點:相比其他方案,最大的優點就是速度快。由於使用稀疏的直接法,既不用費力去計算描述子,也不必處理稠密和半稠密那么多信息,因此在低端計算平台上也能達到實時性,適用於無人機。SVO的另一創新之處:提出了深度濾波器概念,並推導了基於均勻-高斯混合分布的深度濾波器。SVO將這種濾波器用於關鍵點的位置估計,並使用了逆深度作為參數化形式,使之能更好的計算特征點位置。
開源版的SVO代碼清晰易讀,適合讀者作為第一個SLAM實例進行分析。但它也存在一些問題:
(1)由於目標應用平台為無人機的俯視相機,其視野內的物體主要是地面,而且相機的運動主要是水平和上下移動,SVO的許多細節是圍繞這個應用設計的,這使得它在平視相機中表現不佳。
(2)SVO為了速度和輕量化,舍棄了后端優化和回環檢測部分,也基本沒有建圖功能。這意味着SVO的位姿估計必然存在累積誤差,而且丟失后不太容易進行重定位(因為沒有描述子用來回環檢測)。
【6】RTAB-MAP RGB-D傳感器上的SLAM方案
背景:RTAB-MAP (Real Time Appearance-Based Mapping)是RGB-D SLAM中比較經典的方案。它實現了RGB-D SLAM中所以應該有的東西:基於特征的視覺里程計、基於詞袋的回環檢測、后端的位姿圖優化,以及點雲和三角網格地圖。RTAB-MAP支持一些常見的RGB-D和雙目傳感器,像kinect、Xtion等,且提供實時的定位和建圖功能。不過由於集成度較高,更適合作為SLAM應用而非研究。
- Labbé, Mathieu, and F. Michaud. "Online global loop closure detection for large-scale multi-session graph-based SLAM." Ieee/rsj International Conference on Intelligent Robots and Systems IEEE, 2014:2661-2666.
優點:相比於單目和雙目,RGB-D SLAM的原理要簡單很多,而且能在CPU上實時建立稠密的地圖。
擴展:
【1】 OKVIS---提出了一種緊耦合、基於非線性優化的IMU與多目視覺的實時融合方法,屬於VIO(Visual Inertial Odometry),通過視覺融合IMU做里程計。
http://blog.csdn.net/fuxingyin/article/details/53368649---okvis理論
http://blog.csdn.net/fuxingyin/article/details/53428523---okvis代碼
- Stefan L, Simon L, Michael B and Roland S . "Keyframe-based visual-inertial odometry using nonlinear optimization." International Journal of Robotics Research34.3(2015):314-334.
【2】ROVIO---緊耦合、提出了一種基於EKF的IMU與單目視覺的融合方法;基於圖像塊的濾波實現的VIO。
http://www.cnblogs.com/shhu1993/p/7003670.html
- Bloesch Michael, et al. "Robust visual inertial odometry using a direct EKF-based approach." Ieee/rsj International Conference on Intelligent Robots and Systems IEEE, 2015:298-304.
未來的SLAM話題:
SLAM將來的發展趨勢有兩大類:一是朝輕量級、小型化方向發展,讓SLAM能夠在嵌入式或手機等小型設備上良好運行,然后考慮以它為底層的應用。另一方面是,利用高性能計算設備,實現精密的三維重建、場景理解等功能。在這些應用中我們的目的是完美的重建場景,由於可以利用GPU,所以這個方向和深度學習有結合點。
【1】視覺+慣性導航SLAM
慣性傳感器(IMU)能夠測量傳感器本體的角速度和加速度,被認為與相機傳感器有明顯的互補性。
(1)IMU雖然可以測得角速度和加速度,但是這些都存在明顯的漂移,使得積分兩次得到的位姿數據非常不可靠。但是,對於短時間內的快速運動,IMU能提供一些較好的估計,這正是相機的弱點。當相機運動過快時,相機會出現運動模糊,或者兩幀之間重疊區域太少以至於無法進行特征匹配,所以純視覺的SLAM很怕快速運動。有了IMU,即使在相機無效的那段時間內,我們也能保持一個較好的位姿估計。
(2)相比於IMU,相機數據基本不會有飄移,相機數據可以有效的估計並修正IMU讀數中的飄移。
(3)當圖像發生變化時,本質上我們沒法知道是相機自身發生了運動,還是外界條件發生了變化,所以純視覺SLAM難以處理動態的障礙物。而IMU能感受到自身的運動信息,某種程度上減輕動態物體的影響。
雖然說起來比較簡單,但是無論在理論還是實踐上VIO(Visual Inertial Odometry)都是相當復雜的。目前VIO框架定位兩大類:松耦合---IMU和相機分別進行自身的運動估計,然后對其位姿估計進行融合;緊耦合---把IMU的狀態和相機狀態合並在一起,共同構建運動方程和觀測方程,然后進行狀態估計。緊耦合理論可分為基於濾波和基於優化兩個方向。濾波方面---MSCKF(Multi-State Constraint KF);優化方面---盡管在純視覺SLAM中優化方案占了主流,但在VIO中由於IMU的數據頻率非常高,對狀態優化需要的計算量就更大了,因此目前處於濾波和優化並存的階段。
【2】語義SLAM
SLAM與深度學習技術結合。(由於我不搞這方面的研究,此處省略介紹)
【3】除此之外,基於線/面特征的SLAM、動態場景下的SLAM、多機器人的SLAM等,都是研究者感興趣並發力的地方。