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