任偉建,高 強,康朝海, 霍鳳財,張志強
(1.東北石油大學 電氣信息工程學院,黑龍江 大慶 163318;2.黑龍江省網(wǎng)絡(luò)化與智能控制重點實驗室,黑龍江 大慶 163318)
SLAM技術(shù)是當前移動機器人定位技術(shù)主流的研究方法之一。隨著移動機器人應(yīng)用領(lǐng)域的復(fù)雜性不斷增加,高效的定位導(dǎo)航系統(tǒng)是控制系統(tǒng)和路徑規(guī)劃的前提,特別是當無法獲得諸如全球定位系統(tǒng)(GPS)等外部位置參考時,需要移動機器人即時定位自身位置來構(gòu)建增量式地圖。SLAM技術(shù)研究如何一致性地將傳感器收集到的信息集成到數(shù)學模型上來實現(xiàn)建圖功能,與此同時估測機器人的坐標和姿勢形態(tài)實現(xiàn)定位功能[1]。實際上,在誤差和噪音條件下,這兩部分如果分開解決,將毫無意義,必須在各自進程中同時求得連續(xù)解;同時,不同進程中的相互迭代反饋對連續(xù)解的求解起到一定作用。因此,SLAM問題是一個不斷迭代而又復(fù)雜的耦合問題。
SLAM技術(shù)起源于1986年在舊金山舉行的IEEE Robotics and Automation Conference,這是一個概率學方法剛剛開始被引入到機器人學和人工智能學的年代。隨后,R.C.Smith等將統(tǒng)計貝葉斯方法用在了描述位姿和幾何不確定性之間的關(guān)系上[2],它表明在機器人移動過程當中對于不同位姿的估計之間必然存在高度的相關(guān)性,這種用概率的方法來描述空間的不確定性與位姿的關(guān)系為后期SLAM技術(shù)的快速發(fā)展提供了一種理論基礎(chǔ)。因此在之后的一段時間里,SLAM問題的研究進入了所謂的“經(jīng)典時期”(1986~2004),這一時期研究的主要內(nèi)容包括基于擴展卡爾曼濾波方法(EKF,extended Kalman filters)[3]、粒子濾波方法(RBPF, rao-blackwellized)[4],極大似然估計方法(MLE,maximum likelihood estimate,)[5],這些方法在SLAM研究上遇到的最大的問題是當樣本點較多時,由于計算復(fù)雜度比較高,很難高效率地在大規(guī)模地圖上來構(gòu)建地圖;2004~2015年進入算法改進時期,人們對SLAM基本理論作了深入探討和拓展,Dissanayake等人對SLAM基本性質(zhì)(收斂性、可觀測性和一致性)以及SLAM算法的時間復(fù)雜度進行深度分析[6],Cadena等人對SLAM算法的魯棒性、可伸縮性、地圖構(gòu)建形式等問題做了系統(tǒng)性的綜述[7],在這一時期,研究者們提出的稀疏特征方法在SLAM技術(shù)中起到重要作用,開源了主要的SLAM庫,存在最大的問題是在未知復(fù)雜環(huán)境中系統(tǒng)的魯棒性較差;2015年以后SLAM算法進入魯棒感知時期,比較有代表的是基于稀疏直接法的視覺里程計(DSO, direct sparse odometry)[8]、ORB-SLAM2[9]等算法,這一時期SLAM問題最大的挑戰(zhàn)是構(gòu)建一致收斂的軌跡和地圖并且控制計算量大小以及如何在保證移動機器人在高精度定位的同時最小化時間復(fù)雜度。
隨著計算機處理性能的大幅提升,基于激光雷達、慣性測量單元(IMU, inertial measurement unit)和相機的SLAM定位導(dǎo)航技術(shù)逐步在移動機器人上有了較好的表現(xiàn)。根據(jù)移動機器人感知周圍環(huán)境傳感器的分類,SLAM技術(shù)主要分為:激光SLAM(lidar SLAM)、視覺SLAM(visual SLAM)以及語義SLAM(semantic SLAM),但是由于SLAM算法應(yīng)用的場景比較廣泛,覆蓋室內(nèi)外、海洋以及航天等復(fù)雜環(huán)境,激光雷達、慣性測量單元和視覺相機都有一定局限性,比如:IMU系統(tǒng)累計誤差較大;激光SLAM重定位能力較差,在追蹤丟失后難以回到工作狀態(tài),且受雷達探測范圍的限制較大;視覺SLAM在無紋理或者光照弱的環(huán)境下表現(xiàn)較差,易受到動態(tài)物體或光源的干擾,且在距離未知的情況下,存在尺度漂移、計算復(fù)雜度高等缺點;而語義SLAM研究依賴神經(jīng)網(wǎng)絡(luò)學習圖像的層次化特征,復(fù)雜環(huán)境下其本身在正確率上存在限制,所以在目前效果往往不盡如人意。
本文第二和第三節(jié)分別對激光和視覺SLAM技術(shù)現(xiàn)狀展開綜述,并從算法性能等指標上列出了常用的開源視覺SLAM方案。第四節(jié)綜述了當前SLAM技術(shù)的研究熱點:多傳感器融合SLAM、語義SLAM的研究現(xiàn)狀。第五節(jié)指出當前SLAM研究的技術(shù)難點并為未來的研究提供了幾個方向。
激光SLAM任務(wù)是移動機器人搭載激光雷達傳感器來估計自身的位姿,同時建立周圍的環(huán)境地圖,主要應(yīng)用于室內(nèi)環(huán)境。有許多算法框架用來解決激光SLAM問題,通常根據(jù)數(shù)學優(yōu)化思想主要分為兩大類:基于濾波器(filter-based)以及基于圖優(yōu)化(graph-based)的激光SLAM。
基于濾波器的激光SLAM方案是激光SLAM中較為早期的位姿估計與建圖方案。在進行機器人位姿估計時主要估計的是機器人在當前時刻的狀態(tài),通過機器人當前時刻的狀態(tài)進行機器人的定位和位姿的構(gòu)圖。
20世紀90年代初,R.Smith等人提出基于擴展卡爾曼濾波SLAM方案[10],使用極大似然估計方法對傳感器獲取的數(shù)據(jù)進行關(guān)聯(lián)。該方案的缺點是構(gòu)建的地圖特征不明顯,數(shù)據(jù)處理能力不足、魯棒性差。
由Milios等人在1997年提出的全局一致的范圍掃描以進行環(huán)境映射思想[11],利用局部與全局的相對空間關(guān)系來制定準則,組合出最優(yōu)的空間關(guān)系作為約束來解決數(shù)據(jù)幀姿態(tài),從而實現(xiàn)一致性。該思想的不足之處是連續(xù)掃描將生成大量必須采樣的數(shù)據(jù),因此數(shù)據(jù)量過多問題在當時的計算水平下很難實現(xiàn)。
Chatila等人在1999年提出了循環(huán)環(huán)境的增量映射方案,利用了一種局部配準和全局相關(guān)的方法,漸進式地從密集范圍數(shù)據(jù)中重建一致的全局地圖,并以恒定時間運行,但是不可避免的會出現(xiàn)累計漂移過大的問題[12]。
Montemerlo等人于2003年提出了FastSLAM方案[13],該方案是基于馬爾可夫聚類算法以及低維卡爾曼濾波來完成定位和地圖構(gòu)建的,是最早能夠?qū)崟r輸出柵格地圖的激光SLAM方案。該方案的不足之處是對于大尺度環(huán)境,若里程計誤差較大則嚴重消耗內(nèi)存,且由于重采樣的隨機性以及采樣次數(shù)增多,粒子耗散問題對地圖的構(gòu)建影響較大。
Blanco等人在2010年提出了基于RBPF的Gmapping方案[14],在一定的條件下,部分狀態(tài)空間向量可以通過利用解析的方法求得,在里程計模型傳播時選擇最優(yōu)的粒子作為真實傳播,從而減少粒子個數(shù)和防止最優(yōu)粒子退化的情況。該方案不足在于非常依賴于里程計信息,不適合構(gòu)建大場景地圖,應(yīng)選擇周圍具有較多特征物的點,這樣在進行回環(huán)的過程中更容易提高正確粒子所占的權(quán)重。Gmapping方案在較小的環(huán)境中能實現(xiàn)較好的建圖效果,是目前應(yīng)用最為廣泛的基于二維激光雷達的SLAM算法。
總體而言,基于濾波器的激光SLAM系統(tǒng)計算資源受限、待估計量比較簡單的情況下,濾波方法比較有效。而Gmapping方案在小場景已經(jīng)成熟,后續(xù)沒有實質(zhì)性的發(fā)展,隨著現(xiàn)代硬件計算能力的不斷提升,人們更多地關(guān)注運用圖優(yōu)化的方式來解決激光SLAM問題。
基于圖優(yōu)化的激光SLAM方案是在濾波器方案后發(fā)展的新興優(yōu)化機器人位姿方案。圖優(yōu)化的激光SLAM可以將先前位姿信息和當前的位姿信息同時進行優(yōu)化,進而提高定位的精確度。在進行機器人的位姿估計時圖優(yōu)化主要以構(gòu)建點云的增量地圖的頂點為機器人走過的位姿,對于大場景以及精度要求不高的環(huán)境具有重要的價值。
Konolige等人在2010年開源了第一個基于圖優(yōu)化算法框架的方案Karto SLAM[15],此方案系統(tǒng)的闡述了稀疏性在SLAM中起的作用,用高度優(yōu)化和非迭代cholesky分解思想進行系統(tǒng)解耦,在整個激光SLAM系統(tǒng)中表現(xiàn)較好,因此在一定程度上替代了基于濾波器的方案。該方案的不足之處在于:系統(tǒng)局部地圖匹配之前需要構(gòu)建好子圖,當搜索范圍大時初始響應(yīng)較慢,容易陷入局部地圖更新失敗。
Kohlbrecher等人在2011年提出的Hector-SLAM算法的主要過程是將激光數(shù)據(jù)點轉(zhuǎn)換到地圖中[16],使用高斯牛頓方法通過與地圖環(huán)境的匹配找到匹配程度最高的機器人位姿,不需要里程計數(shù)據(jù),只根據(jù)激光信息便可構(gòu)建地圖,可以用于地面不平坦區(qū)域及空中飛行器。Hector-SLAM算法的不足之處是對激光雷達傳感器精度要求較高,且不適用于高速運動(尤其是強旋轉(zhuǎn))的場景,在大地圖,低特征場景中,Hector-SLAM的建圖誤差明顯高于Gmapping。
谷歌公司于2016年提出的基于圖優(yōu)化形式的Cartographer開源方案是對Karto SLAM算法的優(yōu)化[17],核心思想是用閉環(huán)檢測來消除構(gòu)圖過程中產(chǎn)生的累計誤差。閉環(huán)檢測主要采用分支界定的思想:分支就是進行拓展,定界就是剪枝,以此來提高運算效率,并且Cartographer方案支持多傳感器數(shù)據(jù)、2D SLAM和3D SLAM建圖。由于算法的實時性相對較高,比較完善的匹配系統(tǒng),包含建圖和定位,一經(jīng)發(fā)布,就受到對精度要求不是太高市場的青睞。該方案的不足是拿存儲空間來換時間效率,為保證實時需求,因而閉環(huán)檢測策略比較落后,尤其是在一些幾何對稱的環(huán)境中,易引起不穩(wěn)定的閉環(huán)。
綜上,基于圖優(yōu)化的激光SLAM允許大規(guī)模場景,通過非線性優(yōu)化方法優(yōu)化累計誤差,允許簡單的閉環(huán)檢測過程,但沒有認識到系統(tǒng)的稀疏性,實時性有待提高[18]??傮w而言,激光SLAM算法框架已確立,相對理論已被研究的較為透徹,成為目前室內(nèi)機器人領(lǐng)域主流的定位方法。
隨著CPU和GPU計算能力的不斷提升以及圖形處理能力的快速發(fā)展,視覺SLAM技術(shù)因其包含的信息量大、適用范圍廣、泛化性強等優(yōu)點受到研究者廣泛關(guān)注。視覺SLAM系統(tǒng)以視覺傳感器獲取的序列圖像數(shù)據(jù)為基礎(chǔ),利用圖像信息和成像模型來估計位姿。過去的十幾年,開發(fā)出了一套比較成熟的視覺SLAM框架,可分為信息采集、前端、后端、閉環(huán)檢測以及建圖五大部分,視覺SLAM框架介紹如圖1所示。
圖1 視覺SLAM框架
傳感器對采集到的數(shù)據(jù)進行預(yù)處理后交給前端,視覺里程計把相鄰時刻的運動“串”起來構(gòu)成了機器人的運動軌跡,根據(jù)每個時刻相機的位置來計算出各像素對應(yīng)的空間點的位姿,在這個過程當中產(chǎn)生的運動畸變以及每次估計的誤差,將不可避免地出現(xiàn)累計漂移,為了解決漂移問題,引入回環(huán)檢測以及后端優(yōu)化部分,回環(huán)檢測部分負責把“機器人是否回到原點”的問題檢測出來,而后端優(yōu)化處理在此過程中產(chǎn)生的噪聲問題,以此來校正機器人行進的軌跡形狀。在視覺SLAM系統(tǒng)中總體來說,前端往往和計算機視覺研究領(lǐng)域更為相關(guān),例如圖像的特征提取與匹配等,后端則主要是濾波與非線性優(yōu)化算法。視覺SLAM系統(tǒng)按照是否需要提取特征,主要分為基于特征點法的視覺SLAM和直接法的視覺SLAM。
基于特征點法的視覺SLAM指的是對輸入的圖像進行特征點檢測及提取,常采用較稀疏的特征點,比如SIFT(scale-invariant feature transform,尺度不變特征變換)[19]和ORB(oriented FAST and rotated BRIEF,旋轉(zhuǎn)不變特征)[20],根據(jù)提取特征點的信息進行數(shù)據(jù)關(guān)聯(lián),從而對運動位姿進行估計[21]。為減小噪聲對位姿估計的影響,通常使用RANSAC算法(random sample consensus,隨機抽樣一致性)來剔除錯誤匹配的特征點,同時根據(jù)2D、3D的特征匹配信息來估計位姿及構(gòu)建地圖,在保存圖像重要信息的同時能有效減少計算量[22]。
2007年Davison等提出的MonoSLAM是基于拓展卡爾曼濾波的單目SLAM系統(tǒng)[23],第一次成功應(yīng)用在移動單目相機條件下,實時且無漂移現(xiàn)象,但EKF存在著計算復(fù)雜性和由于線性化而精度不高的問題。同年Michal等人提出PTAM(parallel tracking and mapping)方法[24],首次區(qū)分出前端和后端,實現(xiàn)了跟蹤和建圖的并行化,通過非線性優(yōu)化的方法引入關(guān)鍵幀,同時將它們串聯(lián)起來優(yōu)化移動軌跡和特征方位來增強算法的實時性,如圖2所示,形成了基于最優(yōu)化的視覺SLAM算法基本形式框架,其后該類型的SLAM算法大多延續(xù)了PTAM的思路。
圖2 PTAM基本框架
隨著RGB-D傳感器(深度相機)的出現(xiàn),基于PTAM框架,Mur-Artal等人在2015年提出了比較完善的基于關(guān)鍵幀的單目ORB-SLAM算法[25],該系統(tǒng)摒棄之前使用SURF特征點只對3D-3D對應(yīng)點進行位姿估計、沒有充分利用2D-2D 、2D-3D對應(yīng)點信息以及SURF特征點的提取計算復(fù)雜度高等影響系統(tǒng)實時性的缺點,改用更加穩(wěn)定的ORB特征,增加了回環(huán)檢測功能,該算法首次使用3個平行線程執(zhí)行視覺里程計、后端優(yōu)化和回環(huán)檢測,通過從圖像中提取ORB特征來進行場景的稀疏重構(gòu),并進行相機位姿的估計,同時對局部和全局范圍內(nèi)的位姿使用BA(bundle adjustment)算法進行優(yōu)化[26],具備較高的精確度,可以實時運行。2017年ETH Zurich開源的基于優(yōu)化的ORB-SLAM2方案,在ORB-SLAM算法基礎(chǔ)上新增了對雙目相機、RGB-D相機的源生支持,是目前市場上主流的具有實時性好、地圖重用和動態(tài)管理關(guān)鍵幀等優(yōu)點的完整VSLAM系統(tǒng)。2020年最新開源的基于ORB-SLAM2和ORB-SLAM-VI構(gòu)建的ORB-SLAM3算法[27],是第一個能夠用單目、立體和RGB-D相機,利用針孔和魚眼鏡頭模型進行視覺、視覺慣性和多地圖(multi-map)的VSLAM系統(tǒng),在視覺里程計部分甚至IMU初始化階段利用最大后驗概率MAP進行估計,可長時間在惡劣視覺信息下生存,當位姿丟失時,它會重用所有先驗信息,利用BA調(diào)整共視關(guān)鍵幀來提高系統(tǒng)的精度。
特征點法存在提取特征點與計算描述子耗時較長、忽略可能有用的圖像信息以及沒有明顯紋理信息、找不到足夠的匹配點來計算相機運動等缺點,因此有研究者基于像素灰度不變性的假設(shè),提出基于直接法的視覺SLAM系統(tǒng):不用計算關(guān)鍵點和描述子,根據(jù)像素灰度信息來最小化光度誤差(photometric error)估計出相機運動以及點的投影,把該問題當作能量最小化問題,位姿估計則通過能量函數(shù)進行迭代優(yōu)化,只要場景中存在明暗變化,直接法就可以工作。
2011年提出的基于單目相機的DTAM是直接法的鼻祖[28],對每個像素點進行概率的深度測量并通過優(yōu)化的方式構(gòu)建稠密深度地圖,該方法通過整幅圖像的對準來估計相機運動,有效降低了位姿的不確定性?;谕瑯拥脑?, Engel等人于2013年提出了基于直接跟蹤的視覺里程計(VO,semi-dense visual odometry)系統(tǒng),隨后將地圖優(yōu)化融入該VO系統(tǒng)并擴展為LSD-SLAM[29],將圖像中的像素以隨機的深度初始化,并利用新產(chǎn)生的數(shù)據(jù)不斷迭代優(yōu)化直至收斂應(yīng)用于半稠密單目SLAM系統(tǒng),是單目直接法在VSLAM上成功應(yīng)用的標志性方法,但是它對相機內(nèi)參和曝光非常敏感。Forster等人在2013年提出的SVO(semi-direct visual odometry)采用“半(稀疏)直接法”最小化圖像塊重投影殘差迭代優(yōu)化更新位姿,不必計算描述子以及稠密和半稠密信息,時間復(fù)雜度低,有較好的實時性,可達到每秒100多幀的速度。在隨后的SVO2.0中[30],速度最高可到每秒400多幀,目前來看在實際應(yīng)用中SVO系統(tǒng)在平視相機中容易丟失,而且丟失后重定位能力差以及累計誤差過大。2016年慕尼黑工業(yè)大學的Engel等人公布的基于視覺里程計的DSO方法[31],它將光度誤差模型和所有模型參數(shù)融入到優(yōu)化函數(shù)中進行聯(lián)合優(yōu)化,提出了完整的光度標定方法,并在多個數(shù)據(jù)集上進行了測試,達到了很好的精度和速度,但由于DSO方法依賴于使用梯度下降來優(yōu)化問題,目標函數(shù)從初始值到最優(yōu)值在一定場景下不單調(diào),帶來的實際誤差相對較大。2020年Liang等人提出了一種基于半直接法的單目視覺SLAM算法,將幀間信息融合到視覺詞袋(BoVW)模型中,并采用了改進的金字塔詞頻模型來評分匹配方案,以解決復(fù)雜環(huán)境下的低紋理、運動物體以及感知混疊等問題[32-33]。
綜上,直接法以更整體的方式處理了數(shù)據(jù)關(guān)聯(lián)問題,需要有不錯的初始估計和較好的圖像,擅長求解連續(xù)圖像的定位。特征點法依賴重復(fù)性較強的特征工程及正確的特征匹配,在環(huán)境紋理較好,角點較多時能較好地計算相機運動,更適合全局匹配與回環(huán)檢測。
在復(fù)雜場景下,使用單一傳感器已無法獨自支撐一個完整的實時定位應(yīng)用。多傳感器融合SLAM是一項提高移動機器人定位精度和魯棒性的技術(shù),不同的傳感器,意味著不同的信息輸入,將不同傳感器獲取的信息綜合處理,就可彌補單一傳感器的缺陷,使其對環(huán)境的感知更加豐富,提高SLAM系統(tǒng)對環(huán)境的擴展能力。比較典型的多傳感器融合方式有:相機融合激光雷達、相機融合IMU、激光雷達融合IMU等。
相機與激光雷達相結(jié)合的多傳感器結(jié)合方式,通過把生成的點云平面轉(zhuǎn)化為相機坐標系,從而獲取周圍環(huán)境信息和更加精確的位姿信息,因此周圍環(huán)境與激光雷達相結(jié)合可以為VSLAM提供點云,視覺也可以為雷達獲得更好的深度信息。
2013年Levinson等人介紹了一種概率監(jiān)測算法和一個連續(xù)校準優(yōu)化器,使相機和激光雷達的校準能夠在線、自動地進行[34]。2015年Singh等人提出了視覺里程計和激光雷達里程計相結(jié)合的總體框架V-LOAM[35],這個方法利用視覺里程計估計機器的運動,基于激光雷達的scan-match來優(yōu)化運動估和點云對準,從視覺里程計和基于掃描匹配的激光雷達里程計兩個方面入手,同時改進了實時的運動估計和點云配準算法性能。Graeter等人在2018年提出了一種基于LIDAR測量的深度提取算法LIMO[36],用于單目相機特征軌跡的提取和運動估計,并利用基于魯棒關(guān)鍵幀的BA算法來估計運動,該傳感器融合的能力在具有競爭力的KITTI數(shù)據(jù)集上得到了較好的驗證。2019年Shao等人提出的VIL-SLAM方法將緊耦合的雙目視覺慣性里程計(VIO)與激光雷達映射和激光雷達增強的視覺環(huán)路閉合結(jié)合在一起,LiDAR掃描匹配輔助估計相對運動,利用累計高保真度的3D點云來形成一個準確的地圖[37]。
相機與IMU結(jié)合的融合是當前較好的融合方式,其具有互補性,而且尺寸小,價格低廉,所以對視覺-慣性導(dǎo)航系統(tǒng)(VINS, visual inertial navigation system)探索研究近年來引起了極大的關(guān)注,在移動端的虛擬現(xiàn)實(VR,virtual reality)、增強現(xiàn)實(AR, augmented reality)以及無人系統(tǒng)的自主導(dǎo)航任務(wù)中發(fā)揮重要作用,具有重要的理論研究價值和實際應(yīng)用需求。這種融合方式的主要思想是利用IMU為視覺SLAM技術(shù)提供精準的尺度信息較為準確的運動觀測,從而提升整體定位結(jié)果的精確性與魯棒性。VINS的基本框架如圖 3所示。
圖3 VINS 基本框架
VINS 系統(tǒng)的狀態(tài)估計是整個SLAM系統(tǒng)的核心問題。主要分為兩類:一類是基于濾波的方案,另一類是基于優(yōu)化的方案。
3.2.1 基于濾波的VINS
2007年Mourikis提出以多狀態(tài)約束卡爾曼濾波(MSCKF, multi-state constraint Kalman filter)的方案[38],融合了IMU信息和視覺信息,由于相機位姿的個數(shù)會遠小于特征點的個數(shù),狀態(tài)向量的維度相較EKF-SLAM大大降低,能適應(yīng)劇烈的運動、一定時間的紋理缺失等場景,適合在CPU資源有限的嵌入式設(shè)備上運行,后來關(guān)于濾波方法的 VINS 很多都是基于 MSCKF 的框架實現(xiàn)的,如在2013年Li 等人提出的一種實時的、能夠?qū)崿F(xiàn)一致估計的EKF-VIO算法(MSCKF2.0)[39],確保了建立的線性系統(tǒng)模型正確的觀測性;在2020年Geneva等人提出基于MSCKF框架的Open-VINS開放性平臺[40],加入了SLAM的局部地圖提升前端VINS定位精度、可擴展的視覺慣性系統(tǒng)模擬器、豐富的算法評估工具箱值得大家學習。
3.2.2 基于優(yōu)化的VINS
2015年Stefan等人提出的OKVIS算法是緊耦合中比較經(jīng)典的,通過IMU測量值對當前狀態(tài)做預(yù)測,從而進行特征提取和特征匹配,對累計的誤差放在一起做優(yōu)化,但是它不支持重定位,也沒有閉環(huán)校正方案[41]。同年Bloesch等人提出的ROVIO是基于稀疏圖像塊的EKF濾波實現(xiàn)的緊耦合單目VIO系統(tǒng),使用FAST角點特征作為路標點,對于每一幀圖像進行提取圖像金字塔,并在EKF框架中的IMU預(yù)測階段對路標點進行預(yù)測以及特征的匹配跟蹤[42]。2017年香港科技大學Shen Shaojie團隊開源的VINS-Mono是一個基于緊耦合滑動窗口非線性優(yōu)化方法的單目VIO系統(tǒng)[43],提出了魯棒的初始化步驟,可以對系統(tǒng)從未知的初始化狀態(tài)加速以及在線的回環(huán)檢測和緊耦合重定位,適合實時無人機導(dǎo)航、大尺度定位和手機AR應(yīng)用。2018年由百度聯(lián)合浙江大學共同發(fā)提出的ICE-BA系統(tǒng)利用SLAM問題的增量特性,高效融合優(yōu)化視覺特征、慣性傳感器數(shù)據(jù)、回環(huán)約束等信息,保證優(yōu)化結(jié)果的全局一致性同時大幅提升了系統(tǒng)的跟蹤能力[44]。2019年浙大開源的基于多平面先驗的高效VIO提出了一個高效魯棒的輕量PVIO系統(tǒng)[45],利用視覺-慣性-平面PnP算法來實現(xiàn)快速的定位,同時基于重投影一致性來可靠地擴展平面,增強在深度高度不確定情況下的跟蹤魯棒性。同年Ye等人提出的PL-VINS是一種基于實時優(yōu)化的具有點和線特征的單目視覺慣性定位系統(tǒng),使用LSD算法來提取線特征,這種策略類似于流行的基于點的幀到模型策略[46]。文獻[27]介紹的基于優(yōu)化的ORB-SLAM3方法,在每次迭代更新時可以通過重線性化的方式來減小線性化誤差,容易獲得更高的精度。
目前來看,基于濾波的VINS方案計算效率高,實時性好,但是線性化近似誤差可能會導(dǎo)致濾波精度降低,基于優(yōu)化的VINS方法容易獲得更高的精度,但代價是計算資源的增加。圖4按照時間節(jié)點列舉了一些具有代表性的 VINS 算法。
圖4 具有代表性的開源VINS算法
這種融合方式主要的算法代表為LOAM、LIO-Mapping等。通過激光SLAM技術(shù)和IMU技術(shù)相融合,在移動機器人運動的過程中提供當前位姿和估計位姿,以及點云去畸變過后的狀態(tài)信息,進一步對位姿估計和地圖構(gòu)建進行優(yōu)化。
Singh等人發(fā)表于2014年的LOAM是基于激光雷達而搭建的在ROS平臺下的SLAM系統(tǒng)[47],通過融合IMU信息來矯正加速度帶來的影響,實現(xiàn)了高頻率低精度的處理雷達的速度估計以及低頻率高精度的標記點云,利用邊緣點和平面點的特征提取方式在保證高精度建圖同時還能保證實時性,但是LOAM系統(tǒng)沒有后端優(yōu)化,也不能處理大規(guī)模的旋轉(zhuǎn)變換。Englot等人發(fā)表于2018年的LeGO-LOAM是以LOAM為框架而衍生出來的新的算法框架[48],在LOAM系統(tǒng)基礎(chǔ)之上改進了特征點的提取形式,添加了后端優(yōu)化以及基于歐式距離的閉環(huán)檢測,因此,構(gòu)建出來的地圖更加完善。Chen等人在2019年發(fā)表于ICRA上的基于緊耦合的LIO-Mapping系統(tǒng)[49],總體是借鑒LOAM和VINS-Mono的思想對激光雷達和IMU測量值的代價進行的聯(lián)合最小化問題,在快速運動或特征點不充足的情況下,能夠以較高的IMU更新頻率輸出精確的狀態(tài)估計值,但沒有解決關(guān)鍵幀之間的部分特征使得信息損失較多問題。除了上面介紹的幾類融合方式外,港科大在2019年發(fā)布的VINS-Fusion是基于VINS-Mono的一項拓展性工作[50],這類融合SLAM技術(shù)不局限于基于某一類硬件配置的定位結(jié)果優(yōu)化,而是著重于為融合更多的傳感器提供一種融合范式(單目、雙目、IMU、GPS),可以在多樣的環(huán)境中保持更高的魯棒性。
語義SLAM將基于神經(jīng)網(wǎng)絡(luò)的語義分割、目標檢測、實例分割等技術(shù)用于SLAM系統(tǒng)中,多用于特征點選取、相機位姿估計,簡而言之語義SLAM使用神經(jīng)網(wǎng)絡(luò)的方法端到端的圖像到位姿、從分割結(jié)果來建立標記點云、場景識別。隨著數(shù)據(jù)量和計算能力的不斷增長,基于深度學習的語義SLAM技術(shù)受到了廣泛關(guān)注,它提供了一種以數(shù)據(jù)驅(qū)動的方式解決SLAM問題的替代方案,在SLAM中加入語義信息提供高層次的理解、高魯棒性、資源感知和任務(wù)驅(qū)動感知。從本質(zhì)上說,深度神經(jīng)網(wǎng)絡(luò)的輸入是一對連續(xù)的圖像,輸出是兩幀圖像之間的估計位姿。
Konda等人在2015年提出將視覺里程計作為一個分類問題,使用卷積神經(jīng)網(wǎng)絡(luò)(ConvNet)來預(yù)測輸入圖像方向和速度的離散變化。同年Costante等人提出了使用卷積神經(jīng)網(wǎng)絡(luò)從密集光流中提取視覺特征來輸出幀到幀的運動估計[51],但是它沒有實現(xiàn)從圖像到運動估計的端到端學習。2017年Bowman等人提出在同個3D點重投影之后,應(yīng)保持語義一致,其量化重投影誤差的方法在于:使用概率模型計算出來的物體中心,重投影到圖像上,應(yīng)該接近檢測框的中心,數(shù)據(jù)關(guān)聯(lián)由一組權(quán)重決定,BA和權(quán)重更新通過EM(expectation-maximization)算法交替優(yōu)化。Clark等人提出了基于深度循環(huán)卷積神經(jīng)網(wǎng)絡(luò)的端到端視覺里程計DeepVO[52],直接從一系列原始的RGB圖像中解算姿態(tài),可以隱式地從大量的圖像中學習和保持全局尺度。Wen等人提出的VINet是第一個將視覺慣導(dǎo)里程計定義為順序?qū)W習問題的工作,使用長短期記憶(LSTM)網(wǎng)絡(luò)從IMU數(shù)據(jù)序列中提取慣導(dǎo)特征,以端到端方式實現(xiàn)VIO。2018年Li等人提出的一種基于非監(jiān)督深度學習的單目視覺里程計UnDeepVo系統(tǒng)[53],旨在利用立體影像對獲取的尺度來訓(xùn)練,從而得到絕對的尺度,在單目方法中是最先進的。2020年由Stumberg等人[54]提出的D3VO框架利用深度學習的深度估計、位姿估計、不確定度估計緊密結(jié)合到視覺里程計方法中,來提升前端追蹤以及后端非線性優(yōu)化性能,在KITTI、EuRoC數(shù)據(jù)集上都取得了不錯的效果。
在語義SLAM中,各個物體在圖像中位置變化可以被預(yù)測出來,產(chǎn)生大量的新數(shù)據(jù)為語義任務(wù)提供更多優(yōu)化條件,且節(jié)省人工標定的成本,有利于機器人自主理解和人機交互。盡管目前的深度學習解決方案仍處于初級階段,現(xiàn)有的模型還不夠成熟,但深度學習為SLAM的研究帶來了新鮮血液,隨著深度學習的不斷發(fā)展,語義SLAM勢必會成為一個研究熱點。
在移動機器人導(dǎo)航系統(tǒng)中,SLAM技術(shù)起著十分重要的作用,當前,SLAM技術(shù)大部分專注于對噪聲的優(yōu)化管理以及從位姿匹配中獲得的更快、更可靠的地標信息解決方案。但是,大多數(shù)SLAM技術(shù)基于高精度定位與實時性建圖兩種并行方法中獲得模糊方法,在實時性以及準確性兩個方面需要找到平衡。SLAM技術(shù)包含資源的分配、地圖優(yōu)化、系統(tǒng)關(guān)鍵參數(shù)及變量的不確定性、位姿跟蹤的準確性、多線程并發(fā)執(zhí)行等,這導(dǎo)致了SLAM技術(shù)在計算成本和內(nèi)存成本上仍然有很多亟待解決的問題,這些問題也同時是移動機器人導(dǎo)航領(lǐng)域未來主要的研究方向。
1) 硬件的適配。SLAM是對傳感器獲取的數(shù)據(jù)進行處理,如多傳感器融合SLAM技術(shù)中,各個模塊傳感器的精度對機器人定位導(dǎo)航的效果影響很大,甚至在整個系統(tǒng)中起到?jīng)Q定性的作用。多個模塊單獨校準和互相校準,最優(yōu)化在線調(diào)整系統(tǒng)參數(shù)以及多傳感器集成化等方面仍是研究者們未來需要解決的問題。
2) 多傳感器數(shù)據(jù)關(guān)聯(lián)。多種傳感器融合時,數(shù)據(jù)處理非常耗時,而且各個傳感器有些觀測相互耦合,有些信息有一定冗余,與期望的實現(xiàn)輕量級、快速響的SLAM系統(tǒng)相矛盾。目前,基于優(yōu)化的SLAM方法已經(jīng)證明比傳統(tǒng)的基于濾波器的方法更強大,但是由于魯棒性較好的SLAM算法很難部署在嵌入式設(shè)備上,從機器人應(yīng)用領(lǐng)域的實用性出發(fā),視覺慣性里程計是一個重要的方法,其中對多傳感器數(shù)據(jù)的融合有相當一部分是基于濾波器的方案?;跒V波器的視覺慣性里程計要么為其開發(fā)更強大的自適應(yīng)模型,要么建立更快的干擾模型或重新配置這些濾波器中的參數(shù),在多個傳感器之間的有效耦合、在精度、魯棒性和有限資源之間取得平衡,以實現(xiàn)更可靠的數(shù)據(jù)關(guān)聯(lián)是一個重要的研究方向。
3)SLAM的魯棒性。如視覺SLAM在光照變化大,弱紋理、低特征條件下跟蹤丟失;激光SLAM在高速場景以及自旋下的運動畸變。未來的SLAM系統(tǒng)可能會朝著泛化性、魯棒性發(fā)展,增加失效保護機制,利用自動調(diào)參的能力調(diào)整系統(tǒng)參數(shù)來適應(yīng)不同的場景,使其能在任意環(huán)境下以低失效率保證長期運行。
4) 多機SLAM。在某些復(fù)雜的大場景環(huán)境中,單機SLAM存在重定位能力差、易漂移等諸多問題。隨著云端技術(shù)的快速發(fā)展,為提升復(fù)雜環(huán)境中SLAM技術(shù)的速度與精度,局部異常不會導(dǎo)致整個系統(tǒng)的癱瘓,多機器人協(xié)同SLAM方案成為一個新的研究方向。目前,多機SLAM主要有兩類:一類為中心化結(jié)構(gòu),從機在小塊區(qū)域進行局部建圖,并將地圖信息實時傳輸給主機進行數(shù)據(jù)關(guān)聯(lián)、優(yōu)化等處理;另一類為去中心化結(jié)構(gòu),多個機器人同步局部建圖,同時多機間進行局部數(shù)據(jù)交換,得到全局一致性地圖以及高精度定位信息。多機器人協(xié)作的問題主要是在通信、計算復(fù)雜度、初始相對位姿估計、傳感器異構(gòu)、地圖融合等方面。解決數(shù)據(jù)在多機間的通信、共享、分發(fā)與處理問題是多機SLAM領(lǐng)域未來主要的研究方向。
5) 在線和長期學習。深度學習思想在諸多領(lǐng)域發(fā)揮出較好的作用,不少研究者試圖利用深度學習中云和端緊耦合的思想重新對SLAM技術(shù)進行整合以求得較好的效果。目前有研究者將視覺SLAM技術(shù)中某些環(huán)節(jié)用深度學習的方法替代,不過在現(xiàn)實場景中并沒有體現(xiàn)出其絕對優(yōu)勢,通常會遇到新的物體和場景。比如深度網(wǎng)絡(luò)遇到的一個重大挑戰(zhàn)就是在極少新的類別的訓(xùn)練樣本去支持一個動態(tài)的SLAM系統(tǒng)進行長期的學習。隨著資源優(yōu)化以及深度學習的不斷發(fā)展,SLAM技術(shù)的一些環(huán)節(jié)會整體被深度學習的某些方法所取代,精度和魯棒性顯著提升的SLAM框架成為目前移動機器人領(lǐng)域研究的一個熱點。
近年來SLAM技術(shù)的研究有了較快的發(fā)展,其創(chuàng)建地圖的好壞對移動機器人之后的自主定位、路徑規(guī)劃以及避障的性能起到一個關(guān)鍵性的作用。本文介紹了SLAM技術(shù)的基本研究現(xiàn)狀,對典型開源的SLAM框架進行分析,討論了SLAM技術(shù)主要發(fā)展趨勢以及存在的挑戰(zhàn),為了能夠滿足機器人實際應(yīng)用中穩(wěn)定的工作要求,未來仍然需要進行算法的改進,提出更加魯棒性的SLAM系統(tǒng)。