郭金輝,陳秀萬(wàn),王 媛
(1.北京大學(xué)遙感與地理信息系統(tǒng)研究所,北京 100871;2.中國(guó)電子科學(xué)研究院,北京 100041)
同時(shí)定位與地圖構(gòu)建(Simultaneous Localization and Mapping,SLAM)是一種起源于上個(gè)世紀(jì)80 年代的機(jī)器人領(lǐng)域技術(shù),其目標(biāo)是在未知環(huán)境中進(jìn)行建圖并確定機(jī)器人自身位置[1]。SLAM 具有多種分類方式,常見(jiàn)的SLAM 系統(tǒng)根據(jù)傳感器類別區(qū)分可劃分為單目SLAM、雙目SLAM、RGBD-SLAM、激光SLAM、微波SLAM、WiFi-SLAM、視覺(jué)慣性SLAM等。在SLAM 發(fā)展早期,激光SLAM 占據(jù)機(jī)器人領(lǐng)域相關(guān)研究的主要地位。但隨著傳感器不斷發(fā)展,低成本、體積小、信息豐富的相機(jī)和慣性測(cè)量傳感器(Inertial Measurement Unit,IMU)逐漸成為研究熱點(diǎn)[2]。
在實(shí)際應(yīng)用過(guò)程中,單傳感器定位往往存在問(wèn)題。例如相機(jī)獲取的圖像雖然信息豐富但易受環(huán)境干擾(遮擋、運(yùn)動(dòng)物體、無(wú)紋理場(chǎng)景、光照等),在運(yùn)動(dòng)較快時(shí)圖像會(huì)出現(xiàn)模糊。而IMU 屬于內(nèi)部傳感器,其不受成像質(zhì)量影響且采樣頻率高,但長(zhǎng)時(shí)間積分后位姿漂移較大。因此,相比單個(gè)傳感器,相機(jī)和IMU 融合定位方式可取得更高的精度,提高整個(gè)系統(tǒng)的魯棒性[3]。近年來(lái),視覺(jué)慣性SLAM(Visual Inertial SLAM,VISLAM)發(fā)展迅速,在攝影測(cè)量、三維重建、深空探測(cè)、室內(nèi)導(dǎo)航、增強(qiáng)現(xiàn)實(shí)、無(wú)人駕駛等領(lǐng)域已得到廣泛應(yīng)用。
當(dāng)前已有許多視覺(jué)SLAM 的綜述研究[4-6],但VISLAM 的研究綜述相對(duì)較少。本文主要專注于對(duì)VISLAM 的方法進(jìn)行分析和討論,系統(tǒng)地介紹并分析幾種經(jīng)典算法框架及其優(yōu)缺點(diǎn)。另外,本文從硬件和算法層面討論了近年研究熱點(diǎn)與發(fā)展趨勢(shì),并在最后作出總結(jié)。
與視覺(jué)SLAM 一樣,VISLAM 也可分為前端、后端、回環(huán)檢測(cè)和建圖4 個(gè)部分[7]。前端部分通過(guò)對(duì)傳感器數(shù)據(jù)進(jìn)行處理解算,獲得相鄰觀測(cè)間的運(yùn)動(dòng)及局部地圖。后端部分將前端和回環(huán)檢測(cè)的信息作為輸入,通過(guò)濾波或非線性優(yōu)化的方式對(duì)整個(gè)系統(tǒng)進(jìn)行狀態(tài)估計(jì),從而獲得全局一致的軌跡和地圖?;丨h(huán)檢測(cè)用于判斷機(jī)器人是否到達(dá)過(guò)先前的位置,可有效減小累積誤差。而建圖是指根據(jù)自身定位結(jié)果,構(gòu)建與任務(wù)要求對(duì)應(yīng)的地圖的過(guò)程。
1.1.1 視覺(jué)前端
視覺(jué)前端是指利用序列圖像估計(jì)圖像間運(yùn)動(dòng),可分為特征點(diǎn)法和直接法。特征點(diǎn)法首先需要對(duì)圖像提取特征點(diǎn),然后通過(guò)特征匹配實(shí)現(xiàn)數(shù)據(jù)關(guān)聯(lián)。良好的特征點(diǎn)具有可重復(fù)性與獨(dú)特性,并具有一定程度上的平移、旋轉(zhuǎn)和尺度不變性,常用的特征點(diǎn)包括SIFT[8]、SURF[9]、ORB[10]等。SIFT 和SURF 特征點(diǎn)計(jì)算較為復(fù)雜,因此,常用于運(yùn)動(dòng)恢復(fù)結(jié)構(gòu)(Structure From Motion,SFM)問(wèn)題的離線解算,而使用ORB 特征點(diǎn)可以保證SLAM 求解的實(shí)時(shí)性[11]。如果相鄰圖像基線較小,可使用光流跟蹤的方法代替特征匹配[12]。光流跟蹤一般只使用簡(jiǎn)單角點(diǎn)如Harris[13]和FAST[14]角點(diǎn),因此,跟蹤速度較快。但光流跟蹤基于灰度不變假設(shè),因此,光照條件變化較大時(shí)會(huì)導(dǎo)致跟蹤丟失。在實(shí)現(xiàn)數(shù)據(jù)關(guān)聯(lián)后,使用P3P[15]、EPnP[16]、UPnP[17]等方法求得位姿初值,再使用光束法平差(Bundle Adjustment,BA)最小化重投影誤差,從而解得精確相機(jī)位姿。
特征點(diǎn)法將數(shù)據(jù)關(guān)聯(lián)和位姿估計(jì)分為兩個(gè)部分,而直接法通過(guò)最小化光度誤差,以更整體的方式直接計(jì)算得到位姿[18]。由于不需要進(jìn)行特征提取和跟蹤,直接法可實(shí)時(shí)進(jìn)行半稠密甚至稠密建圖[19]。直接法在缺乏角點(diǎn)、重復(fù)紋理的環(huán)境下仍可正常使用,但直接法與光流跟蹤同樣基于灰度不變假設(shè),因此,也存在對(duì)環(huán)境光照變化敏感的問(wèn)題。
1.1.2 IMU 預(yù)積分
IMU 可以獲得自身坐標(biāo)系下的加速度和角速度觀測(cè)值,直接對(duì)IMU 測(cè)量值按時(shí)間進(jìn)行積分可以由一個(gè)時(shí)刻的狀態(tài)量遞推得另一個(gè)時(shí)刻的狀態(tài)量。但每次狀態(tài)量更新后,均需要重新進(jìn)行積分,因此,計(jì)算量較大。而使用預(yù)積分可轉(zhuǎn)換為相對(duì)積分量,表示對(duì)兩個(gè)時(shí)刻狀態(tài)量的約束,從而避免新?tīng)顟B(tài)量依賴先前狀態(tài)的問(wèn)題[20]。由于IMU 的采樣頻率一般比圖像頻率高,通常將兩個(gè)關(guān)鍵幀時(shí)刻之間的所有IMU 觀測(cè)積分起來(lái)。常用的積分形式包括歐拉積分、中值積分和龍格-庫(kù)塔法積分,其中中值積分計(jì)算量小且精度較高,在實(shí)際應(yīng)用中經(jīng)常使用。
早期視覺(jué)SLAM 中使用基于濾波的后端[21],自2007 年P(guān)TAM[22]提出后,基于非線性優(yōu)化的方法成為視覺(jué)SLAM 所使用的主流方法。但在VISLAM 中,待估計(jì)狀態(tài)量維數(shù)比視覺(jué)SLAM 更多而計(jì)算量更大。因此,基于濾波的后端和基于非線性優(yōu)化的后端均十分常見(jiàn),且效果相當(dāng)。濾波與非線性優(yōu)化在貝葉斯框架下相統(tǒng)一,簡(jiǎn)要推導(dǎo)如下。首先機(jī)器人定位模型中運(yùn)動(dòng)方程和觀測(cè)方程可分別表示為:
其中,xk表示k 時(shí)刻的待估計(jì)變量,即位姿和路標(biāo)點(diǎn)等,uk為運(yùn)動(dòng)傳感器輸入項(xiàng),即IMU 測(cè)量信息,zk表示k 時(shí)刻所有視覺(jué)觀測(cè),wk和vk為噪聲項(xiàng),通常假設(shè)滿足零均值高斯分布。后端的任務(wù)即根據(jù)過(guò)去0到k 時(shí)刻的數(shù)據(jù)估計(jì)第k 時(shí)刻的狀態(tài)分布:
其中,設(shè)定上標(biāo)k 表達(dá)1∶k 所有時(shí)刻,而下標(biāo)k 表達(dá)當(dāng)前時(shí)刻。為描述方便,忽略初始值x0得:
利用貝葉斯準(zhǔn)則,可得:
其中,η 等于P(zk|uk,zk-1),為與變量無(wú)關(guān)的歸一化常量。假設(shè)各觀測(cè)值相互獨(dú)立,則化簡(jiǎn)為:
似然部分由觀測(cè)方程給定,先驗(yàn)部分表明當(dāng)前狀態(tài)xk基于過(guò)去狀態(tài)估計(jì)得,按照xk-1時(shí)刻為條件概率展開(kāi)得:
上式表示貝葉斯估計(jì)過(guò)程,其后續(xù)處理分為兩種方法:
1)第一種方法基于馬爾可夫性假設(shè)。一階馬氏性認(rèn)為,k 時(shí)刻狀態(tài)只與k-1 時(shí)刻狀態(tài)有關(guān),而與之前無(wú)關(guān)。故上式先驗(yàn)展開(kāi)部分可簡(jiǎn)化為:
上式最后一項(xiàng)為k-1 時(shí)刻后驗(yàn)概率,因此,將k時(shí)刻后驗(yàn)概率寫(xiě)作遞推的形式得:
上式表示由之前時(shí)刻狀態(tài)遞推得當(dāng)前時(shí)刻狀態(tài)需要不斷迭代(即預(yù)測(cè))和更新。在VISLAM 中對(duì)應(yīng)即使用IMU 進(jìn)行狀態(tài)預(yù)測(cè),并使用視覺(jué)信息進(jìn)行狀態(tài)更新。假設(shè)狀態(tài)量服從高斯分布且整個(gè)系統(tǒng)非線性,則可得到以擴(kuò)展卡爾曼濾波(Extended Kalman Filter,EKF)為代表的濾波器方法。
2)另外一種方法依然考慮k 時(shí)刻狀態(tài)與之前所有狀態(tài)的關(guān)系。為求解狀態(tài)的最優(yōu)估計(jì),需最大化后驗(yàn)概率(Maximize a Posterior,MAP)。當(dāng)狀態(tài)量先驗(yàn)信息未知時(shí),則轉(zhuǎn)換為求解狀態(tài)量的最大似然估計(jì)(Maximize Likelihood Estimation,MLE)。假設(shè)狀態(tài)量噪聲項(xiàng)滿足零均值高斯分布,則最大似然估計(jì)可轉(zhuǎn)換為非線性最小二乘問(wèn)題。在VISLAM中,則有:
其中,第1 項(xiàng)表示視覺(jué)殘差,可以為重投影誤差,也可以為光度誤差。第2 項(xiàng)表示IMU 殘差約束,而P和R 分別為兩個(gè)殘差的協(xié)方差陣。為減小異常值的影響,通常還對(duì)殘差項(xiàng)使用核函數(shù)進(jìn)行魯棒估計(jì),常用的魯棒核函數(shù)有Huber 核、Cauchy 核和Tukey核[23]。
VISLAM 中待估計(jì)參數(shù)量較多,因此,為減少計(jì)算量,通常在非線性優(yōu)化時(shí)只維護(hù)優(yōu)化一個(gè)滑動(dòng)窗口(Sliding Window)內(nèi)的各狀態(tài)量。每當(dāng)有新的幀被觀測(cè)到時(shí),需進(jìn)行窗口滑動(dòng)。為避免約束信息丟失,需對(duì)滑出窗口的幀進(jìn)行邊緣化操作,從而將約束信息保留為下一次求解的先驗(yàn)約束[24-25]。邊緣化操作會(huì)造成填充(Fill-in)現(xiàn)象,使得原先相互獨(dú)立的變量產(chǎn)生依賴,使滑動(dòng)窗口內(nèi)的信息矩陣變得稠密,因此,實(shí)際應(yīng)用中還需盡可能維持信息矩陣的稀疏性。例如文獻(xiàn)[25]提出保留臨近的非關(guān)鍵幀和關(guān)鍵幀,根據(jù)對(duì)當(dāng)前幀的影響選擇直接丟棄或邊緣化滑出窗口的幀。
滑動(dòng)窗口算法優(yōu)化時(shí),信息矩陣由新的測(cè)量信息和之前的測(cè)量信息兩部分構(gòu)成。而這兩部分計(jì)算雅克比矩陣時(shí)線性化點(diǎn)不同,這會(huì)導(dǎo)致信息矩陣的零空間發(fā)生變化,從而在求解時(shí)引入錯(cuò)誤信息,破壞整個(gè)求解系統(tǒng)。還將導(dǎo)致不可觀變量的可觀性(Observability)發(fā)生變化(如航偏角),導(dǎo)致誤差累積。因此,必須使用FEJ 算法(First Estimated Jacobian,F(xiàn)EJ),使不同殘差對(duì)同一個(gè)狀態(tài)求雅克比時(shí),保持線性化點(diǎn)一致,避免求解零空間退化[26]。
回環(huán)檢測(cè)是一個(gè)SLAM 系統(tǒng)關(guān)鍵部分之一,正確檢測(cè)回環(huán)事件是得到全局一致地圖和軌跡的前提,目前常用詞袋法(Bag of Words,BoW)和基于深度學(xué)習(xí)的方法。詞袋法最先起源于文本檢索,通過(guò)統(tǒng)計(jì)文檔詞頻,構(gòu)建直方圖,用于表示該文檔特有特征。其基本思想后來(lái)用于回環(huán)檢測(cè),即首先對(duì)圖像提取合適特征,然后為減少字典冗余進(jìn)行K-means 等算法聚類壓縮,最終訓(xùn)練得詞典,并據(jù)此進(jìn)行匹配檢索[27]。深度學(xué)習(xí)近年來(lái)取得巨大成功,沖擊著各個(gè)學(xué)科和領(lǐng)域[28]。深度學(xué)習(xí)可自主學(xué)習(xí)復(fù)雜圖像特征,從而避免傳統(tǒng)詞袋法需人工設(shè)計(jì)特征的缺點(diǎn),研究表明基于深度學(xué)習(xí)的方法可取得同樣精度且更具普適性[29-30]。相比召回率,回環(huán)檢測(cè)對(duì)準(zhǔn)確率要求更高。因此,實(shí)際應(yīng)用中,除外觀相似性約束外,還需時(shí)間和空間上一致性結(jié)合進(jìn)行驗(yàn)證,以確保將假陽(yáng)性情況降至最少[31-32]。
建圖即根據(jù)所估計(jì)位姿,建立與任務(wù)要求對(duì)應(yīng)的地圖。稀疏路標(biāo)點(diǎn)地圖常用于手機(jī)、機(jī)器人自身定位,計(jì)算量通常較小,但易受光照和場(chǎng)景影響;稠密點(diǎn)云地圖或八叉樹(shù)地圖可用于導(dǎo)航和避障,但一般需要足夠算力才能保證實(shí)時(shí)性[33];面片地圖和TSDF 地圖(Truncated Signed Distance Function,TSDF)能比點(diǎn)云更精細(xì)表示三維重建結(jié)果[34-35];而語(yǔ)義地圖使得與地圖間可以交互,提供更高層次語(yǔ)義信息[36-38]。
視覺(jué)與IMU 信息的融合方式分松耦合和緊耦合兩種,松耦合表示將IMU 定位與視覺(jué)定位位姿直接融合得到結(jié)果,而緊耦合將視覺(jué)約束信息與IMU約束聯(lián)合解算,最終得到待求位姿。因此,根據(jù)融合方式和后端形式,VISLAM 可大致分為以下4 類。
松耦合方法比較直接,如MSF 算法(Multi-Sensor Fusion,MSF)使用擴(kuò)展卡爾曼濾波作為后端,在預(yù)測(cè)階段使用IMU 數(shù)據(jù)進(jìn)行系統(tǒng)狀態(tài)傳遞,而將視覺(jué)前端當(dāng)作黑箱進(jìn)行更新[39]。由于松耦合法結(jié)構(gòu)簡(jiǎn)單,因此,具有計(jì)算量小且運(yùn)算速度較快的優(yōu)勢(shì)。此外這種模塊化架構(gòu)使得系統(tǒng)可方便與其他傳感器結(jié)合,如與GPS、聲吶等。模塊化架構(gòu)使得系統(tǒng)脫離具體模型限制,即使模型不夠準(zhǔn)確,仍可通過(guò)其他觀測(cè)彌補(bǔ)。
Mourikis 等于2007 年提出MSCKF 算法(Multi-State Constraint Kalman Filter)[40],該算法同樣使用擴(kuò)展卡爾曼濾波作為后端,在預(yù)測(cè)階段使用IMU數(shù)據(jù)進(jìn)行系統(tǒng)狀態(tài)傳遞,在更新階段維護(hù)一個(gè)滑動(dòng)窗口。MSCKF 通過(guò)對(duì)路標(biāo)點(diǎn)邊緣化來(lái)給共視幀添加約束,從而實(shí)現(xiàn)既不損失信息,又大大降低計(jì)算復(fù)雜度。
傳統(tǒng)EKF 法只在固定點(diǎn)做線性化近似,無(wú)法保證全局最優(yōu),因此,更容易造成誤差累積。在同等計(jì)算量下,非線性優(yōu)化法效果一般優(yōu)于濾波方法[41]。
文獻(xiàn)[42]提出一種基于優(yōu)化的松耦合VISLAM方法[42],融合結(jié)構(gòu)如圖1 所示。首先通過(guò)直接法計(jì)算得幀間相對(duì)位姿,然后將位姿變換到IMU 坐標(biāo)系下,并直接以約束項(xiàng)的形式加入到IMU 優(yōu)化框架中,從而聯(lián)合估計(jì)得位姿。這類方法計(jì)算量大且精度不夠理想,因此,研究者把目光投向基于優(yōu)化的緊耦合方案。
圖1 基于優(yōu)化的松耦合方法框架
OKVIS[25]是基于關(guān)鍵幀優(yōu)化的緊耦合開(kāi)源VISLAM 系統(tǒng),算法具體流程是通過(guò)IMU 測(cè)量值對(duì)當(dāng)前狀態(tài)做預(yù)測(cè),根據(jù)預(yù)測(cè)進(jìn)行特征提取和特征匹配,從而計(jì)算重投影殘差,同時(shí)IMU 狀態(tài)量預(yù)測(cè)值和優(yōu)化參數(shù)之間構(gòu)成IMU 測(cè)量誤差,最后將視覺(jué)殘差和IMU 殘差放在滑動(dòng)窗口中進(jìn)行聯(lián)合優(yōu)化。另外,為保證系統(tǒng)一致性,OKVIS 采用FEJ 策略,理論上更加準(zhǔn)確。
VIORB[43]同樣是一個(gè)著名的緊耦合VISLAM系統(tǒng),其基于開(kāi)源框架ORBSLAM[11],且與ORBSLAM 同樣包含圖優(yōu)化后端、回環(huán)檢測(cè)及重定位功能。與一般VISLAM 方案不同,VIORB 沒(méi)有采用經(jīng)典的滑動(dòng)窗口結(jié)合邊緣化的方式,而每次使用局部光束法平差進(jìn)行優(yōu)化求解,如圖2 所示。另外,VIORB 提出一種初始化方式,即首先只進(jìn)行單目初始化,然后再對(duì)尺度、重力、速度向量、IMU 零偏進(jìn)行估計(jì)[43]。
圖2 ORBSLAM 局部BA 與VIORB 局部BA 對(duì)比
Vins-mono[44]是香港科技大學(xué)團(tuán)隊(duì)于2017 年開(kāi)源的一個(gè)成熟的VISLAM 系統(tǒng),其主要包括前端、初始化、后端優(yōu)化、閉環(huán)檢測(cè)和全局位姿圖優(yōu)化5個(gè)部分,如下頁(yè)圖3 所示。Vins-mono 前端使用Harris 角點(diǎn)光流跟蹤,而IMU 部分使用預(yù)積分得到觀測(cè)量。初始化部分與VIORB 類似,采用松耦合方式進(jìn)行。即首先通過(guò)SFM 初始化,然后以此為運(yùn)動(dòng)參考估計(jì)其他參數(shù),再將視覺(jué)坐標(biāo)系與世界坐標(biāo)系對(duì)齊。后端部分進(jìn)行一個(gè)滑動(dòng)窗口優(yōu)化,并采用一種邊緣化策略來(lái)盡可能防止信息丟失或冗余[44],如圖4 所示:1)當(dāng)滑動(dòng)窗口中第二新的圖像幀為關(guān)鍵幀,則邊緣化最老的幀,以及上面的路標(biāo)點(diǎn);2)當(dāng)滑動(dòng)窗口中第二新的圖像幀不是關(guān)鍵幀,則丟棄這一幀上的視覺(jué)測(cè)量信息,并將IMU 預(yù)積分傳給下一幀。此外,為提供全局一致地圖,Vins-mono 還加入閉環(huán)檢測(cè)、重定位等功能,使整個(gè)系統(tǒng)更加完整、魯棒。
隨著技術(shù)的發(fā)展和越來(lái)越多開(kāi)源系統(tǒng)的出現(xiàn),VISLAM 技術(shù)正逐漸趨于成熟。然而盡管在理想條件下已經(jīng)可以達(dá)到很高的精度和計(jì)算效率,如需真正投入實(shí)際應(yīng)用,算法的魯棒性、實(shí)時(shí)性和準(zhǔn)確性仍需進(jìn)一步提高,硬件和算法的許多問(wèn)題尚待進(jìn)一步解決。
圖3 Vins-mono 系統(tǒng)框架圖
圖4 Vins-mono 邊緣化策略
VISLAM 不僅是一種算法,也是一種系統(tǒng)工程。其對(duì)硬件質(zhì)量依賴較強(qiáng),實(shí)際效果對(duì)相機(jī)IMU 外參、相機(jī)IMU 時(shí)間戳延遲、IMU 零偏等參數(shù)均十分敏感。盡管有研究已經(jīng)可以通過(guò)算法減弱卷簾相機(jī)、相機(jī)IMU 時(shí)間戳未對(duì)齊等問(wèn)題的影響,但VISLAM 系統(tǒng)精度提升仍需硬件質(zhì)量的提升[45-46]。
此外,相機(jī)傳感器本身具有天然缺陷。例如圖像受光照變化影響很大,且存在運(yùn)動(dòng)模糊,基本無(wú)法滿足無(wú)人機(jī)、無(wú)人駕駛等高速運(yùn)動(dòng)下的實(shí)際應(yīng)用。近年來(lái),事件相機(jī)(Event Camera)[47]引起許多研究人員關(guān)注。事件相機(jī)僅響應(yīng)每個(gè)像素亮度變化,并以一組異步事件的形式表示,其中每個(gè)事件包括亮度變化的時(shí)空坐標(biāo)及其正負(fù)號(hào),如圖5 所示。事件相機(jī)具有高動(dòng)態(tài)響應(yīng)范圍(140 dB,而普通相機(jī)約60 dB)和低功耗的優(yōu)勢(shì),且響應(yīng)時(shí)間小于1 ms,因此,幾乎不存在運(yùn)動(dòng)模糊。
圖5 普通相機(jī)與事件相機(jī)對(duì)比
基于事件相機(jī)的上述優(yōu)勢(shì),蘇黎世大學(xué)研究團(tuán)隊(duì)提出基于事件相機(jī)的VISLAM 系統(tǒng)[48]。算法首先將一段時(shí)間內(nèi)事件進(jìn)行運(yùn)動(dòng)補(bǔ)償,然后合成得到事件圖像[49],如圖6 所示。前端對(duì)每一幀事件圖像進(jìn)行光流跟蹤,后端使用緊耦合的方式對(duì)視覺(jué)殘差和IMU 殘差進(jìn)行非線性優(yōu)化。后來(lái)該團(tuán)隊(duì)對(duì)此系統(tǒng)進(jìn)行改進(jìn),提出終極SLAM(UltimateSLAM)[49]。UltimateSLAM 在之前基礎(chǔ)上,引入普通相機(jī)作為第3 種傳感器,將普通圖像的視覺(jué)殘差作為額外約束。從而共同發(fā)揮3 種傳感器優(yōu)勢(shì),在極具挑戰(zhàn)的數(shù)據(jù)集上取得了很好的效果。
圖6 合成事件圖像示意圖
VISLAM 等多傳感器融合方案可充分發(fā)揮不同傳感器優(yōu)勢(shì),實(shí)現(xiàn)精確魯棒的定位與建圖,但也同時(shí)造成待估計(jì)參數(shù)維數(shù)增加。盡管如今設(shè)備計(jì)算能力不斷提高,仍需從算法上加速后端優(yōu)化過(guò)程。
后段加速有許多不同的方案,其中增量?jī)?yōu)化是近年來(lái)的一個(gè)研究熱點(diǎn)。增量平滑和建圖(Incremental Smoothing and Mapping,iSAM)算法使用QR 分解,每次迭代只更新增量方程的一小部分[50]。在此基礎(chǔ)上,iSAM2 還考慮消元順序?qū)τ?jì)算量的影響,其在計(jì)算中動(dòng)態(tài)維護(hù)一個(gè)貝葉斯樹(shù),以此確定消元順序,從而減少不必要計(jì)算,加快后端求解速度[51]。
iSAM 主要針對(duì)信息矩陣稀疏情況,比如大尺度SFM 問(wèn)題。而VISLAM 中經(jīng)常會(huì)用到滑窗優(yōu)化法,滑窗中信息矩陣結(jié)構(gòu)稠密,此時(shí)iSAM 算法失效。ICE-BA 算 法(Incremental,Consistent and Efficient Bundle Adjustment,ICE-BA)[52]提出三點(diǎn)解決該問(wèn)題:1)在全局BA 優(yōu)化時(shí),使用增量方式進(jìn)行,即每次迭代時(shí)只對(duì)變化的相機(jī)或路標(biāo)點(diǎn)進(jìn)行更新[53];2)在局部滑窗BA 優(yōu)化時(shí),采用分段BA 方式來(lái)維持滑窗內(nèi)稀疏性結(jié)構(gòu);3)在滑窗邊緣化時(shí),采用相對(duì)邊緣化方式,以保證局部BA 優(yōu)化和全局BA 優(yōu)化對(duì)精度貢獻(xiàn)一致。ICE-BA 通過(guò)采用這些技巧,保障了VISLAM 求解的實(shí)時(shí)性。
3.3 語(yǔ)義SLAM
隨著深度學(xué)習(xí)的廣泛應(yīng)用,SLAM 與深度學(xué)習(xí)結(jié)合更加緊密。一些研究利用深度學(xué)習(xí)對(duì)圖像進(jìn)行識(shí)別、檢測(cè)和分割,從而得到語(yǔ)義地圖[54-57]。語(yǔ)義建圖雖然在增強(qiáng)現(xiàn)實(shí)和三維重建中比較重要,但其對(duì)SLAM 本身促進(jìn)有限。另一些研究將深度學(xué)習(xí)引入SLAM 本身的位姿估計(jì)中,但這些方法效果一般,目前還未成為主流[58-59]。還有一些研究利用深度學(xué)習(xí)檢測(cè)或分割出物體,然后使用物體實(shí)例地圖替代傳統(tǒng)路標(biāo)點(diǎn)地圖,從而為SLAM 系統(tǒng)提供語(yǔ)義觀測(cè),如圖7 所示[60-62]。這類物體級(jí)SLAM(Object SLAM)通過(guò)將圖像的高層語(yǔ)義信息納入定位流程中,從而能一定程度上克服大時(shí)間跨度下光照、天氣、季節(jié)、場(chǎng)景結(jié)構(gòu)變化等影響。隨著訓(xùn)練數(shù)據(jù)集的增多和深度學(xué)習(xí)技術(shù)的發(fā)展,語(yǔ)義SLAM 定將大大提高SLAM 系統(tǒng)的準(zhǔn)確性和魯棒性。
圖7 物體實(shí)例語(yǔ)義地圖
近年來(lái),隨著移動(dòng)終端、無(wú)人機(jī)、機(jī)器人的快速發(fā)展,SLAM 技術(shù)也發(fā)展迅速。VISLAM 作為成熟的多傳感器融合方案之一,取得了不錯(cuò)的精度和魯棒性。盡管近年來(lái)VISLAM 在困難條件下定位與建圖取得了很大的進(jìn)步,但其魯棒性、實(shí)時(shí)性和準(zhǔn)確性仍有待提高,這勢(shì)必會(huì)與硬件提升、后端加速、深度學(xué)習(xí)等內(nèi)容進(jìn)行結(jié)合,從而真正滿足實(shí)際應(yīng)用要求。