周彥,李雅芳,王冬麗,裴廷睿
(湘潭大學 信息工程學院,湖南 湘潭 411105)
移動機器人為實現(xiàn)自主導航,面臨著在哪里、到哪里、怎么去3個需要解決的關鍵問題?!霸谀睦铩笔菣C器人對自身的定位,后兩個問題即機器人需要解決的路徑規(guī)劃問題。對自主移動機器人來說,定位是重中之重,是路徑規(guī)劃的基石。在定位中,機器人首當其沖的任務便是感知周圍的環(huán)境,并對之加以描述。移動機器人的定位和地圖創(chuàng)建已成為了機器人領域的熱點研究問題[1-2]。目前,已經(jīng)有了很多有效方法來解決已知環(huán)境中(有環(huán)境先驗信息)機器人自主定位與已知機器人位置情況下的地圖創(chuàng)建問題[1]。然而在很多環(huán)境中,機器人無法利用全局定位系統(tǒng)進行定位,而且事先獲取環(huán)境先驗信息很困難,甚至是不可能的[3],此情此景下,機器人需要在沒有環(huán)境先驗信息的情況下,在移動過程中一邊計算自身位置,一邊構建環(huán)境地圖,于是移動機器人的同時定位與地圖創(chuàng)建(SLAM)問題[4-5]應運而生。
SLAM也稱為CML (concurrent mapping and localization),最先由Smith Self和Cheeseman于1986年提出[5-6]。這一理論是實現(xiàn)真正全自主移動機器人的關鍵已經(jīng)成為共識[7-8]。SLAM以傳感器作為劃分標準,主要分為激光、視覺兩大類。其中,激光SLAM研究較早,理論和工程均比較成熟,視覺SLAM尚處于實驗室研究階段[1]。SLAM早期研究側(cè)重于使用濾波理論來最小化運動物體的位姿和地圖路標點的噪聲。自21世紀以來,學者們借鑒運動恢復結構SfM(structure from motion)中的方式[9],以優(yōu)化理論為基礎求解SLAM問題,該方法通常以位姿圖的形式描述機器人各時刻的狀態(tài),又稱為基于圖優(yōu)化的SLAM,在VSLAM領域中取得了主導地位[10-11]。
圖像的特征一般可劃分為點特征、直線特征以及邊緣、輪廓特征,其中線、邊緣、輪廓等特征在高維空間進行處理,計算量大;點特征對遮擋相對魯棒、提取速度快并且識別性好,所以應用較多。局部特征點不僅能夠保留圖像重要特征信息,而且也使得信息的數(shù)據(jù)量減少,使計算速度和匹配速度都加快,因此基于特征的VSLAM普遍采用點特征。圖1標出了可作為圖像特征的部分。
圖 1 可作為圖像特征的部分:角點、邊緣、斑點Fig. 1 Parts that can be used as image features: corner,edge, blob
斑點和角點是局部特征點中比較流行的兩種。斑點的重要特征是與周圍區(qū)域有顏色和灰度上的差別。斑點檢測方法應用最廣泛的是利用高斯拉普拉斯算子檢測的方法(LOG),以及利用像素點海森矩陣(二階微分)及其行列式值的方法(DOH)。角點描述的是兩條邊的交點,其檢測方法常用Harris角點檢測算法和FAST角點檢測算法。對特征點的描述有浮點型特征描述子和二進制字符串特征描述子。提取特征點后需對兩幅圖像進行特征匹配,特征匹配采用計算描述子間距離的方法,距離越小相似性越高。對于浮點型描述子采用歐氏距離,對于二進制字符型描述子使用漢明距離(Hamming distance),漢明距離指兩個描述子(二進制串)不同位數(shù)的個數(shù)。當特征點數(shù)量非常大時,快速近似最近鄰(FLANN)算法[12]能夠滿足SLAM的實時性需求。
常用的特征提取和匹配算法有SIFT算法、SURF算法和ORB算法。SIFT[13]算法中使用斑檢測方法和浮點型特征描述子,在建立高斯差分空間金字塔的基礎上提取出具有尺度不變性的特征點,然后對特征點鄰域內(nèi)的點的梯度方向進行直方圖統(tǒng)計。特征點的主方向就是直方圖中比重最大的方向,必要時可選一個輔方向。SIFT特征集旋轉(zhuǎn)不變性、尺度不變性、對圖像變形和光照魯棒等優(yōu)點于一身,不足之處是計算量大,計算速度慢,需要在GPU加速的情況下才可滿足SLAM的實時性需求。SURF[14]算法是對SIFT算法的改進,使用基于DoH的斑點特征檢測方法;在特征點的描述上,SURF算法通過積分圖,利用兩個方向上的Harr小波模板進行梯度計算,然后對鄰域內(nèi)點的梯度方向以扇形的方式進行統(tǒng)計,得到特征點的主方向。SURF算法速度快且穩(wěn)定性好,應用也較為廣泛。Ethan-Rublee在2011年提出的ORB[15]算法使用改進的FAST特征點檢測算法,ORB的特征描述子采用改進后的二進制字符串特征描述子BRIEF[16]。由于采用速度極快的二進制描述子,ORB使得整個圖像特征提取的環(huán)節(jié)大大加速。
單目相機無法直接獲取深度信息,深度信息通過反深度法(inverse depth)、三角測量(三角化)、粒子濾波法等來獲取。Civera等[17]提出了反深度法,該方法旨在減少深度分布非高斯性的影響。反深度法為獲得較好的線性效果,在EKF系統(tǒng)里使用深度的倒數(shù)進行更新。三角測量最早由高斯提出,是指通過在兩個不同地點觀察同一個點的夾角,確定出該點的距離(深度)。使用關鍵幀與稀疏捆集調(diào)整(sparse bundle adjustment,SBA)框架的 VSLAM 系統(tǒng),如文獻[18-21],均采用了該方法。Davison等[22]采用的Particle Filter方法會在特征所在的深度方向上生成多個粒子, 通過粒子的匹配、更新來得到特征點深度的概率分布,不足之處是容易增加系統(tǒng)的不一致性,致使最后概率估計發(fā)散。
雙目相機一般由左和右兩個水平放置的相機組成,通過同步采集到的左右相機的圖像,計算圖像之間的視差,來估計每一個像素的深度。
圖2中,OL、OR為左右相機的光圈中心,黑色框為成像平面,f為焦距,uL、uR為成像的平面坐標,uR為負數(shù)。根據(jù)幾何關系,由相似三角形P-PLPR和 P-OL-OR, 得
整理得
式中d為P在左眼相機圖像和右眼相機圖像中的橫坐標之差,叫做視差。根據(jù)視差就可以估計一個像素離相機的距離z。
圖 2 雙目相機模型Fig. 2 Binocular camera model
深度相機主動測量每個像素的深度直接獲取深度信息[23]。目前的RGB-D相機按原理可分為兩大類,即通過紅外結構光(structured light)來測量像素距離和通過飛行時間法(time of flight, ToF)測量像素距離。在結構光原理中,相機向探測目標發(fā)射一束光線(通常是紅外光),根據(jù)返回的結構光圖案,計算像素離自身的距離。在ToF中,相機向目標發(fā)射脈沖光,然后根據(jù)發(fā)送到返回之間的光束飛行時間,確定物體離自身的距離。在測量深度之后,RGB-D相機完成深度與彩色圖像像素之間的配對,輸出一一對應的彩色圖和深度圖。圖3 是RGB-D相機的原理圖。
圖 3 RGB-D相機原理圖Fig. 3 Schematic of RGB-D camera
SLAM中數(shù)據(jù)關聯(lián)是對兩個路標(VSLAM中路標指圖像特征)進行匹配,確定它們是否對應環(huán)境中的同一物體。在大方向上,特征匹配解決了SLAM中的數(shù)據(jù)關聯(lián)問題,但這個過程中帶有誤差,所以對圖像特征匹配的結果優(yōu)化是必要的,主要方法有固定區(qū)域匹配、Active Matching、1-Point RANAC、幾何約束等。
PTAM(parallel tracking and mapping)[18]及其改進算法主要使用固定區(qū)域匹配的方法。PTAM假定前后兩幀圖像中像素距離在一個閾值內(nèi),超出這個閾值就認為是錯誤匹配,該法適用于特征點距離相機稍遠、深度變化不大的場合,不適用于相機快速運動的場合。
基于EKF濾波的VSLAM系統(tǒng)多采用Davison提出的Active Matching[24]方法。Active Matching方法中,在使用EKF系統(tǒng)運動模型獲得系統(tǒng)狀態(tài)預測的基礎上,估計環(huán)境中的特征點在相機中的投影位置,再進一步處理即可得到圖像中特征點的分布區(qū)域。此方法對相機的絕大部分運動情況魯棒,但如果出現(xiàn)相機姿態(tài)估計協(xié)方差較大的情況,易產(chǎn)生大的特征匹配估計區(qū)域,可能匹配錯誤。
為去除Active Matching中的錯誤匹配,Civera、Grasa等提出1-Point RANSAC[25-26]方法。該方法用隨機選擇的一個匹配點的匹配信息來更新相機姿態(tài),之后計算其他匹配點與估計圖像位置的距離,并判斷這個距離是否在一定的閾值范圍內(nèi),若不在,被認為是外點并剔除它,最后利用得到的內(nèi)點集來更新整個濾波器狀態(tài)。該方法主要應用在基于EKF濾波的SLAM系統(tǒng)中,由于頻繁地更新系統(tǒng)狀態(tài),運算時間代價比較大。
幾何約束方法利用 PNP(perspective N points)[27]、對極幾何[28]等剔除誤匹配點。該方法因利用幾何求解,不需要頻繁更新系統(tǒng)狀態(tài),故而能獲得較好的系統(tǒng)運行速度。但是對于不同的情況該方法需要具體問題具體分析,使用相對應的幾何約束條件,相應地增加了系統(tǒng)的復雜性。
SLAM 中的誤差來源主要為里程計誤差、觀測誤差和錯誤的數(shù)據(jù)關聯(lián)帶來的誤差3個方面。在VSLAM 中,環(huán)境的先驗信息和機器人的位置都是未知的,位置誤差(視覺里程計誤差)不能根據(jù)環(huán)境先驗信息得到有效糾正,故而隨著機器人運動距離的增大位置誤差也逐漸累積。位置誤差的增大會造成錯誤的數(shù)據(jù)關聯(lián),相應的特征標志的誤差也跟著增大;反過來,機器人的位置誤差因為參考了有誤差的特征也會增大。因此,里程計誤差與特征標志之間相互影響使整個VSLAM系統(tǒng)產(chǎn)生累積誤差,無法保證地圖和軌跡的全局一致性。圖4 中,累積誤差使得估計軌跡和真實軌跡相差很大。當前VSLAM系統(tǒng)多采用回環(huán)檢測的方式減小這一誤差。回環(huán)檢測是指機器人識別出曾經(jīng)到達過的場景的能力,當機器人看到兩張相似圖片時,計算圖像數(shù)據(jù)的相似性,如果回環(huán)檢測成功,可以顯著地減小累積誤差。回環(huán)檢測在VSLAM中意義重大,既關系到估計的地圖和軌跡在長時間下的正確性,也可在跟丟時進行重定位,大大增強了系統(tǒng)的魯棒性。
圖 4 真實軌跡與出現(xiàn)累積誤差的軌跡Fig. 4 Real track and track with accumulated error
VSLAM的實現(xiàn)方法分為基于濾波器的方法和基于圖優(yōu)化的方法。其中,基于濾波器的方法只估計當前時刻的位姿,是一種增量式算法;基于圖優(yōu)化的方法根據(jù)所有觀測到的信息,對整個機器人運動軌跡進行估計。前者又稱為在線SLAM,后者又稱為全SLAM(FULL SLAM)。表1 給出了常用的開源VSLAM方案,其中有使用濾波方法的,也有使用優(yōu)化方法的,本文2.1和2.2節(jié)將對典型方案詳述。
表 1 常用開源VSLAM方案Table 1 Commonly used open source VSLAM solutions
2.1.1 基于擴展卡爾曼濾波器(extended kalman filter, EKF)的EKF-VSLAM
21世紀之前, SLAM中的狀態(tài)估計主要使用濾波的方法。在 SLAM 中,系統(tǒng)的狀態(tài)由機器人的位姿和地圖信息(路標)組成。用卡爾曼濾波器(KF)實現(xiàn)SLAM必須遵循運動方程和觀測方程都符合線性高斯模型、系統(tǒng)的狀態(tài)服從高斯分布這兩個假設?;贙F的 SLAM 由系統(tǒng)狀態(tài)預測和更新兩步組成,與此同時,對地圖進行加入新路標、刪除舊路標等操作。KF中,假設系統(tǒng)都是線性的,但是現(xiàn)實中,機器人的運動模型與觀測模型往往都是非線性的。對此,通常采用一階泰勒展開來近似表示非線性模型的擴展卡爾曼濾波器(extended Kalman filter,EKF)方法來實現(xiàn)SLAM。
卡爾曼濾波器是實現(xiàn) SLAM 的基本方法之一[29]。其協(xié)方差矩陣描述了機器人的位置和地圖的不確定信息。當機器人連續(xù)觀測到環(huán)境中的特征標志時,所有協(xié)方差矩陣子陣的行列式呈單調(diào)遞減。每一時刻機器人能觀測到路標不會很多,只有少數(shù)幾個?;诳柭鼮V波器的 SLAM 的時間復雜度為O(n2),n表示地圖中的特征標志數(shù)[30]。為了達到降低 SLAM 的時間復雜度的目的,Leonard 等[31]提出了 DSM (decoupled stochastic mapping) 方法。DSM中機器人位置估計被各子地圖分別保存,當機器人從1個子地圖運動到另1個子地圖時,將前1個子地圖的信息以EKF的方式傳送給后1個子地圖。Williams 等[32]提出的基于 CLSF (constrained local submap filter)的 SLAM 方法涉及全局坐標已知的子地圖,首先構建出這些子地圖,然后機器人運動過程中只利用觀測信息更新自身位置和局部子地圖中的特征標志,并且在時效范圍內(nèi)向全局地圖傳遞局部子地圖信息。Guivant等[33]提出了1種沒有任何信息丟失的 SLAM 優(yōu)化算法 CEKF ( compressed extended Kalman filter)。在CEKF中,已觀測到的地圖路標一分為二分成A 與 B兩部分,比較特別的是,用A來記錄活動子地圖(機器人當前位置的鄰域)。當機器人在A 中運動時,機器人的位置與地圖A 通過觀測信息得到實時更新,與此同時,地圖 B受到子觀測信息的影響被遞歸地記錄;當機器人運動到A的區(qū)域之外時,觀測信息被傳送給子地圖 B,地圖 B進行一次性更新,新的活動子地圖同時被創(chuàng)建。
為了降低SLAM的時間復雜度,Thrun等[34]也提出去相關的方法,即基于稀疏信息濾波器 (sparse extended information filter,SEIF) 的 SLAM 方法,該方法中,只對約束關系進行局部更新,這種局部更新使得信息矩陣近似于系數(shù)矩陣,有效降低SLAM的時間復雜度。
Davison[35]于2007年提出的MonoSLAM,是第一個基于EKF方法實時的單目VSLAM系統(tǒng),雖然初步解決了實時的問題,能夠在線創(chuàng)建稀疏地圖,漂移多少仍然不能確定,目前已經(jīng)停止對其的開發(fā)。
圖5 是基于EKF的單目VSLAM流程圖。
圖 5 基于EKF的單目VSLAM流程圖Fig. 5 Flowchart of EKF-based monocular VSLAM
2.1.2 基于粒子濾波器的FastSLAM
M. Montemerlo等[36-37]提出了1種基于粒子濾波器(particle filter, PF) 的FastSLAM 方法。 Fast-SLAM 包含了機器人定位和特征標志位置估計兩個過程。粒子濾波器法中機器人可能的運動路徑用粒子表示,1個粒子對應著1種可能,每條路徑的好壞由利用觀測信息計算得到的粒子權重來評價。對于每個粒子來說機器人的運動路徑是確定的,故特征標志之間相互獨立且其觀測信息只與機器人的位姿有關。FastSLAM 的時間復雜度為O (kn) ,其中k為粒子個數(shù)[30]。用樹形數(shù)據(jù)結構優(yōu)化后的時間復雜度可以達到O (k log n)[30]。 FastSLAM能夠比較好地表示機器人的非線性 、非高斯運動模型。
EKF存在非線性誤差,且需要存儲、維護和更新狀態(tài)量的均值和方差。如果把路標也加入狀態(tài)的話,由于V SLAM中路標數(shù)量很大,這個存儲量是相當大的,且與狀態(tài)量呈平方增長(因為要存儲協(xié)方差矩陣)。因此,EKF普遍被認為不適用于大型場景。PF采樣所需的粒子數(shù)量,隨維度的增加呈指數(shù)增長,所以僅限于低維的問題,對高維問題不適用。除此之外,濾波器方法在一定程度上假設了馬爾可夫性,如果當前幀與很久之前的幀有關(例如回環(huán)),那么濾波器就會難以處理這種情況。因為濾波這些明顯的缺點,在同等計算量的情況下,非線性優(yōu)化的方法(現(xiàn)代SLAM系統(tǒng))可以取得更好的效果[10]。
另外,在2011年濾波方面出現(xiàn)了基于RFS(random finite set)的方法[38]。RFS是濾波中新興的潮流[38],RFS是以集合為元素的集合,此集合中的元素及元素個數(shù)都是隨機變量。文獻[38]對環(huán)境地圖和傳感器觀測信息用RFS建模,構造聯(lián)合目標狀態(tài)變量的RFS。依據(jù)貝葉斯濾波框架,利用概率假設密度濾波(probability hypothesis density, PHD)[39]實現(xiàn)對機器人位姿和環(huán)境地圖同時估計。該算法避免了數(shù)據(jù)關聯(lián)的問題,相對于EKF和PF能更有效地表達SLAM問題。
現(xiàn)代SlAM系統(tǒng)分為兩個部分:前端和后端[1]。前端提取傳感器數(shù)據(jù)構建模型用于狀態(tài)估計,后端根據(jù)前端提供的數(shù)據(jù)進行優(yōu)化。這個架構如圖6所示。
圖 6 典型SLAM系統(tǒng)Fig. 6 Typical SLAM system
當前SLAM事實標準形成來源于Lu和Milios[40],它是Gutmann和Konolige[41]研究的后續(xù)。典型的SLAM系統(tǒng)如圖6 所示,前端進行特征提取、數(shù)據(jù)關聯(lián)和初值優(yōu)化。前端的數(shù)據(jù)關聯(lián)模塊包括1個短期(局部)數(shù)據(jù)關聯(lián)模塊和1個長期(回環(huán))數(shù)據(jù)關聯(lián)模塊。通常意義下的數(shù)據(jù)關聯(lián)問題在SLAM中是指遞增定位與建圖過程中如何確定當前連續(xù)的傳感器觀測之間或者當前時刻的觀測與最近所創(chuàng)建的局部地圖中特征間的關聯(lián)關系,這也稱為短期(局部)數(shù)據(jù)關聯(lián);回環(huán)檢測中的數(shù)據(jù)關聯(lián)研究機器人沿不同的路徑回到某一循環(huán)的起點時,如何確定當前創(chuàng)建的局部地圖中的特征與以前所創(chuàng)建的循環(huán)起點處地圖中的特征間的關聯(lián)關系,這稱為長期(回環(huán))數(shù)據(jù)關聯(lián)。短期的數(shù)據(jù)關聯(lián)模塊負責關聯(lián)傳感器中連續(xù)的觀測值對應的特征:得到1幀圖像數(shù)據(jù)后,對其進行預處理,篩選出關鍵幀,對圖像進行特征提取、匹配以及運動求解并得到局部地圖,也就是視覺里程計(visual odometry,VO);長期的數(shù)據(jù)關聯(lián)負責將新的觀測值關聯(lián)到舊的路標上,也就是回環(huán)(loop closure)。
前端對視覺傳感器得到的圖像的處理考慮兩幀的信息,出現(xiàn)錯誤匹配后便無法進行,視覺里程計也存在累積誤差;后端用來解決這些問題,對全局進行優(yōu)化。后端優(yōu)化不僅僅考慮相鄰兩幀之間的信息,而且把所有幀(包括很久之前的狀態(tài))的信息都考慮進來,其本質(zhì)上是1個線性最小二乘問題。與此同時,后端也將信息反饋給前端用于回環(huán)檢測、驗證等。上述優(yōu)化問題在SLAM中表示成圖(圖論意義上的圖)的形式。1個圖由若干個頂點,以及連接著這些頂點的邊組成;用頂點表示優(yōu)化變量,用邊表示誤差項。于是對任意1個上述形式的非線性最小二乘問題可以構建與之對應的1個圖。后端優(yōu)化工具常用g2o、Google Ceres、GTSAM等。
2.2.1 基于特征提取的VSLAM
2007年,Klein等[18]提出的PTAM (parallel tracking and mapping)是基于關鍵幀的單目VSLAM系統(tǒng)。PTAM提出并實現(xiàn)了跟蹤與建圖過程的并行化。這是視覺SLAM中首次出現(xiàn)前后端的概念,對后來許多視覺SLAM系統(tǒng)的設計提供了方向。PTAM將姿態(tài)跟蹤和建立地圖設計為兩個線程:姿態(tài)跟蹤線程(前端)不修改地圖,只是用已知地圖來快速跟蹤;建立地圖線程(后端)引入關鍵幀機制,把若干個關鍵幀串起來繼而優(yōu)化其軌跡和地圖,此過程專注于地圖的建立、維護和更新。PTAM在選取關鍵幀、匹配特征、估計相機位置方面十分出色,PTAM在重定位上(跟蹤失敗后需要進行重定位以繼續(xù)跟蹤)也表現(xiàn)突出,然而該算法沒有設計回環(huán)檢測部分,且缺少幀數(shù)過多時的處理,視圖不變特性較差,魯棒性不夠,需要人工干預地圖的構建過程。
RGBD-SLAM-V2[42]是 F. Endres在 2014年提出的一種使用深度相機計算SLAM的系統(tǒng)。RGBDSLAM-V2前端提取3-D點的圖像特征,進行匹配,渲染點云,后端建立位姿圖并用g2o進行優(yōu)化,最后輸出地圖。RGBD-SLAM-V2僅使用深度相機——RGBD相機,同時采用SLAM領域里的圖像特征提取、回環(huán)檢測、點云、圖優(yōu)化等目前非常流行的技術,效果良好,但特征點提取、點云渲染都是費時的環(huán)節(jié),算法實時性有待改進。
2015年,ORB-SLAM[43]算法被提出。ORBSLAM整合當前各種主流的方式計算SLAM,是現(xiàn)代SLAM系統(tǒng)中非常完善且易用的算法之一。ORBSLAM整個系統(tǒng)都是圍繞著ORB特征實現(xiàn)的,對輸入的圖像信息處理時使用ORB特征,在視覺里程計與回環(huán)檢測環(huán)節(jié)使用ORB字典。ORB-SLAM創(chuàng)新地使用實時跟蹤特征點線程、局部捆集優(yōu)化線程以及全局位姿圖的回環(huán)檢測與優(yōu)化線程三線程完成SLAM,能夠確保地圖與軌跡的全局一致性。其中,實時跟蹤特征點線程對每幀新來的圖像提取ORB特征,并與最近的關鍵幀比較,計算特征點的位置并粗略估計相機位姿;局部捆集優(yōu)化線程求解1個包括局部空間內(nèi)的特征點與相機位姿的BA(bundle adjustment)問題;全局位姿圖的回環(huán)檢測與優(yōu)化線程對全局的地圖關鍵幀進行回環(huán)檢測,消除累積誤差。繼PTAM的雙線程結構之后,ORB-SLAM的三線程結構又給研究者帶來新的思路。相比于PTAM,ORB-SLAM有著更為寬松的關鍵幀選取策略。ORB-SLAM在優(yōu)化位姿時循環(huán)優(yōu)化4次,確保得到更多的正確匹配。所有的這些改進使得ORBSLAM具有更好的魯棒性,即使在較差的場景也能順利工作。ORB-SLAM2[44]提供單目、雙目和RGBD接口,這使得它具有更好的泛用性。然而,ORB的建圖部分只含有稀疏的地圖點,只能滿足定位需求,用于導航就不足了。另外,整個ORB-SLAM系統(tǒng)都采用特征點進行計算,對于每張圖都要計算ORB特征,這使得ORB-SLAM系統(tǒng)非常耗時。2.2.2 基于直接法的VSLAM
特征點法在VSLM中占據(jù)著主流地位,但關鍵點的提取與描述子的計算非常耗時,而且使用特征點時,只使用到特征點的信息,其他的像素點都被忽略了。針對這些缺點,出現(xiàn)了直接法VSLAM,該法既不必提取關鍵點也不必計算描述子,而是基于灰度不變假設,根據(jù)像素來直接計算相機運動。直接法是從光流[45]演變而來的,光流描述了像素在圖像中的運動,而直接法則附帶1個相機運動模型。直接法中,假設在各個視角下,1個空間點成像的灰度值是恒定不變的。該方法直接根據(jù)像素亮度信息,估計相機的運動。直接法完全舍去了關鍵點提取和描述子計算,不僅避開了耗時的特征提取,而且保留了所有特征信息。
文獻[46]里的DTAM(dense tracking and mapping),繼續(xù)使用關鍵幀的架構,但對關鍵幀的處理與傳統(tǒng)的特征點提取大相徑庭。DTAM中的直接法(direct method)在默認環(huán)境亮度不變的前提下,對每一個像素的深度數(shù)據(jù)進行反深度(inverse depth)計算和不斷優(yōu)化,從而建立稠密地圖并且穩(wěn)定地跟蹤。 DTAM準、穩(wěn),但對每一個像素都計算使得實時計算困難,需通過GPU加速。
文獻[47]中J. Engel等在2014年提出了LSDSLAM(large-scale direct monocular SLAM),LSDSLAM是直接法在單目SLAM中的實現(xiàn)。LSD-SLAM放棄了BA (bundle adjustment)的方法,利用直接法構建了半稠密地圖,可在實時應用中運行,非常適合機器人使用。LSD-SLAM對相機內(nèi)參和相機曝光非常敏感,且相機快速運動時不容易跟蹤。LSD-SLAM中相機定位的精度明顯比PTAM和ORB低[43]。在回環(huán)檢測部分,目前尚未有在直接法上實現(xiàn)的回環(huán)檢測方式,LSD-SLAM仍需依賴基于特征的回環(huán)檢測方法。
文獻[48]中Forster等提出了介于直接方式和基于特征的方法之間的半直接法SVO。SVO中特征點與直接法混合使用,跟蹤一些關鍵點(無描述子的角點),然后用直接法,根據(jù)這些關鍵點周圍的信息,估計相機的運動和位置。SVO不必計算描述子,處理的信息少,速度極快,在4軸飛行器上效果很好。然而,SVO為了速度和輕量化,沒有回環(huán)檢測、后端優(yōu)化部分,這導致了SVO必然存在累計誤差,且跟丟后難以重定位。
直接法可以構建半稠密乃至稠密的地圖,而特征點法因為自身局限是無法做到的。對比稀疏的點云地圖,比如 ORB-SLAM或PTAM,構建稠密的地圖對相機定位和導航意義更加深刻,作用也更加突出。直接法只要求有像素梯度即可估計相機運動,而無須特征點。上文中的DTAM和LSD-SLAM可以對環(huán)境進行稠密或半稠密的地圖構建,相機位姿通過圖像像素的灰度直接優(yōu)化。直接法避開了提取特征這一繁瑣和耗時的過程,大大提高了系統(tǒng)效率,且在圖像模糊、低紋理環(huán)境和高頻紋理的情況下有著更好的魯棒性。
然而,直接法有其局限性。這些方法采用一個表面反射模型,灰度值不變這一嚴苛的假設需要嚴格遵守?;叶乳g的差異計算是直接法賴以實現(xiàn)的基礎,如果環(huán)境亮度或者圖像整體灰度變化,例如環(huán)境突然發(fā)生光線變換或者相機突然調(diào)整曝光參數(shù),整體的圖像就會變亮或變暗,于是灰度不變假設不再成立,算法失敗。梯度不明顯的像素對環(huán)境重構的精度影響很大,對于非深度相機需要更多的觀測信息以彌補深度的不確定性。直接法可能會受到快門、自動增益和自動曝光的影響,而且對相機的圖像采集速率也有較高的要求。相反,基于特征的VSLAM方法得益于其較好的視圖不變特性,可以在更寬的條件下匹配特征、捆集調(diào)整和優(yōu)化相機位姿。文獻[49]也指出了特征點法相比直接法的優(yōu)勢。
綜上所述,隨著機器視覺技術的興起,VSLAM成為機器人領域越來越熱的問題,該領域的研究者們致力于降低算法復雜度 、減小誤差、提高效率和精度、提高魯棒性等。但是在以下幾個方面還需要更進一步研究。
1)靜態(tài)環(huán)境到動態(tài)環(huán)境
目前,大部分VSLAM系統(tǒng)仍然局限于研究理想情況下的靜態(tài)環(huán)境,然而事與愿違,現(xiàn)實中的環(huán)境通常是復雜的動態(tài)環(huán)境,在動態(tài)環(huán)境下研究VSLAM具有重要的意義。動態(tài)環(huán)境中在語義地圖下做VSLAM是一個可選擇的方法。利用語義地圖先判斷物體是否為可動物體,然后繼續(xù)下一步的動作。
2)與人工智能相結合的VSLAM實現(xiàn)方法
可以將人工智能領域的方法引入到VSLAM中[50],尋找更有效的VSLAM算法,如文獻[51]。上文提及的語義地圖也可嘗試用深度學習的方式實現(xiàn)。
3)多傳感器融合
本文所提到的算法都是在僅用相機作為傳感器的前提下,而在算法的實用方面,僅用單一傳感器的VSLAM有固有局限,如相機快速運動下不容易跟蹤、難以處理動態(tài)的障礙物等,因此,將不同的傳感器數(shù)據(jù)融合起來進行互補,可使系統(tǒng)更加魯棒、精度更高。例如,慣導組合的VSLAM更能適用于復雜的場景。慣性傳感器(IMU)能夠測量傳感器本體的加速度和角速度,與相機傳感器互補,兩者融合之后能得到更完善的VSLAM系統(tǒng),然而如何有效結合這兩者是值得深入探討的問題。
4)多機器人協(xié)作
對于單個機器人的VSLAM系統(tǒng)已經(jīng)有不少的解決方案,然而多機器人VSLAM領域還有通信拓撲、任務規(guī)劃和地圖融合等方面有待研究[52]。
上述VSLAM發(fā)展方向中,結合深度學習的VSLAM和多傳感融合VSLAM將在SALM領域占據(jù)重要地位;動態(tài)環(huán)境下的VSLAM和多機器人協(xié)作VSLAM仍需砥礪前行。
[1]CADENA C, CARLONE L, CARRILLO H, et al. Simultaneous localization and mapping: present, future, and the robust-perception age[Z]. Computer science, 2016.
[2]FUENTES-PACHECO J, RUIZ-ASCENCIO J, RENDóNMANCHA J M. Visual simultaneous localization and mapping: a survey[J]. Artificial intelligence review, 2015, 43(1):55–81.
[3]于金霞, 王璐, 蔡自興. 未知環(huán)境中移動機器人自定位技術[M]. 北京: 電子工業(yè)出版社, 2011.YU Jinxia, WANG Lu, CAI Zixing. Self-localization technologies of mobile robot in unknown environment[M].Beijing: Publishing House of Electronics Industry, 2011.
[4]劉浩敏, 章國鋒, 鮑虎軍. 基于單目視覺的同時定位與地圖構建方法綜述[J]. 計算機輔助設計與圖形學學報, 2016,28(6): 855–868.LIU Haomin, ZHANG Guofeng, BAO Hujun. A survey of monocular simultaneous localization and mapping[J]. Journal of computer-aided design and computer graphics, 2016,28(6): 855–868.
[5]SMITH R, SELF M, CHEESEMAN P. Estimating uncertain spatial relationships in robotics[J]. Machine intelligence and pattern recognition, 1988, 1(5): 435–461.
[6]SMITH R C, CHEESEMAN P. On the representation and estimation of spatial uncertainty[J]. The international journal of robotics research, 1986, 5(4): 56–68.
[7]CSORBA M. Simultaneous localisation and map building[D]. Oxford: University of Oxford, 1997: 699–704.
[8]DISSANAYAKE M W M G, NEWMAN P, CLARK S, et al. A solution to the simultaneous localization and map building (SLAM) problem[J]. IEEE transactions on robotics and automation, 2001, 17(3): 229–241.
[9]AGARWAL S, SNAVELY N, SIMON I, et al. Building Rome in a day[C]//Proceedings of the 12th IEEE International Conference on Computer Vision. Kyoto, Japan, 2009:72–79.
[10]STRASDAT H, MONTIEL J M M, DAVISON A J. Realtime monocular SLAM: why filter?[C]//Proceedings of 2010 IEEE International Conference on Robotics and Automation. Anchorage, AK, USA, 2010: 2657–2664.
[11]梁明杰, 閔華清, 羅榮華. 基于圖優(yōu)化的同時定位與地圖創(chuàng)建綜述[J]. 機器人, 2013, 35(4): 500–512.LIANG Mingjie, MIN Huaqing, LUO Ronghua. Graphbased SLAM: a survey[J]. Robot, 2013, 35(4): 500–512.
[12]MUJA M, LOWE D G. Fast approximate nearest neighbors with automatic algorithm configuration[C]//Proceedings of the 4th International Conference on Computer Vision Theory and Applications. Lisboa, Portugal, 2009:331–340.
[13]LOWE D G. Distinctive image features from scale-invariant keypoints[J]. International journal of computer vision,2004, 60(2): 91–110.
[14]BAY H, ESS A, TUYTELAARS T, et al. Speeded-up robust features (SURF)[J]. Computer vision and image understanding, 2008, 110(3): 346–359.
[15]RUBLEE E, RABAUD V, KONOLIGE K, et al. ORB: an efficient alternative to SIFT or SURF[C]//Proceedings of 2011 IEEE International Conference on Computer Vision.Barcelona, Spain, 2011: 2564–2571.
[16]CALONDER M, LEPETIT V, STRECHA C, et al. BRIEF:binary robust independent elementary features[C]//Proceedings of the 11th European Conference on Computer Vision. Heraklion, Crete, Greece, 2010: 778–792.
[17]CIVERA J, DAVISON A J, MONTIEL J M M. Inverse depth parametrization for monocular SLAM[J]. IEEE transactions on robotics, 2008, 24(5): 932–945.
[18]KLEIN G, MURRAY D. Parallel tracking and mapping for small AR workspaces[C]//Proceedings of the 6th IEEE and ACM International Symposium on Mixed and Augmented Reality. Nara, Japan, 2007: 225–234.
[19]KLEIN G, MURRAY D. Improving the agility of keyframe-based SLAM[C]//Proceedings of the 10th European Conference on Computer Vision. Marseille, France, 2008:802–815.
[20]WEISS S, SIEGWART R. Real-time metric state estimation for modular vision-inertial systems[C]//Proceedings of 2011 IEEE International Conference on Robotics and Automation. Shanghai, China, 2011: 4531–4537.
[21]JAMA M, SCHINSTOCK D. Parallel tracking and mapping for controlling VTOL airframe[J]. Journal of control science and engineering, 2011, 2011: 413074.
[22]DAVISON A J. SLAM with a single camera[C]//Proceedings of Workshop on Concurrent Mapping and Localization for Autonomous Mobile Robots in Conjunction with ICRA. Washington, DC, USA, 2002.
[23]祝風翔. 基于圖像的深度獲取方法研究[D]. 杭州, 中國:浙江大學, 2016.ZHU Fengxiang. Depth map acquisition method study based on image[D]. Hangzhou, China: Zhejiang University,2016.
[24]DAVISON A J. Active search for real-time vision[J]. Proceedings of the 10th IEEE International Conference on Computer Vision. Beijing, China, 2005: 66–73.
[25]CIVERA J, GRASA O G, DAVISON A J, et al. 1-point RANSAC for EKF-based structure from motion[C]//Proceedings of 2009 IEEE/RSJ International Conference on Intelligent Robots and Systems. St. Louis, MO, USA,2009: 3498–3504.
[26]CIVERA J, GRASA O G, DAVISON A J, et al. 1-Point RANSAC for extended Kalman filtering: application to real-time structure from motion and visual odometry[J].Journal of field robotics, 2010, 27(5): 609–631.
[27]GUERRA E, MUNGUIA R, BOLEA Y, et al. Validation of data association for monocular SLAM[J]. Mathematical problems in engineering, 2013, 2013: 671376.
[28]EADE E, DRUMMOND T. Scalable monocular SLAM[C]//Proceedings of 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. New York, NY, USA, 2006: 469–476.
[29]LEONARD J J, DURRANT-WHYTE H F. Simultaneous map building and localization for an autonomous mobile robot[C]//Proceedings of Intelligence for Mechanical Systems, Proceedings IROS’91. IEEE/RSJ International Workshop on Intelligent Robots and Systems’91. Osaka, Japan,1991: 1442–1447.
[30]羅榮華, 洪炳镕. 移動機器人同時定位與地圖創(chuàng)建研究進展[J]. 機器人, 2004, 26(2): 182–186.LUO Ronghua, HONG Bingrong. The progress of simultaneous localization and mapping for mobile robot[J]. Robot, 2004, 26(2): 182–186.
[31]LEONARD J J, FEDER H J S. Decoupled stochastic mapping[J]. IEEE journal of oceanic engineering, 2001, 26(4):561–571.
[32]WILLIAMS S B. Efficient solutions to autonomous mapping and navigation problems[D]. Sydney, Australia: University of Sydney, 2001.
[33]GUIVANT J E, NEBOT E M. Optimization of the simultaneous localization and map-building algorithm for realtime implementation[J]. IEEE transactions on robotics and automation, 2001, 17(3): 242–257.
[34]THRUN S, LIU Yufeng, KOLLER D, et al. Simultaneous localization and mapping with sparse extended information filters[J]. The international journal of robotics research, 2004, 23(7/8): 693–716.
[35]DAVISON A J, REID I D, MOLTON N D, et al. Mono-SLAM: real-time single camera SLAM[J]. IEEE transactions on pattern analysis and machine intelligence, 2007,29(6): 1052–1067.
[36]MONTEMERLO M, THRUN S, KOLLER D, et al. Fast-SLAM: a factored solution to the simultaneous localization and mapping problem[C]//Proceedings of the 18th International Conference on Artificial Intelligence. Pittsburgh, PA, USA, 2002: 2004.
[37]MONTEMERLO M, THRUN S. Simultaneous localization and mapping with unknown data association using FastSLAM[C]//Proceedings of 2003 IEEE International Conference on Robotics and Automation. Taipei, Taiwan,China, 2003: 1985–1991.
[38]MULLANE J, VO B N, ADAMS M D, et al. A random-finite-set approach to Bayesian SLAM[J]. IEEE transactions on robotics, 2011, 27(2): 268–282.
[39]ADAMS M, VO B N, MAHLER R, et al. SLAM gets a PHD: new concepts in map estimation[J]. IEEE robotics and automation magazine, 2014, 21(2): 26–37.
[40]LU F, MILIOS E. Globally consistent range scan alignment for environment mapping[J]. Autonomous robots,1997, 4(4): 333–349.
[41]GUTMANN J S, KONOLIGE K. Incremental mapping of large cyclic environments[C]//Proceedings of 1999 IEEE International Symposium on Computational Intelligence in Robotics and Automation. Monterey, CA, USA, 1999:318–325.
[42]ENDRES F, HESS J, STURM J, et al. 3-D mapping with an RGB-D camera[J]. IEEE transactions on robotics, 2014,30(1): 177–187.
[43]MUR-ARTAL R, MONTIEL J M M, TARDOS J D. ORBSLAM: a versatile and accurate monocular SLAM system[J]. IEEE transactions on robotics, 2015, 31(5):1147–1163.
[44]MUR-ARTAL R, TARDóS J D. ORB-SLAM2: an opensource SLAM system for monocular, stereo, and RGB-D cameras[J]. IEEE transactions on robotics, 2017, 23(5):1255–1262.
[45]BLESER G, HENDEBY G. Using optical flow as lightweight SLAM alternative[C]//Proceedings of the 8th IEEE International Symposium on Mixed and Augmented Reality. Orlando, FL, USA, 2009: 175–176.
[46]NEWCOMBE R A, LOVEGROVE S J, DAVISON A J.DTAM: dense tracking and mapping in real-time[C]//Proceedings of 2011 IEEE International Conference on Computer Vision. Barcelona, Spain, 2011: 2320–2327.
[47]ENGEL J, SCH?PS T, CREMERS D. LSD-SLAM: largescale direct monocular SLAM[C]//Proceedings of the 13th European Conference on Computer Vision. Zurich,Switzerland, 2014: 834–849.
[48]FORSTER C, PIZZOLI M, SCARAMUZZA D. SVO: fast semi-direct monocular visual odometry[C]//Proceedings of 2014 IEEE International Conference on Robotics and Automation. Hong Kong, China, 2014: 15–22.
[49]TORR P H S, ZISSERMAN A. Feature based methods for structure and motion estimation[M]. TRIGGS B, ZISSERMAN A, SZELISKI R. Vision Algorithms: Theory and Practice. Berlin, Heidelberg, Germany: Springer, 2000:278–294.
[50]林輝燦, 呂強, 張洋, 等. 稀疏和稠密的VSLAM的研究進展[J]. 機器人, 2016, 38(5): 621–631.LIN Huican, LYU Qiang, ZHANG Yang, et al. The sparse and dense VSLAM: a survey[J]. Robot, 2016, 38(5):621–631.
[51]GAO Xiang, ZHANG Tao. Unsupervised learning to detect loops using deep neural networks for visual SLAM system[J]. Autonomous robots, 2017, 41(1): 1–18.
[52]張國良, 湯文俊, 曾靜, 等. 考慮通信狀況的多機器人CSLAM問題綜述[J]. 自動化學報, 2014, 40(10):2073–2088.ZHANG Guoliang, TANG Wenjun, ZENG Jing, et al. An overview on the cooperative SLAM problem of multi-robot systems considering communication conditions[J].Acta automatica sinica, 2014, 40(10): 2073–2088.