你了解牛氣沖天的SLAM技術嗎?
SLAM概述
SLAM:SimultaneousLocalizationandMapping,即時定位與地圖構建技術。它指的是:機器人從未知環境的未知地點出發,在運動過程中通過重復觀測到的環境特征定位自身位置和姿態,再根據自身位置構建周圍環境的增量式地圖,從而達到同時定位和地圖構建的目的。
SLAM技術的發展推動了定位(Localization)、跟蹤(Tracking)以及路徑規劃(PathPlanning)技術的發展,進而對無人機、無人駕駛、機器人等熱門研究領域產生重大影響。
我們來看看SLAM技術都在哪些領域發揮作用吧。
圖1SLAM應用領域
VR/AR方面:輔助增強視覺效果。SLAM技術能夠構建視覺效果更為真實的地圖,從而針對當前視角渲染虛擬物體的疊加效果,使之更真實沒有違和感。VR/AR代表性產品中微軟Hololens、谷歌ProjectTango以及MagicLeap都應用了SLAM作為視覺增強手段。
無人機領域及機器人定位導航領域:地圖建模。SLAM可以快速構建局部3D地圖,并與地理信息系統(GIS)、視覺對象識別技術相結合,可以輔助無人機識別路障并自動避障規劃路徑,還可以輔助機器人執行路徑規劃、自主探索、導航等任務。曾經刷爆美國朋友圈的Hovercamera無人機,正是應用SLAM技術。國內的科沃斯、塔米掃地機通過用SLAM算法結合激光雷達或者攝像頭的方法,讓掃地機可以高效繪制室內地圖,智能分析和規劃掃地環境,從而成功讓自己步入了智能導航的陣列。
無人駕駛領域:視覺里程計。SLAM技術可以提供視覺里程計功能,并與GPS等其他定位方式相融合,從而滿足無人駕駛精準定位的需求。例如,應用了基于激光雷達技術LidarSlam的Google無人駕駛車以及牛津大學MobileRoboticsGroup11年改裝的無人駕駛汽車野貓(Wildcat)均已成功路測。
SLAM框架
自從上世紀80年代SLAM概念的提出到現在,SLAM技術已經走過了30多年的歷史。SLAM技術采用的硬件、算法也在“與時俱進”,SLAM技術框架逐漸豐富。在硬件方面,SLAM系統使用的傳感器從早期的聲吶,逐漸演變到后來的2D/3D激光雷達,再到單目、雙目攝像機,RGBD、ToF等深度攝像機,以及與慣性測量單元(IMU)等傳感器的融合。在軟件算法方面,也從開始的基于濾波器的方法,如擴展卡爾曼濾波器(EKF)、粒子濾波器(PF)等,向基于優化的方法轉變。
SLAM系統一般分為五個模塊,系統框架如圖2所示,包括:
- 傳感器數據:主要用于采集實際環境中的各類型原始數據。包括激光掃描數據、視頻圖像數據、點云數據等。
- 視覺里程計:主要用于不同時刻間移動目標相對位置的估算。包括特征匹配、直接配準等算法的應用。
- 后端:主要用于優化視覺里程計帶來的累計誤差。包括濾波器、圖優化等算法應用。
- 建圖:用于三維地圖構建。
- 回環檢測:主要用于空間累積誤差消除
圖2SLAM系統框架
其工作流程大致為:
傳感器讀取數據后,視覺里程計估計兩個時刻的相對運動(Ego-motion),后端處理視覺里程計估計結果的累積誤差,建圖則根據前端與后端得到的運動軌跡來建立三維地圖[1],回環檢測考慮了同一場景不同時刻的圖像,提供了空間上約束來消除累積誤差。
SLAM技術的發展
依據傳感器的特點不同,SLAM技術也分為激光和視覺兩個技術路線,其特點如圖4所示。
- 激光雷達傳感器
激光雷達利用激光在同一空間參考系下獲取物體表面每個采樣點的空間坐標,可得到一系列表達目標空間分布和目標表面特性的海量點的集合。由于激光雷達距離測量比較準確,誤差模型簡單,在強光直射以外的環境中運行穩定,因此點云的處理也比較容易。同時,點云信息本身包含直接的幾何關系,使得機器人的路徑規劃和導航變得直觀。激光SLAM理論研究也相對成熟,落地產品更豐富。
- 視覺傳感器
早期的視覺SLAM基于濾波理論,其非線性的誤差模型和巨大的計算量成為了它實用落地的障礙。近年來,隨著具有稀疏性的非線性優化理論(BundleAdjustment)以及相機技術、計算性能的進步,實時運行的視覺SLAM已經不再是夢想。
圖3SLAM兩大類傳感器
圖4SLAM兩大傳感器特點
1、激光雷達SLAM發展
基于激光雷達的SLAM(LidarSLAM)采用2D或3D激光雷達(也叫單線或多線激光雷達)。在室內機器人(如掃地機器人)上,一般使用2D激光雷達,在無人駕駛領域,一般使用3D激光雷達。
現任Udacity創始人CEO、前Google副總裁、谷歌無人車領導者SebastianThrun在他2005年的經典著作《ProbabilisticRobotics》一書中詳細闡述了利用2D激光雷達基于概率方法進行地圖構建和定位的理論基礎,并闡述了基于RBPF(Rao-blackwellizedparticlefilter)粒子濾波器的FastSLAM方法,成為后來2D激光雷達建圖的標準方法之一GMapping的基礎,該算法也被集成到機器人操作系統(RobotOperationSystem,ROS)中。2013年,對ROS中的幾種2DSLAM的算法HectorSLAM,KartoSLAM,CoreSLAM,LagoSLAM和GMapping做了比較評估[2]。2016年,Google開源其激光雷達SLAM算法庫Cartographer,它與GMapping相比,能夠有效處理閉環,達到了較好的效果。
2、視覺SLAM發展
現在主流的視覺SLAM系統的特性主要體現在前端和后端,如圖5所示。
前端對應視覺里程計,主要用于數據關聯,研究幀與幀之間變換關系,完成實時的位姿跟蹤,對輸入的圖像進行處理,計算姿態變化。由于與后端還存在反饋,因此也檢測并處理閉環,當有慣性測量單元(IMU)信息時,還可以參與融合計算。
后端主要對前端的輸出結果進行優化,利用濾波理論,如擴展卡爾曼濾波(EKF)、粒子濾波(PF)等優化理論進行樹或圖的優化,得到最優的位姿估計和地圖。
圖5典型SLAM的前端和后端
2007年,第一個成功基于單目攝像頭的純視覺SLAM系統MonoSLAM[3]誕生。同年,Murray和Klein提出了實時SLAM系統PTAM(ParallelTrackingandMapping)[4],PTAM實現了架構創新,它將姿態跟蹤(Tracking)和建圖(Mapping)兩個線程分開并行進行,這在當時是一個創舉,第一次讓大家覺得對地圖的優化可以整合到實時計算中。這種設計為后來的實時SLAM(如ORB-SLAM)所效仿,成為了現代SLAM系統的標配。
圖6PTAM系統與EKF-SLAM系統產生結果對比
2015年,Mur-Artal等提出了開源的單目ORB-SLAM[6],并于2016年拓展為支持雙目和RGBD傳感器的ORB-SLAM2[7],它是目前支持傳感器最全且性能最好的視覺SLAM系統之一,也是所有在KITTI數據集上提交結果的開源系統中排名最靠前的一個[8]。
如圖7所示,ORB-SLAM主要分為三個線程進行,即跟蹤(Tracking)、建圖(LocalMapping)和閉環檢測(LoopClosing)。跟蹤部分是主要是從圖像中提取ORB特征,根據上一幀進行姿態估計,或者進行通過全局重定位初始化位姿,然后跟蹤已經重建的局部地圖,優化位姿,再根據一些規則確定新的關鍵幀。建圖部分主要完成局部地圖構建。包括對關鍵幀的插入,驗證最近生成的地圖點并進行篩選,然后生成新的地圖點,使用局部捆集調整(LocalBA),最后再對插入的關鍵幀進行篩選,去除多余的關鍵幀。閉環檢測部分主要分為兩個過程,分別是閉環探測和閉環校正。閉環檢測先使用二進制詞典匹配檢測(WOB)進行探測,然后通過Sim3算法計算相似變換。閉環校正,主要是閉環融合和EssentialGraph的圖優化。由于ORB-SLAM系統是基于特征點的SLAM系統,故其能夠實時計算出相機的軌線,并生成場景的稀疏三維重建結果。
圖7ORB-SLAM2的三線程結構
2016年,TUM機器視覺組的Engel等人又提出了DSO系統[9],該系統是一種新的基于直接法和稀疏法的視覺里程計,它將最小化光度誤差模型和模型參數聯合優化方法相結合。為了滿足實時性,不對圖像進行光滑處理,而是對整個圖像均勻采樣(如圖8)。該系統在TUMmonoVO、EuRoCMAV和ICL-NUIM三個數據集上進行了測試,達到了很高的跟蹤精度和魯棒性。
圖8DSO系統
2017年,香港科技大學的沈紹劼老師課題組提出了融合慣性測量單元(IMU)和視覺信息的VINS系統[10],同時開源手機和Linux兩個版本的代碼,這是首個直接開源手機平臺代碼的視覺IMU融合SLAM系統。這個系統可以運行在iOS設備上,為手機端的增強現實應用提供精確的定位功能,同時該系統也在應用在了無人機控制上,并取得了較好的效果。
SLAM未來展望
SLAM前20年(1986-2004)可稱之為“古典年代”。古典年代時期,引入了SLAM概率論推導方法,包括基于擴展卡爾曼濾波、粒子濾波和最大似然估計;這里的第一個挑戰是效率和數據關聯的魯棒性問題。
接下來的年代,我們稱之為“算法分析”年代(2004-2015),在算法分析的年代,有許多SLAM基本特性的研究,包括可觀測性,收斂性和一致性。在這一時期,研究者們理解了稀疏特征在高效SLAM解決方案中的重要角色,開發了主要開源SLAM庫。
現在我們正進入SLAM的第三個時代,從魯棒性覺醒的時代,它具有以下特征:
1.魯棒性能:這一時期SLAM系統在任意環境總運行的失效率較低;系統具有失效保護機制且具有自動調整的功能可以根據應用場景自動選擇系統參數;
2.高層次的理解力:SLAM系統已經除了基本的幾何重建還能夠在更高層次上理解環境信息(比如,語義、可供性、高層幾何意義、物理意義等);
3.資源敏感:SLAM系統可以進行裁剪以滿足現有傳感器和計算資源,也可以根據現有資源調整計算負載;
4.對任務驅動的判斷:SLAM系統可以自適應地表示地圖,其復雜度可以根據機器人執行的任務而改變。
地理信息在視頻監控中有著廣泛的應用,傳統的二維地理信息數據無法與平安城市監控系統的業務數據進行有效的集成和關聯,無法提供深層次數據服務,已經不能適應城市發展的需要與人民對優質生活的要求。若將SLAM三維稠密地圖構建用于視頻監控領域,可以更好地實現對監控攝像頭的搜索定位和視頻決策與分析。在三維地圖內模擬云臺操作也可直接查看三維內效果和視頻效果,這便于在三維地圖內進行可視調整,調試出最佳監控點位,便于攝像頭的安裝及后期維護。
參考文獻:
[1]S?renRiisgaardandMortenRufusBlas:SLAMforDummies,ATutorialApproachtoSimultaneousLocalizationandMapping
[2]JoaoMachadoSantos,DavidPortugalandRuiP.Rocha.AnEvaluationof2DSLAMTechniquesAvailableinRobotOperatingSystem
[3]AJDavison,IDReid,NDMolton.MonoSLAM:Real-timesinglecameraSLAM.IEEETransactionsonPatternAnalysisandMachineIntelligence,June2007
[4]KleinG,MurrayD.ParalleltrackingandmappingforsmallARworkspaces.ProceedingsofIEEEandACMInternationalSymposiumonMixedandAugmentedReality.2007
[5]KleinG,MurrayD.Paralleltrackingandmappingonacameraphone.ProceedingsofIEEEandACMInternationalSymposiumonMixedandAugmentedReality.2009
[6]Mur-ArtalR,MontielJMM,TardosJD.ORB-SLAM:aversatileandaccuratemonocularSLAMsystem.IEEETransactionsonRobotics,2015,31(5):1147-1163
[7]RaúlMur-Artal,andJuanD.Tardós.ORB-SLAM2:anOpen-SourceSLAMSystemforMonocular,StereoandRGB-DCameras.ArXivpreprintarXiv:1610.06475,2016
[8]http://www.cvlibs.net/datasets/kitti/eval_odometry.php
[9]JakobEngelandVladlenKoltunandDanielCremers.DirectSparseOdometry.IEEETRANSACTIONSONPATTERNANALYSISANDMACHINEINTELLIGENCE.2017
[10]PeiliangLi,TongQin,BotaoHu,FengyuanZhuandShaojieShen.MonocularVisual-InertialStateEstimationforMobileAugmentedReality.ISMAR2017
【本文為51CTO專欄作者“中國保密協會科學技術分會”原創稿件,轉載請聯系原作者】