李延真,石立國,徐志根,程 超,夏清泉
(國網山東省電力公司青島供電公司,山東 青島 266001)
同時定位與建圖(Simultaneous Localization And Mapping,SLAM)是移動機器人領域的一個具有挑戰(zhàn)性的難題。目前SLAM技術研究主要集中于兩種方法,一是基于便攜式激光測距儀的方法,即激光SLAM,另一種是基于計算機視覺的方法,即視覺SLAM。采用激光雷達構建的點云地圖,在某種程度上無法展現(xiàn)較好的環(huán)境細節(jié)信息,以至于智能機器人在環(huán)境復雜的場景中,不能有效的進行環(huán)境信息感知和決策。隨著計算機技術以及視覺傳感器技術的發(fā)展,視覺SLAM采用相機來替代激光雷達重構周圍環(huán)境的3D地圖,已取得了巨大且快速的發(fā)展。而且,圖像中包含更加豐富的環(huán)境特征信息,以使得機器人能夠在更大范圍內完成任務。此外,視覺傳感器的發(fā)展以及深度相機、立體相機的出現(xiàn)和改進,吸引了許多學者對視覺SLAM技術進行了大量的研究。視覺SLAM主要由特征提取、特征跟蹤、運動跟蹤、閉環(huán)檢測、地圖構建、位姿估計等部分組成。
經典視覺SLAM框架如圖1所示,通常包含傳感器數(shù)據輸入、前端、后端、地圖構建以及閉環(huán)檢測。前端獲取傳感器原始數(shù)據,并對數(shù)據進行預處理。例如特征提取,短期和長期數(shù)據關聯(lián)等操作,以便將幾何信息轉換為數(shù)學模型并將其發(fā)送到后端。后端對前端的輸入模型進行優(yōu)化、最小化相機姿態(tài)的累計誤差,以及地圖信息的優(yōu)化調整。閉環(huán)檢測將相機圖像的檢測結果送到后端處理,通過計算圖像相似性,對機器人經過的場景進行識別比對,從而實現(xiàn)累計誤差的消除。
圖1 經典SLAM框架Fig.1 Classic SLAM framework
根據視覺傳感器的不同,視覺SLAM主要分為單目、RGB-D、立體視覺SLAM等方法。其中,采用單相機解決SLAM問題的方案稱為單目SLAM;而RGB-D SLAM方法不僅需要單目相機,并且需要用到紅外傳感器;立體視覺SLAM則需要在不同方位安裝多個相機。視覺傳感器一般具有視覺里程測量功能,具有足夠的穩(wěn)定性和魯棒性,而且易于實現(xiàn)。
近十年來,SLAM算法有很多,主要分為基于直接法的視覺SLAM和基于特征點法的視覺SLAM兩大類。
1.1.1 基于特征點的視覺SLAM
Davison等人提出了一種單目SLAM方法,稱為MonoSLAM。MonoSLAM采用EKF算法建立環(huán)境特征點的地圖,這種地圖雖有一定限制,但在解決單目特征初始化的問題上足夠穩(wěn)定。此外,地圖的稀疏性也暴露了機器人在需要更多環(huán)境細節(jié)的情況下,無法完成定位任務的問題。為此,研究出現(xiàn)了UKF方法以及改進的UKF方法,用于解決視覺SLAM的線性不確定性。而Sim等人提出的基于PF的單目SLAM方法可以構建更精確的映射,但PF方法的算法具有很高的計算復雜度,以至于無法在大型環(huán)境下應用。Klein等人設計了一種基于關鍵幀的單目SLAM方法,即PTAM。在該方法中,跟蹤和建圖分為兩個并行化的任務。關鍵幀提取技術,即通過數(shù)個關鍵圖像串聯(lián),優(yōu)化地圖和運動軌跡,從而避免了對每一幅圖像的細節(jié)進行處理。這種方法采用非線性優(yōu)化來替代EKF方法解決線性化的困難,進而減少了機器人在定位中的不確定性。但是,由于PTAM存在全局優(yōu)化的問題,使得該方法無法在大型環(huán)境中應用。
2015年,Mur-Artal等人提出了一種新的實時視覺SLAM方法---ORB-SLAM。該方法是一種基于特征法的單目SLAM,實時估計3D特征位置和重建環(huán)境地圖,其特征計算具有良好的旋轉和縮放不變性,具有較高的定位精度。但該方法使得CPU運算負擔大,生成的地圖僅用于定位需求,無法用于導航和避障需求。為此,Mur-Artal等于2017年又提出了一種改進算法,即基于ORB-SLAM的ORBSLAM2,其不僅支持RGB-D相機以外的單目相機還支持使用立體相機。
然而,ORB-SLAM2是通過大規(guī)模數(shù)據生成訓練詞匯,當詞匯量較大時,其過程對于移動機器人來說是非常耗時的。在機器人工作環(huán)境固定的情況下,使用大數(shù)據集會導致大量無效數(shù)據的產生。此外,ORB-SLAM2還缺乏離線可視化和軌跡建圖的能力。
1.1.2 基于直接法的視覺SLAM
1.ene modo-yi tülekü ɡejü beledkejü bui(我要把這根木頭燒了/我想燒掉這根木頭)
LSD-SLAM、DTAM是基于直接法的單目SLAM方法,使用RGB圖像作為輸入,通過所有像素強度估計相機的幀軌跡和重建環(huán)境的3D地圖。DTAM是一種直接稠密的方法,通過在相機視頻流中提取多張靜態(tài)場景圖片來提高單個數(shù)據信息的準確性,從而實時生成精確的深度地圖。該方法計算復雜度比較大,需要GPU并行運算,對全局照明處理的魯棒性較差。
LSD-SLAM能夠構建一個半稠密的全局穩(wěn)定的環(huán)境地圖,包含了更全面的環(huán)境表示,在CPU上實現(xiàn)了半稠密場景的重建。該方法對相機內參敏感和曝光敏感,需要特征點進行回環(huán)檢測,無法在照明不規(guī)律變化的場景中應用。
Forster等人提出的SVO(Semi-direct Visual Odoemtry),是一種半直接法的視覺里程計,其是特征點和直接法的混合使用,該方法的時間復雜度較低,但是,該方法舍棄了后端優(yōu)化和回環(huán)檢測,而且位姿估計會產生累積誤差,因此在移動機器人丟失位置后重定位比較困難。
DSO(Direct Sparse Odometry)也是一種半直接法的視覺里程計,基于高度精確的稀疏直接結構和運動公式。該方法能夠直接優(yōu)化光度誤差,考慮了光度標定模型,該方法不僅完善了直接法位姿估計的誤差模型,還加入了仿射亮度變換、光度標定、深度優(yōu)化等方法,在無特征的區(qū)域中也可以使其具有魯棒性。但是,該方法舍棄了回環(huán)檢測。
VI-SLAM(Visual-Inertial SLAM)將視覺傳感器和IMU優(yōu)勢結合,從而為移動機器人提供更加豐富的運動信息和環(huán)境信息。其主要方式將視覺前段信息與IMU信息結合,即視覺慣性里程計(VIO),采用濾波技術以及優(yōu)化方法,對采集的物理量信息進行處理,進而實現(xiàn)對自身的運動和環(huán)境信息估計。當視覺傳感器在短時間內快速運動失效時,融合IMU數(shù)據能夠為視覺提供短時的精準定位,同時利用視覺定位信息來估計IMU的零偏,減少IMU由零偏導致的發(fā)散和累積誤差。通過二者的融合,可以解決視覺位姿估計輸出頻率低的問題,同時位姿估計精度有一定的提高,整個系統(tǒng)也更加魯棒。目前VI-SLAM已在機器人、無人機、無人駕駛、AR和VR等多個領域有所應用。
MSCKF算法將視覺與慣性信息在EKF框架下融合,相較于單純的VO算法,該算法能夠應用在運動劇烈、紋理短時間缺失等環(huán)境中,而且魯棒性更好;相較于基于優(yōu)化的VIO算法(VINS,OKVIS),MSCKF精度相當、速度更快,適合在計算資源有限的嵌入式平臺運行。ROVIO是基于單目相機開發(fā)的緊耦合VIO系統(tǒng),通過對圖像塊的濾波實現(xiàn)VIO,利用擴展卡爾曼濾波進行狀態(tài)估計,使用速度更快的FAST來提取角點,其三維坐標用向量和距離表示。其次,所有角點是通過圖像塊進行描述,并通過視頻流獲取了多層次表達;最后利用IMU估計的位姿來計算特征投影后的光度誤差,并將其用于后續(xù)優(yōu)化。雖然該算法計算量小,但對應不同的設備需要調參數(shù)(參數(shù)對精度很重要),并且沒有閉環(huán),經常存在誤差,會殘留到下一時刻。
視覺與激光雷達融合的SLAM,是將激光雷達在建圖和距離測量時準確度較好的優(yōu)勢,與視覺方法構建環(huán)境信息較準確的優(yōu)勢相結合,在一定程度上能夠避免單相機在使用過程中的單目尺度漂移、雙目深度估計精度不高、戶外RGB-D稠密重建困難的缺陷,將有效提升SLAM性能。其確定是標定和融合比較困難。
視覺與激光雷達融合的SLAM主要分為:改進的視覺SLAM、改進的激光SLAM以及并行激光與視覺SLAM。
J.Graeter等人提出了一種激光-視覺里程計方法(LiDAR-Monocular Visual Odometry,LIMO)。該方法從LiDAR中提取圖片中特征點的深度,不僅考慮局部平面假設的外點,并考慮了地面點。Shin等人利用LiDAR提供的稀疏深度,提出了一種基于單目相機直接法的視覺SLAM框架。采用滑動窗口進行追蹤的方法,忽略舊的關鍵幀,不在大規(guī)模場景下集成了深度的幀與幀的匹配方法。這種方法相機分辨率比激光雷達分辨率高,從而導致許多像素缺失深度信息。為處理相機和激光雷達分辨率匹配的問題,De Silva等人在計算兩個傳感器之間的幾何變換后,采用高斯過程回歸,對缺失值進行插值。Scherer等人采用VIO對機器人的狀態(tài)進行估計,采用激光雷達進行障礙物及邊界檢測,但是激光雷達的點云數(shù)據可能包含遮擋點,從而對精度有一定的影響。為提高精度,Huang等人提出一種基于直接法的SLAM方法,采用遮擋點檢測器和共面點檢測器解決這一問題。
在一些研究中,視覺-激光SLAM,采用激光雷達掃描匹配進行運動估計,相機進行特征檢測,從而對純激光SLAM的缺陷進行相應的彌補。Liang等人提出了一種解決激光和相機傳感器集成的大規(guī)模激光碰撞中的閉環(huán)問題。其利用ORB特征和詞袋特征,實現(xiàn)了環(huán)路檢測的快速、魯棒性。通過在不同大規(guī)模環(huán)境下的實驗,驗證了該方法的有效性。Zhu等人將3D激光SLAM和視覺關鍵幀詞袋回環(huán)檢測相融合,并對最近點迭代(ICP)進行優(yōu)化。Pandey等人利用3D點云與可用相機圖像的共配準,將高尺度特征描述符(如尺度不變特征變換(SIFT)或加速魯棒特征(SURF))與3D點相關聯(lián),即利用視覺信息對剛性轉換做了預測,并且建立通用的ICP框架。
此外,并發(fā)視覺激光融合也是一個研究方向。Seo等人同時采用激光雷達和視覺傳感器并行構建了兩個地圖:激光雷達立體像素地圖和具有地圖點的視覺地圖,并在后端優(yōu)化中運用殘差對里程求解,使其保持全局一致,從而能夠更好的進行狀態(tài)估計,是一種緊耦合的方法。Zhang等人提出一種視覺雷達里程計的通用框架。該方法使用高頻運行的視覺里程計作為圖像幀速率(60 Hz)來估計運動,并使用低頻率(1 Hz)激光雷達測距儀細化運動估計,并消除由視覺測距漂移引起的點云失真。
將深度學習理論引入視覺SLAM中,主要應用包含:使用深度神經網絡對單目視覺深度進行估計;將深度學習與視覺SLAM前端結合,從而提高圖像特征提取的準確度;融入物體識別、目標檢測、語音分割等技術,進而增加對周圍環(huán)境信息的感知與理解。
Zhou等人提出了一種單目深度和位姿估計的無監(jiān)督學習網絡,其特點是完全無監(jiān)督網絡,從非結構化視頻序列進行單視圖深度估計和多視圖位姿估計,但得到的深度和位姿缺乏系統(tǒng)尺度。Godard等人提出了一種卷積神經網絡,替代了直接用深度圖數(shù)據訓練,采用容易獲得的雙目立體視覺的角度,在沒有參考深度數(shù)據的情況下,估計單個圖像的深度,從而可以執(zhí)行端到端無監(jiān)督單眼深度估計,并加強左右視差圖的一致性,從而提升性能和魯棒性。Mahjourian等人提出了一種基于無監(jiān)督學習的新方法,對單目視頻中的深度與自我運動的估計,最終作者在KITTI數(shù)據集和手機拍攝的微景觀標定的視頻數(shù)據集上進行了算法驗證。Daniel DeTone等人提出了一種DeepSlam,在存在圖像噪聲的情況下進行特征點檢測,相比傳統(tǒng)方案,具有顯著的性能差距。此外,DeTone等人還提出了一個自監(jiān)督框架SuperPoint,適用于計算機視覺中大量多視圖幾何問題的興趣點檢測器和描述符的訓練。Jiexiong Tang等人提出了一種基于深度學習的GCNv2網絡(GCN-SLAM),用于生成關鍵點和描述符。
JohnMcCormac等人提出了Semanticfusion方法,使用CNN進行語義分割,加上條件隨機場對分割結果的優(yōu)化,設計了semantic mapping系統(tǒng),是一種將CNN和最先進的稠密SLAM融合方案。Thomas Whelan等人提出了ElasticFusion,用來構建語義三維地圖。Bowman等人提出一種融合尺度信息與語義信息的理論框架,通過對目標進行相應的檢測,將尺度信息和語義信息結合,從而實現(xiàn)對運動估計和地圖的優(yōu)化。
目前,大部分的研究都是基于靜態(tài)環(huán)境,而且光線良好,且為非單調紋理特征的情形。但實際生活場景中還會有大量動態(tài)的行人或者物體,所以研究動態(tài)環(huán)境下的SLAM也是極其重要的。其關鍵技術就是將動態(tài)的行人或物品等特征點,能夠在地圖中過濾移除,避免對定位和閉環(huán)檢測產生不良影響
為此,Wei Tan等人提出了RDSLAM(Robust monocular slam)方法,其是一種基于關鍵幀的在線表示和更新方法的實時單目SLAM系統(tǒng)。該方法可以處理緩慢變化的動態(tài)環(huán)境,能夠檢測變化并及時更新地圖。Chao Yu等人提出了一個面對動態(tài)環(huán)境的語義視覺SLAM系統(tǒng)DS-SLAM。該方法結合語義信息和運動特征點檢測,來濾除每一幀中的動態(tài)物體,從而提高位姿估計的準確性,同時建立語義八叉樹地圖。其是基于優(yōu)化ORB-SLAM的方法,使其具有更好的魯棒性。 MaskFusion是由RüNZ M等人提出的一個實時的、具備對象感知功能的、語義和動態(tài)RGB-D SLAM系統(tǒng)。該方法在連續(xù)的、自主運動中,能夠在跟蹤和重建的同時,識別分割場景中不同的物體并分配語義類別標簽。DynaSLAM是一個在動態(tài)環(huán)境下輔助靜態(tài)地圖的SLAM系統(tǒng),通過增加運動分割方法使其在動態(tài)環(huán)境中具有穩(wěn)健性,并且能夠對動態(tài)物品遮擋的部分進行修復優(yōu)化,生成靜態(tài)場景地圖。StaticFusion是一種面向動態(tài)環(huán)境基于面元的RGB-D SLAM系統(tǒng),能夠在動態(tài)環(huán)境中檢測運動目標并同時重建背景結構,但該方法的初始若干幀內不能有大量動態(tài)物體,否則初始靜態(tài)場景面元地圖的不準確性增加。
在視覺SLAM發(fā)展的三十年里,已取得了重大的成果,形成一些常用的框架方法,在機器人、無人機、無人駕駛、AR和VR等多個領域已有所應用。針對視覺SLAM經典研究方法的特點做一總結,見表1。
表1 視覺SLAM經典方法總結Tab.1 Summary of classical visual SLAM
綜上所述,目前已有的SLAM方法仍然在計算力問題、室外動態(tài)大規(guī)模地圖構建、地圖復用等方面存在不足,以及在實時性與準確性問題上難以兼顧。目前,SLAM應用場景不斷變化,移動環(huán)境場景也不斷增多,SLAM算法在動態(tài)物體及動態(tài)環(huán)境方面要求也不斷升高,同時實時性要求也隨之提高,這也成為今后SLAM算法的研究方向,隨著新型傳感器以及更多算法的研究與發(fā)展,視覺SLAM也不斷提高精度及魯棒性,平衡實時性和準確性,向可移植、多傳感器融合以及智能語義SLAM的方向發(fā)展。