董 佩
(陜西省燃氣設(shè)計院有限公司,西安 710043)
在科技水平不斷飛速發(fā)展的情況下,各類視覺傳感器基本都具有成本低、質(zhì)量輕、圖像信息量大等優(yōu)點,因此使視覺SLAM 算法的研究更加便捷。無人小車通過車身搭載的視覺傳感器(ZED 相機)觀測周圍環(huán)境的一些物體特征,在它的運動過程中通過增量式的方法創(chuàng)建周圍未知環(huán)境的地圖同時,利用已經(jīng)拿到的數(shù)據(jù)進行實時的自身定位,并且還可以通過周圍環(huán)境地圖表示出相機的運動軌跡[1]。一個完整、有效同時還穩(wěn)定的視覺SLAM 系統(tǒng)是復(fù)雜的,是因為它的實現(xiàn)過程包含了視覺傳感器獲取周圍環(huán)境信息、環(huán)境圖像的特征提取和匹配、視覺傳感器的運動估計、后端數(shù)據(jù)的非線性優(yōu)化、生成地圖和運動軌跡這些環(huán)節(jié)。根據(jù)建模以及本文的實際應(yīng)用,采用ORB 描述的視覺前端和基于圖優(yōu)化方法的視覺后端來實現(xiàn)一種視覺SLAM 算法。
圖1 視覺SLAM方法基本流程Fig.1 Basic flow of visual SLAM method
SLAM 的概念在1986年之前還未形成,定位問題也是在已知地圖之后完成。關(guān)于SLAM 定義Smith 等在1986~1990年之間通過研究作出了界定,構(gòu)建地圖和實時定位,也稱CML(Concurrent Mapping and Localization)。隨后得到持續(xù)性發(fā)展,基于SLAM 技術(shù)的軟件和系統(tǒng)在2010年之后大批產(chǎn)生,再加上不斷更新進步的傳感器件,ORB-SLAM、HectorSLAM、SVO 等[2]人進行大量研究。
通常SLAM 算法分為前端、后端、地圖創(chuàng)建這3 大部分[3]。路標(biāo)地圖(landmark map)、度量地圖(metric map)作為兩種常見的地圖構(gòu)建形式,前者主要構(gòu)成包括環(huán)境3D特征點,圖像2D 特征點通過攝影機模型可向世界坐標(biāo)系投影,即完成3D 點的改變。從應(yīng)用特征來看,創(chuàng)建實時性較高、易擴展,具有較小的存儲空間,但是對于地圖內(nèi)容的識別清晰度不高。后者地圖構(gòu)建方式中能夠?qū)h(huán)境中涉及到的顏色、大小及距離等細節(jié)進行精準表述,在全局坐標(biāo)系的基礎(chǔ)上完成度量地圖創(chuàng)建。單目SLAM 構(gòu)建出地圖、RGB-D SLAM 點云圖都屬于這種類型的網(wǎng)格地圖。在障礙躲避、導(dǎo)航及定位等方面該地圖展現(xiàn)出較強的優(yōu)勢,但是相對而言具有較大的存儲空間,擴展性較差,精度高則意味著計算量大。
視覺SLAM 主要是環(huán)境圖中相機的位置,因此需要將相機及成像模型恢復(fù)環(huán)境相結(jié)合,根據(jù)獲取的序列圖像數(shù)據(jù)來確定周圍環(huán)境圖,期間相機呈遞增式運動。視覺SLAM 一般按照前端、后端處理和閉環(huán)檢測的流程來進行數(shù)據(jù)處理,其中參數(shù)初始化、環(huán)境地標(biāo)物和序列圖像數(shù)據(jù)關(guān)聯(lián)處理主要由前端處理負責(zé),提取和匹配序列圖像特征,關(guān)聯(lián)環(huán)境地標(biāo)點及序列圖像關(guān)系,對系統(tǒng)參數(shù)完成初始化這3 個步驟是目前較為主流的程序,這樣才能確保完成定位的自主連續(xù)性,構(gòu)建地圖呈遞增式[4]。視覺SLAM 方法是否穩(wěn)健主要決定因素是前端處理算法適應(yīng)性。利用最優(yōu)化方法評估定位參數(shù)和環(huán)境圖由后端處理負責(zé),要求定位和制圖高精度。在SLAM 系統(tǒng)中閉環(huán)檢測的作用是將運動中產(chǎn)生的所有誤差進行消除,通常需對環(huán)境地標(biāo)觀測情況進行判別。經(jīng)上述步驟就能實現(xiàn)視覺SLAM。
關(guān)聯(lián)環(huán)境地標(biāo)點和序列圖像信息是視覺SLAM 中的關(guān)鍵步驟。序列圖像間的關(guān)聯(lián)則經(jīng)常用到角點特征。環(huán)境光照變化、相機視角及位置都會對獲取序列圖像產(chǎn)生一定影響,所以特征點必須要避免受這些因素的影響。提出局部角點特征作為早期最常使用的方法,比如Harris、Frstner等,光流追蹤、模板匹配則用來完成角點特征追蹤。圖像較小視角變化都可適用于上述方法,但是需要注意的是一旦相機運動呈現(xiàn)不規(guī)則性,追蹤效果都會因視角變化過大而受到嚴重影響,甚至失敗[5]。提取和匹配圖像特征點在局部不變描述方法誕生之后,也能適用于多種復(fù)雜環(huán)境,光照變化、圖像變形都不會對追蹤效果產(chǎn)生較大影響。
為獲取高精度結(jié)果,必須采取必要手段消除存在于環(huán)境感知數(shù)據(jù)中的誤差。對此,概率論原理被研究者們引入,基于貝葉斯規(guī)則對自身位置及環(huán)境人所處環(huán)境之間存在的不確定性進行分析,將環(huán)境觀測數(shù)據(jù)和運動信息相結(jié)合,利用最優(yōu)化方法估計位置參數(shù)和環(huán)境信息之間存在的關(guān)系。卡爾曼濾波(KF)最常應(yīng)用于系統(tǒng)狀態(tài)最優(yōu)估計,該方法的基本準則為最小均方根誤差。為實現(xiàn)系統(tǒng)線性化近似,利用泰勒級數(shù)展開原則的EKF 方法進行估計[6]。在SLAM研究中,圖優(yōu)化方法在近幾年來受到廣泛關(guān)注,線性化誤差得到大幅降低,線性及非線性系統(tǒng)都可適用。但是當(dāng)環(huán)境場景較大,利用圖優(yōu)化方法的時長也會增加,這樣的話其實不利于實現(xiàn)高效計算。因此為降低計算量,一些研究采取相應(yīng)手段降低狀態(tài)矩陣的稀疏性或優(yōu)化迭代次數(shù)來實現(xiàn)這一目的[7]。
當(dāng)外部控制信息約束減少時,視覺SLAM 系統(tǒng)的不確定性不斷顯著,定位誤差也由于運動時間過長而更大。閉環(huán)約束在相機運動經(jīng)過區(qū)域都有可能形成,所以為了降低定位誤差,需獲取一致性的定位結(jié)果,通常需要在圖優(yōu)化中引入該約束。視覺SLAM 運動距離較遠更適用于閉環(huán)檢測[8]。根據(jù)歷史圖像內(nèi)容,對當(dāng)前圖像內(nèi)容的差異性進行判斷是閉環(huán)檢測的主要作用。早期的閉環(huán)檢測具有效率低、計算量多的缺點,隨著技術(shù)更新后續(xù)研究則采取一定手段提高檢測效率,主要措施是初步判斷歷史數(shù)據(jù)關(guān)聯(lián)可能性。
視覺SLAM 前端的大概過程是:首先,從ZED 相機獲取的圖像上進行提取關(guān)鍵點,同時計算該關(guān)鍵點的描述子,然后利用之前所得到的特征點對相鄰的兩幅關(guān)鍵幀圖像進行特征匹配,如果匹配成功就可以通過對極幾何約束關(guān)系得到兩個相鄰關(guān)鍵幀已經(jīng)確定的匹配特征點對應(yīng)的三維坐標(biāo)點。最后,再根據(jù)匹配特征點與三維點的對應(yīng)關(guān)系,估計攝像機的運動變換同時對攝像機的局部位置進行優(yōu)化。綜上所述,可知視覺SLAM 前端可分為特征提取和描述子計算、特征匹配、運動估計和局部姿態(tài)優(yōu)化5 大環(huán)節(jié)。
ORB 算法(Oriented FAST and Rotated BRIEF)譯為定向快速旋轉(zhuǎn),它是由Ethan 等人于2011年通過結(jié)合BRIEF 特征描述算法(Binary Robust Independent Elementary Feather)和FAST 角點提取算法(Features from Accelerated Segment Test)這兩種算法的優(yōu)點進而提出的一種性能比較優(yōu)越的二進制特征點提取算法。ORB 算法的最大優(yōu)點在于它提取特征點的速度非常快,缺點是提取到的特征點信息中不包括特征點的旋轉(zhuǎn)、尺度不變性以及對其他的干擾因素也無法處理。為了彌補這些不足,該算法還引進了FAST算法的思想。所以,ORB 特征點提取算法有兩步分別是特征提取和計算描述子[9]。
特征點的提取是通過FAST 算法來進行的,簡單來說FAST 點是一種角點。該算法主要是通過比較一幅圖像中局部像素灰度值變化比較明顯的地方來進行特征點的提取,這樣的提取方式使得它的效率很高。該算法的思想是將一個隨機的像素點與它周圍的相鄰像素點的灰度值做比較,若灰度值相差較大(可能較亮或可能較暗),那么就先認為它是一個FAST 角點。和其他特征點提取算法相比較來說,這種算法更容易被人理解,其運算速度也會很快,因為它只需要比較兩個像素灰度值的大小。雖然該算法具有速度快的優(yōu)點,但是它也存在著并不具備有方向信息的缺點。因此,ORB 算法為了給檢測到的角點添加尺度不變性和旋轉(zhuǎn)方向的描述還引進了其他的輔助算法。特征點的尺度不變性主要是通過對要處理的圖像構(gòu)建圖像金字塔來實現(xiàn)的。
ORB 算法的描述子采用的是BRIEF 特征描述,它是通過一組二進制描述子向量來組成的。BRIEF 描述子向量中含有許多0 和1,它們是特征點與它附近的兩個隨機像素點的像素灰度值進行比較,然后同時進行編碼,最后就可以得到一組由0 和1 組成的描述子向量。因為BRIEF 描述子的計算方法是通過選取隨機點來實現(xiàn)的,所以它的計算速度會非??於矣捎谑褂昧硕M制存儲,非常適用于實時的圖像匹配。
特征匹配在整個視覺SLAM 的前端抑或是整個過程中都是非常關(guān)鍵的一步。只有正確匹配了圖像,才能優(yōu)化位置和對相機的運動進行估計。特征匹配的作用是確定了當(dāng)前路標(biāo)和之前路標(biāo)的對應(yīng)關(guān)系。在實際的計算過程中,需要計算兩個描述子之間的距離來判斷他們的相似性。因為前面存儲的是二進制特征,所以可以采用計算漢明距離來判斷,因為它是異或操作可以節(jié)省計算的時間。
當(dāng)前面的特征點已經(jīng)提取成功并且不同時刻的相鄰幀之間已經(jīng)進行了匹配,那么就可以通過前面的信息進行相機三維運動的估計。相機運動估計采用2D-2D 的,也稱對極幾何。其中,又可以分成通過求解E 矩陣(本質(zhì)矩陣)或H 矩陣(單應(yīng)矩陣)的奇異值來求解R 和t,主要介紹通過E 矩陣來求解R 和t。
通過E 矩陣求解旋轉(zhuǎn)矩陣和平移向量的大致求解過程是:首先,假設(shè)要求取的相機運動的兩幀圖像的名稱為I1和I2,那么它們之間會存在著一個旋轉(zhuǎn)矩陣R 和一個平移向量t。然后,假設(shè)在拍攝到這兩幀不同圖像時相機的光心分別為O1、O2。最后,考慮在圖像I1中有特征點P1,那么根據(jù)前面的特征匹配關(guān)系它在圖像I2中對應(yīng)的特征點就為P2。如果前面的特征匹配是正確的,那么就說明他們是同一個空間點在兩個成像平面上的投影。它們之間的幾何關(guān)系如圖2。
圖2 對極幾何約束Fig.2 Geometric constraint of opposite pole
從對極幾何關(guān)系圖中,可以很清楚地看到匹配點對之間的空間位置關(guān)系。根據(jù)前面的敘述可以看出主要有兩個步驟。首先,是根據(jù)配對點的像素位置分別求出本質(zhì)矩陣(F=K-TEK-1)或基礎(chǔ)矩陣(E=t^R);然后,是根據(jù)已經(jīng)求得的基礎(chǔ)矩陣或者本質(zhì)矩陣來求解旋轉(zhuǎn)矩陣R 和平移向量t。又因為E 矩陣和F 矩陣只是相差了相機的內(nèi)參矩陣K 的緣故,所以大多情況下是采用本質(zhì)矩陣來求解。對基礎(chǔ)矩陣來說,因為旋轉(zhuǎn)和平移各有3 個自由度的原因,導(dǎo)致它一共擁有6 個自由度,但是又因為尺度等價的原因所以它只有5 個自由度,這樣就意味著可以通過5 對匹配點即可求出E 矩陣。然而因為它的內(nèi)在性質(zhì)的非線性原因,可以采用一種經(jīng)典的八點法來對E 矩陣進行計算,因為這種八點法只利用了E 的線性性質(zhì),所以就可以通過代數(shù)的方式求解。
至此基于ZED 視覺傳感器不需要深度信息的前端就已經(jīng)完成了,前端對于整個系統(tǒng)來說是非常重要的,因為它提取了特征點并且正確匹配了,同時還在這個過程中選取了關(guān)鍵幀為后端以及回環(huán)檢測提供了重要的數(shù)據(jù)信息。關(guān)鍵幀的選取是一個非常重要的步驟,如果將視覺傳感器選取的每一幀都作為關(guān)鍵幀進行后續(xù)的操作,將會極大地增加運算量和內(nèi)存資源。因為特征匹配的原因,所以無人車行進的速度不能過快,否則會導(dǎo)致錯誤匹配。這樣就使得ZED 相機所拍到的圖像具有極大的相似性,所以為了避免這樣的情況出現(xiàn),可以選擇相鄰的那幾幀之間最具有代表性的那一幀作為關(guān)鍵幀。
本文介紹了視覺SLAM 的發(fā)展歷程,以及視覺SLAM研究的背景。然后,利用ZED 雙目相機作為視覺傳感器實現(xiàn)了一種視覺前端SLAM 算法,有效地實現(xiàn)了無人車在未知環(huán)境下的實時定位。SLAM 技術(shù)有廣泛應(yīng)用前景,但是距離技術(shù)發(fā)展成熟還有很長的路要走,需要有更多的科研投入,SLAM 技術(shù)才能夠更好地為人們服務(wù)。