畢浩博 譚丹丹 蘭崇嘉 高麗
摘要:概述了基于視覺SLAM經(jīng)典框架的五個(gè)組成部分,重點(diǎn)分析了特征點(diǎn)法的簡(jiǎn)單原理及特性、非線性系統(tǒng)和擴(kuò)展卡爾曼濾波以及回環(huán)檢測(cè)的詞袋模型。最后展望了未來基于深度相機(jī)的SLAM研究和發(fā)展方向。
關(guān)鍵詞:視覺SLAM;視覺里程計(jì);后端優(yōu)化;回環(huán)檢測(cè)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)12-0210-02
1背景
近年來,視覺同步定位和地圖構(gòu)建(SLAM)已逐漸穩(wěn)步向?qū)W術(shù)方向發(fā)展全自動(dòng)車輛的可靠性。簡(jiǎn)而言之,SLAM問題包括一組姿態(tài)下的車輛軌跡估計(jì),同時(shí)建造環(huán)境地圖。除了自我定位之外地圖在避障、目標(biāo)識(shí)別、任務(wù)規(guī)劃等方面有著廣泛的應(yīng)用。通過讀取多種傳感器反饋的信息來估計(jì)本體運(yùn)動(dòng)信息和未知環(huán)境的特征信息,并融合反饋信息對(duì)本體位姿進(jìn)行精確估計(jì)以及場(chǎng)景的空間建模是目前研究SLAM問題的常用方式。當(dāng)前SLAM采用的傳感器有激光和視覺等多種類型,視覺傳感器其豐富的色彩和紋理等感知信息在提高幀間估計(jì)精度和閉環(huán)檢測(cè)正確率方面較激光傳感器單一的空間結(jié)構(gòu)感知信息有著明顯的優(yōu)勢(shì)和潛力。
常用的視覺傳感器可分為:?jiǎn)文肯鄼C(jī)、雙目相機(jī)、深度相機(jī)(RGB-D相機(jī))。單目相機(jī)解決SLAM問題時(shí),由于平移之后才能計(jì)算深度,以及無法確定真實(shí)尺度,會(huì)增加后端優(yōu)化、回環(huán)檢測(cè)時(shí)的計(jì)算量。而雙目相機(jī)和RGB-D相機(jī)克服了單目相機(jī)無法知道距離的缺點(diǎn),同時(shí)已知距離的情況下可以通過單張圖像構(gòu)建出場(chǎng)景的三維結(jié)構(gòu)。雙目相機(jī)和RGB-D相機(jī)的差異將在本文中進(jìn)行討論,此處略過。本次探究SLAM問題采用經(jīng)典視覺SLAM框架,如圖1所示。
分為傳感數(shù)據(jù)讀取、視覺里程計(jì)(Visual Odometry,VO)、后端優(yōu)化(Optimization)、回環(huán)檢測(cè)(Loop Closing)、建圖(Mapping)五個(gè)部分,本文將著重討論視覺里程計(jì)、后端優(yōu)化、回環(huán)檢測(cè)這三個(gè)部分。同時(shí)將工作環(huán)境盡量維持在靜態(tài)、剛體,光照變化不明顯、沒有人為干擾的場(chǎng)景,以確保定位與建圖的精準(zhǔn)性。
本文主要對(duì)經(jīng)典的視覺SLAM框架與地圖構(gòu)建問題的分析和討論,系統(tǒng)地介紹和分析本次實(shí)驗(yàn)的傳感器、視覺里程計(jì)、后端優(yōu)化、回環(huán)檢查,以及地圖構(gòu)建等五個(gè)部分。重點(diǎn)分析了特征點(diǎn)法的簡(jiǎn)單原理及特性、非線性系統(tǒng)和擴(kuò)展卡爾曼濾波以及回環(huán)檢測(cè)的詞袋模型。最后展望了未來基于深度相機(jī)的SLAM研究和發(fā)展方向。
2視覺里程計(jì)
里程計(jì)在汽車領(lǐng)域有著廣泛的應(yīng)用,其目標(biāo)是計(jì)量汽車行駛的距離,其計(jì)算方式在理想狀態(tài)下簡(jiǎn)單來講是將輪子周長(zhǎng)與轉(zhuǎn)動(dòng)圈數(shù)的乘積。這種計(jì)算方式如果遇到打滑等特殊情況,就會(huì)出現(xiàn)偏差。當(dāng)然在汽車領(lǐng)域這些誤差微不足道,而對(duì)于機(jī)器人和視覺領(lǐng)域來說差之分豪,謬之千里。在解決SLAM問題中,我們不僅僅要考慮機(jī)器人位移的量,同時(shí)還要考慮機(jī)器人自身的姿態(tài),就將其統(tǒng)稱為位姿。因此傳統(tǒng)的里程計(jì)已經(jīng)不能滿足該領(lǐng)域的需求。
可以確定機(jī)器人位資的方式很多,目前解決SLAM問題上視覺里程計(jì)的表現(xiàn)更為優(yōu)異,無論是在精準(zhǔn)度上,還是在反饋效率上都有著明顯的優(yōu)勢(shì)。視覺里程計(jì)是根據(jù)拍攝圖像來估計(jì)相機(jī)的運(yùn)動(dòng),由這個(gè)特點(diǎn)可以大概分為特征點(diǎn)法,直接法以及Lucas-Kanade光流法這三種方法。本章只介紹特征點(diǎn)法的原理以及特性。
2.1特征點(diǎn)法的簡(jiǎn)單原理及特性
視覺里程計(jì)的目標(biāo)是根據(jù)拍攝圖像來估計(jì)相機(jī)運(yùn)動(dòng),而圖像用色彩和亮度的矩陣組成,如果用矩陣來估計(jì)相機(jī)運(yùn)動(dòng),會(huì)增加計(jì)算難度。因此目前采用圖中較有特征性的點(diǎn),通過改變相機(jī)的角度,通過前后兩張圖片上的特征點(diǎn)來估計(jì)相機(jī)的位資,所以我們也可以說特征是圖像另一種的數(shù)字表達(dá)形式,因此特征點(diǎn)法也成了解決SLAM問題廣為流傳的方法。
組成特征點(diǎn)的兩個(gè)因素分別為關(guān)鍵點(diǎn)和描述子。描述特征點(diǎn)在圖像中的位置,大小以及方向等信息的量成為關(guān)鍵點(diǎn)。而描述子是描述的是某一關(guān)鍵點(diǎn)周圍像素的信息,通常描述子是按照人為設(shè)定的方式去描述的,會(huì)選擇圖像中的角點(diǎn)、邊緣或者區(qū)塊等一些具有代表性作為特征點(diǎn)。當(dāng)然只通過角點(diǎn)這些特征點(diǎn)是無法準(zhǔn)確描述的,如今用SIFT,SURF,ORB等局部圖像特征來描述圖像信息,更加穩(wěn)定。
說到局部特征最為經(jīng)典的就是SIFT,優(yōu)點(diǎn)在于在提取局部特征的同時(shí)考慮了圖像變換過程中光強(qiáng),尺度變換,旋轉(zhuǎn)等可能出現(xiàn)的變化,這也是最理想化的提取特征方式。但是隨之而來的就是需要消耗大量的計(jì)算資源,為了考慮到計(jì)算速度的問題,適當(dāng)?shù)亟档途珳?zhǔn)度和魯棒性是比較可取的方式。目前最具有代表性的實(shí)時(shí)圖像特征就是ORB特征。它采用速度極快的二進(jìn)制描述子BRIEF,加快了提取特征的效率,并且保留了SIFT特征的特性。因此ORB特征在實(shí)時(shí)SLAM里有相對(duì)更好的表現(xiàn)力。為特征匹配提供了更精準(zhǔn)的特征環(huán)境。
大體來講,特征匹配解決了SLAM的數(shù)據(jù)關(guān)聯(lián)的問題,通過圖像之間的描述子進(jìn)行匹配,最后進(jìn)行位資估計(jì)。由于圖像特征的局部特性,這樣就會(huì)存在誤匹配的現(xiàn)象,對(duì)于視覺SLAM發(fā)展來說是一大瓶頸。但是僅通過局部特征來解決誤匹配是十分困難的事情。
3后端優(yōu)化
視覺里程計(jì)處理的圖像信息是兩個(gè)相鄰時(shí)間點(diǎn)內(nèi)的運(yùn)動(dòng)軌跡,其存儲(chǔ)的時(shí)間也十分短暫,這樣會(huì)用過去的時(shí)間來更新當(dāng)前的運(yùn)動(dòng)狀態(tài),也就是運(yùn)動(dòng)狀態(tài)會(huì)存在漸進(jìn)性的問題,因此后端優(yōu)化的目標(biāo)是解決整個(gè)運(yùn)動(dòng)時(shí)間內(nèi)的狀態(tài)估計(jì)問題,用過去時(shí)間點(diǎn)內(nèi)的信息和未來時(shí)間點(diǎn)的信息共同更新運(yùn)動(dòng)。后續(xù)處理因系統(tǒng)的線性問題而方法各不相同,我們主要討論非線性系統(tǒng)和擴(kuò)展卡爾曼濾波(EKF)。
3.1非線性系統(tǒng)和擴(kuò)展卡爾曼濾波
在SLAM問題中,運(yùn)動(dòng)方程和觀測(cè)方程通常都不是線性函數(shù),例如相機(jī)模型需要調(diào)用相機(jī)內(nèi)參和李代數(shù)表示位姿。這并非是線性函數(shù),如果用卡爾曼濾波器構(gòu)成的線性系統(tǒng)處理該函數(shù),得到的分布列誤差很大。其原因是卡爾曼濾波器假設(shè)所有的狀態(tài)和噪聲都滿足高斯分布,但是高斯分布經(jīng)過非線性變化,結(jié)果通常都不會(huì)是高斯分布。因此我們的目標(biāo)是將卡爾曼濾波的結(jié)果分布擴(kuò)展到非線性系統(tǒng)中,這個(gè)過程被稱為擴(kuò)展卡爾曼濾波器(簡(jiǎn)稱EKF)。
簡(jiǎn)單描述其推導(dǎo)過程,先通過卡爾曼濾波器得到線性化的無偏最優(yōu)估計(jì),后經(jīng)過后驗(yàn)概率得到了單次線性近似下最大后驗(yàn)估,從而解決了線性系統(tǒng)無法處理非線性問題的難題。擴(kuò)展卡爾曼濾波器也具有許多局限性。首先它考慮k時(shí)刻的狀態(tài)只通過k-1時(shí)刻相的狀態(tài),這樣也就是一定程度上假設(shè)了馬爾可夫性。而非線性優(yōu)化方法傾向于用使用所有的歷史數(shù)據(jù),這樣就增加了計(jì)算資源的使用。從程序?qū)崿F(xiàn)上來說,EKF需要存儲(chǔ)狀態(tài)量的均值和方差,并對(duì)它們進(jìn)行維護(hù)和更新。如果把路標(biāo)也放進(jìn)狀態(tài)的話,由于視覺SLAM中路標(biāo)數(shù)量很大,這個(gè)存儲(chǔ)量是相當(dāng)可觀的,且與狀態(tài)量呈平方增長(zhǎng)(因?yàn)橐鎯?chǔ)協(xié)方差矩陣)。因此,EKF SLAM普遍被認(rèn)為不可適用于大型場(chǎng)景。
4回環(huán)檢測(cè)
在SLAM經(jīng)典框架中,視覺里程計(jì)提供特征點(diǎn)的提取和軌跡、地圖的初值,而后端負(fù)責(zé)對(duì)這所有的數(shù)據(jù)進(jìn)行優(yōu)化,這兩個(gè)模塊的主要目的是估計(jì)相機(jī)運(yùn)動(dòng)。而只靠視覺里程計(jì)通過相鄰時(shí)間點(diǎn)上的數(shù)據(jù),會(huì)將產(chǎn)生的誤差累積到下一個(gè)時(shí)刻,使得整個(gè)SLAM會(huì)出現(xiàn)累積誤差,最終無法構(gòu)建全局一致的軌跡和地圖。雖然后端能夠估計(jì)最大后驗(yàn)誤差,但是只有相鄰關(guān)鍵幀數(shù)據(jù)時(shí),也無法解決累積誤差問題。而回環(huán)檢測(cè)模塊的關(guān)鍵在于其可以有效地檢測(cè)出相機(jī)經(jīng)過同一個(gè)地方,這樣就可以反饋給后端更多的有效信息,特別是得到一個(gè)全局一致的估計(jì),也就是估計(jì)的軌跡和地圖在長(zhǎng)時(shí)間下的正確性。因此對(duì)SLAM的重要性不言而喻。
回環(huán)檢測(cè)最簡(jiǎn)單的方法就是對(duì)任意兩張圖像都做一遍特征匹配,根據(jù)正確匹配的數(shù)量來判斷哪些圖像存在關(guān)聯(lián)。雖然這種方法有很好的實(shí)效性,但這種想法存在一個(gè)強(qiáng)假設(shè),就是認(rèn)定任意兩個(gè)圖像都可能存在回環(huán)。對(duì)于N個(gè)可能的回環(huán),需要檢測(cè)C2次,這是O(N2)的復(fù)雜度,隨著軌跡變長(zhǎng)增長(zhǎng)太快,在大多數(shù)實(shí)時(shí)系統(tǒng)當(dāng)中是不實(shí)用的。盡管隨機(jī)檢測(cè)在有些實(shí)現(xiàn)中有用,但設(shè)計(jì)回環(huán)檢測(cè)的期望是可以找出可能出現(xiàn)回環(huán)的點(diǎn),這樣就可以減少回環(huán)次數(shù)避免資源浪費(fèi)。這樣的方式大體分為兩種思路:基于里程計(jì)的幾何關(guān)系,或基于外觀?;趲缀侮P(guān)系我們可以知道,當(dāng)前相機(jī)運(yùn)動(dòng)到了之前的某個(gè)位置附近時(shí),檢測(cè)它們有沒有回環(huán)關(guān)系,但是由于累積誤差的存在,沒法正確地發(fā)現(xiàn)運(yùn)動(dòng)到了之前的某個(gè)位置附近。因此,回環(huán)檢測(cè)也無從談起。另一種思路是基于外觀的。它和前端后端的估計(jì)都無關(guān),僅根據(jù)兩張圖像的相似性確定回環(huán)檢測(cè)關(guān)系。這種做法擺脫了累計(jì)誤差,使回環(huán)檢測(cè)模塊成為SIAM系統(tǒng)中一個(gè)相對(duì)獨(dú)立的模塊,擺脫了基于幾何關(guān)系的思路中累積誤差對(duì)結(jié)果的影響。
由于回環(huán)檢測(cè)提供了當(dāng)前數(shù)據(jù)與所有歷史數(shù)據(jù)的關(guān)聯(lián),在跟蹤算法丟失之后,我們還可以利用回環(huán)檢測(cè)進(jìn)行重定位。因此,回環(huán)檢測(cè)對(duì)整個(gè)SLAM系統(tǒng)精度與魯棒性的提升是非常明顯的。
5視覺SLAM的發(fā)展
對(duì)于目前的視覺SLAM來說,未來發(fā)展的方向大體來講分為兩大方向一是往輕量級(jí)、小型化方向發(fā)展,讓SLAM能夠在嵌入式或手機(jī)等小型設(shè)備上良好的運(yùn)行,然后考慮以它為底層功能的應(yīng)用。另一個(gè)方面,則是利用高性能計(jì)算設(shè)備,實(shí)現(xiàn)精密的三維重建、場(chǎng)景理解等功能。在這些應(yīng)用中,我們的目的是完美地重建場(chǎng)景,而對(duì)于計(jì)算資源和設(shè)備的便攜性則沒有多大限制。由于可以利用GPU,這個(gè)方向和深度學(xué)習(xí)亦有結(jié)合點(diǎn),而如何將深度學(xué)習(xí)架構(gòu)的應(yīng)用貫穿于整個(gè)SLAM系統(tǒng)仍是一個(gè)巨大挑戰(zhàn)。