趙小勇,章倫琿,王 勇,梁兵兵,張祖芳,2
(1.合肥工業(yè)大學 機械工程學院,合肥 230009;2.合肥工業(yè)大學(馬鞍山)高新技術研究院,安徽 馬鞍山 243000)
民航運輸作為現(xiàn)代五大交通運輸方式之一,占據(jù)較大的市場份額,近年來民航業(yè)發(fā)展迅速,中國逐漸從“民航大國”向“民航強國”轉變[1]。隨之產(chǎn)生的機場巨大客流量以及公眾需求現(xiàn)狀對機場服務裝備提出了高要求[2]。結合當前新冠病毒具有人傳人的特點,疫情在全球肆虐,而機場又是全球長途出行的重要場所,迫切需要一種無人機場服務設備來代替人來提供基礎服務,保障機場工作人員的生命安全,抑制直接傳播的風險。
針對機場室內(nèi)復雜廣闊的環(huán)境,服務移動平臺在其中完成即時定位與地圖構建是實現(xiàn)“自主”服務功能的前提,而SLAM (simultaneous localization and mapping)技術能很好地解決這一問題[3]。該技術能為移動設備提供一種從未知室內(nèi)環(huán)境出發(fā),在沒有環(huán)境先驗信息的條件下,通過自身攜帶的傳感器,在移動過程中獲取周圍環(huán)境信息的能力,具體表現(xiàn)為移動設備的實時定位和環(huán)境地圖構建。
早期SLAM技術基本采用濾波器方法,依賴激光傳感器實現(xiàn),經(jīng)過多年發(fā)展成為比較成熟的方案。激光SLAM擁有高精度的優(yōu)勢,但其設備成本過高,應用場景小,地圖缺乏語義信息。隨著芯片技術和視覺傳感器的發(fā)展,VSLAM(visual simultaneous localization and mapping)技術突飛猛進,使其成為未來機器人研究領域的主流方向。按照傳感器解決方案,能細分出不同SLAM技術:從2007年被Davison[4]提出的第一個Mono-SLAM單目算法,到Stereo-SLAM雙目視覺算法,再到基于深度相機的RGB-D SLAM。
本文應對機場復雜環(huán)境,模塊化地設計和搭建一款基于視覺SLAM的自主移動機器人樣機[5]。它采用一臺標定過內(nèi)外部參數(shù)的Kinect 2.0深度相機作為傳感器來進行環(huán)境數(shù)據(jù)采集,在ROS系統(tǒng)中完成彩色圖像與深度圖像的特征點識別與匹配處理,再利用Gmapping建圖和RViz平臺可視化顯示。樣機被投入到實驗室場地進行試驗,構建出測試環(huán)境的二維地圖和三維點云圖。
為了滿足機場復雜環(huán)境的要求,保障避障和語音服務等功能的實現(xiàn),整個移動平臺系統(tǒng)采用模塊化設計,包括:電機驅動模塊、電源模塊、通訊模塊、紅外避障模塊、視覺模塊、語音模塊、循跡模塊等。這些模塊各司其職,在驅動程序和視覺算法的控制下實現(xiàn)完整的系統(tǒng)功能,設備的整體系統(tǒng)原理如圖1所示。

圖1 視覺移動平臺系統(tǒng)運行原理框圖
為保證原理樣機移動底盤能在多變的機場環(huán)境中,向任意方向平移與旋轉,執(zhí)行層的輪胎選用三英寸麥克納姆輪,它能使機器人在移動過程中保持穩(wěn)定。采集麥克納姆輪的運動信息來估計移動機器人的位姿,增加機器人運動模型里程計數(shù)據(jù)的采集,保證移動平臺后續(xù)能為SLAM里程計計算提供位移補償?shù)臄?shù)據(jù)支持,從而能在沒有可視化數(shù)據(jù)的前提下來預測攝像機位姿,這比通過概率模型得到的預測值更加準確。裝配各系統(tǒng)部件和結構框架平臺,最后的移動平臺樣機實物如圖 2所示。

圖2 機場視覺SLAM移動平臺原理樣機
與電磁導引相比,視覺相機傳感器可適用于未知的動態(tài)環(huán)境,不局限于已知環(huán)境的循跡導航;與單目視覺傳感器相比,RGB-D相機可以同時獲取目標的彩色圖像信息和深度圖像信息;與雙目視覺傳感器相比,雙目系統(tǒng)獲取深度信息是通過間接解析的方式,導致計算量大,RGB-D相機能通過紅外結構光或TOF原理,直接發(fā)射和接收光信號,測量出相機和物體的距離,從而大大減少獲取深度信息的計算量,測距精度更高,但容易受到陽光的影響,更適合在機場室內(nèi)這種環(huán)境中使用。
Kinect 2.0相機能調(diào)用紅外發(fā)射器主動發(fā)射近紅外電磁波,當投射到粗糙物體或是穿透毛玻璃后,會發(fā)生漫反射,形成隨機的反射斑點,深度攝像頭則通過讀取散斑的信息,創(chuàng)建探測范圍內(nèi)的深度圖像,而后融合在彩色圖像中,豐富場景中像素點的深度信息。
相機的彩色攝像頭和深度攝像頭在位置結構上有偏移,為確保相機獲取的彩色圖像和深度圖像像素點一一對應,需要通過標定得知相機的內(nèi)外部參數(shù)。
本文采用張正友[6]教授提出的單平面棋盤格相機標定法,首先利用圖像之間的特定關系來對相機參數(shù)進行初步估計,然后通過優(yōu)化函數(shù)對所構造參數(shù)進行迭代優(yōu)化處理。該方法的原理性質介于傳統(tǒng)標定法與自標定法之間。設定棋盤格所在平面為世界坐標系OXWYWZW中,ZW=0處,各點坐標表達為(XW,YW,0,1),通過相機坐標系與世界坐標系的坐標變換:
(1)
令P=[p1p2p3]=λA[r1r2T],其中,λ為比例因子,p1,p2來自P=[p1p2p3]的3×3單應性矩陣,每幅圖像存在如下關系:
(2)
其中:A為相機內(nèi)部參數(shù)矩陣:

(3)
不妨令:
(4)
根據(jù)(2)式求解相機的內(nèi)部參數(shù)A如下:
(5)
其中:λ為比例因子;ZC為像素點對應的深度值。聯(lián)立公式(5)及單應性矩陣,求得相機的外部參數(shù)如下:
(6)
聯(lián)立紅外攝像頭相對于彩色攝像頭外部參數(shù)的旋轉矩陣R和平移向量T為:
(7)
依照兩個攝像頭之間的坐標關系變換,完成Kinect相機的配準。
本實驗使用的標定模板為7×10的棋盤格,每個棋盤格邊長為30 mm。棋盤標定模板在世界坐標系中為固定狀態(tài),采用A3圖紙,采集圖像時,將棋盤平整的貼在固定的墻面上。通過Windows系統(tǒng)下的“Color Basics-WPF”模塊和“Infrared Basics-WPF”模塊采集彩色和深度圖像。
操作時,通過改變Kinect攝像機與棋盤之間的相對位置來采集不同的彩色圖像和紅外圖像。每次采集圖像時,要保證Kinect相機與固定棋盤格之間的相對位置盡可能不同,兩者角度盡量控制在45°以下,且彩色圖像和深度圖像要一一對應。分別采集彩色圖像與紅外圖像各49張,再將兩組照片分別導入到程序中標定計算。如圖 3和圖 4所示,分別為對應的8張彩色圖像與紅外圖像的角點提取結果,方形為標記的棋盤坐標原點,(高亮處理)圓圈為棋盤上被檢測到的特征點,加號代表特征點的重投影位置,提取角點之后可分別對兩個圖像集進行標定操作。

圖3 彩色圖像中角點提取結果

圖4 紅外圖像中角點提取結果
將攝像機與49幅標定圖像的相對位姿表達在坐標系中,以相機為靜止參照物,如圖 5所示,樣本圖像的采集容量足夠大。

圖5 Kinect 2.0與標定圖像相對位姿
經(jīng)過標定所得攝像頭內(nèi)部參數(shù)如表 1所示。彩色圖像中只有一張圖像的誤差超過1,平均投影誤差為0.485 0,紅外圖像的平均投影誤差僅為0.213 3,平均投影誤差均低于0.5,由于樣本容量足夠大,說明該標定實驗的內(nèi)部參數(shù)是精確的。

表1 Kinect 2.0內(nèi)部參數(shù)
分別用彩色攝像頭和深度攝像頭對相同位姿的標定板求外參數(shù),結合兩者結果,帶入公式(7),求得紅外攝像頭與深度攝像頭之間坐標變化的旋轉矩陣和平移向量分別為R和T:

(8)
(9)
設計搭建視覺SLAM的整體框架,完成視覺SLAM五大主要步驟:采集圖像、視覺里程計、回環(huán)檢測、位姿圖優(yōu)化和地圖構建[7]。
準確的建圖來自精確的定位,精確的定位來自準確的建圖,二者互相依存,不可分割[8]。如圖 6所示為本文所構建的機場服務機器人視覺SLAM算法整體架構。

圖6 機場服務機器人視覺SLAM流程圖
服務機器平臺處在機場動態(tài)環(huán)境中,從一個陌生的地點出發(fā),在移動過程中通過Kinect 2.0相機獲取環(huán)境的彩色圖像和深度圖像。在完全未知的環(huán)境下得到地圖數(shù)據(jù),這涉及到環(huán)境特征的提取問題,在視覺SLAM的前端線程中,首先利用RGB-D傳感器數(shù)據(jù),采用ORB算法完成圖像特征點的提取,描述子的生成以及特征點的匹配等;然后采用P3P運動估計方法對移動機器人的運動位姿進行估計;最后采用非線性優(yōu)化方法對運動估計值進行局部優(yōu)化。在后端線程中,首先提取一些特殊的圖像幀作為關鍵幀,對關鍵幀進行回環(huán)檢測以實現(xiàn)對位姿圖的優(yōu)化,構建三維點云圖。回環(huán)檢測可有效減少機場服務機器人在移動過程中的累積誤差,從而在視覺SLAM的實現(xiàn)過程中得到精確度更高的運動軌跡。而深度數(shù)據(jù)點云經(jīng)計算能得到類激光數(shù)據(jù),構建二維地圖。
前端部分采用ORB算法,主要對觀察對象進行特征點的提取和實現(xiàn)特征點的匹配,建立起相鄰兩幀之間對應的三維點云集合,進而對機器人的運動狀態(tài)進行估計和優(yōu)化。
ORB算法性能強大,計算速度是SIFE算法的100倍,是SURF算法的10倍,其中的FAST算法負責完成圖像特征點的檢測和提取。設定算法中特征點判定閾值T為掃描像素點亮度的30%,利用FAST-12篩選圖片中符合條件的像素角點,得出合適的特征點,而后利用灰度質心法為FAST算法檢測出的特征點賦予主方向。
完成圖像特征點的提取后,還需要通過某種形式來描述特征點,特征點屬性的輸出稱之為該特征點的描述子[9],ORB采用BRIEF算法來計算特征點的描述子,本文設定最大描述子提取數(shù)為500,金字塔抽取率1.2,edgeThreshold 和patchSize參數(shù)同為31,BRIEF描述符生成的隨機像素數(shù)量為3,以此調(diào)教出適用于本次實驗環(huán)境的計算參數(shù)。此參數(shù)程序在實驗場地的實現(xiàn)效果如圖 7所示,圖中高亮圓為通過ORB算法生成圖像特征點的描述子。

圖7 圖像描述子的生成
特征點的匹配能確定出Kinect相機當前觀察到的陸標與之前觀察到的陸標的對應關系。特征點的匹配問題可通過描述子的差異性進行比較判斷,兩副圖像描述子通過漢明距離公式來進行比較:
d(a1,a2)=a1?a2
(10)
漢明距離公式把兩個描述子的二進制串的位置做異或運算,異或值越小,兩個特征點之間的相似度就越高,若異或值d不超過設定的漢明距離值,則認為兩個特征點匹配成功,繼而得到兩幅圖像對應特征點的坐標。但計算量為兩幅圖像特征點數(shù)乘積,為減少匹配計算量,對其進行隨機抽樣,采用雙向匹配交叉過濾方法進行第一次篩選,把明顯錯誤的匹配剔除,減少迭代次數(shù),再采用RANSAC算法迭代剔除此匹配算法的外點,最后排序輸出實現(xiàn)改進后的ORB特征匹配算法,流程圖如圖8所示。

圖8 改進后的ORB特征匹配算法流程圖
使用改進后的ORB特征點匹配算法對兩幅圖像進行特征匹配,匹配結果如圖9所示,沒有出現(xiàn)誤匹配點對,為移動機器人求取運動估計值提供一個良好的初始值。

圖9 改進后的ORB算法特征點匹配
最后采用P3P算法對相鄰幀間Kinect的六自由度位姿進行估計,并使用非線性優(yōu)化方法對相機運動的估計值進行優(yōu)化。
隨著圖像幀數(shù)的增加,單純計算相鄰幀的匹配關系來估計相機位姿,將導致位姿估計過程中的誤差累積。運用圖優(yōu)化理論對移動機器人的估計位姿進行優(yōu)化,可有效減小累積誤差,回環(huán)檢測即通過某種手段讓Kinect相機檢測到曾經(jīng)到達過的場景,該方法能夠顯著減少累積誤差,獲得全局一致的估計值。
回環(huán)檢測的方法主要是采用視覺詞袋[10]模型(Bag-of-Word,BoW)進行處理。視覺詞袋的構建可以看作是描述子聚類的過程,將提取到的關鍵幀全部進行特征的檢測和提取,從而完成對視覺詞袋的構建。回環(huán)檢測過程中,Kinect 2.0相機采集到的圖像被處理后,圖像特征將轉化成詞袋向量,通過詞袋向量來比較當前幀與候選幀之間的相似度。然后引入歸一化的先驗相似評分進行相似度的評判,排除錯誤干擾,保留真實的回環(huán)。最后利用回環(huán)檢測兩個標準:準確率(Precision)和召回率(Recall)對回環(huán)檢測的效果進行判斷。
在圖優(yōu)化方面,本文采用只考慮Kinect相機運動位姿邊約束的圖優(yōu)化模型,位姿圖中添加的回環(huán)約束邊越多,圖優(yōu)化模型就會變得越健壯。待位姿圖構建完畢,將所有位姿節(jié)點與邊約束一起進行優(yōu)化,將得到的位姿誤差eij進行最小化處理,從而使得整體的位姿估計更符合實際。
至此,完成本課題視覺SLAM算法整體框架的設計,前端線程保證機場服務機器人視覺檢測可以穩(wěn)定的實現(xiàn),后端線程則保證了Kinect 2.0構建的地圖更精確。
利用該原理樣機的嵌入式ROS系統(tǒng)驅動Kinect 2.0相機,在實驗室等場景中進行機場服務機器人的視覺SLAM的運行,創(chuàng)建二維柵格地圖和三維點云地圖,驗證方案可行性。
通過iai-Kinect 2.0接口保證工具庫Libfreenect2在Ubuntu16.04系統(tǒng)下驅動Kinect 2.0。利用Gmapping功能包創(chuàng)建實驗室和實驗室外部走廊的二維柵格地圖,并使用RViz可視化平臺顯示。
Gmapping使用的是粒子濾波算法,粒子不斷迭代更新,選取一個合適粒子數(shù),在保證算法準確性的前提下,同時可以提高算法的運算效。設定計算參數(shù):粒子數(shù)為50,最小匹配得分為30,地圖分辨率為0.02 m,保證運算效率和算法的準確性。將樣機投入室內(nèi)實驗室環(huán)境采集圖像數(shù)據(jù),得到其2D柵格地圖如圖10所示。

圖10 實驗室環(huán)境與其格柵地圖
如圖11所示,將移動機器人平臺移至室內(nèi)走廊環(huán)境進行實驗。設置相同的計算參數(shù),得到走廊環(huán)境2D柵格地圖如右圖所示。

圖11 走廊環(huán)境與其格柵地圖
對比實驗地圖結果與實際采集環(huán)境,在結果方面,實驗程序能鮮明地分割墻體與道路區(qū)間,給出環(huán)境稠密地圖的通過信息,回環(huán)檢測發(fā)揮能效,地圖可行域邊界輪廓實現(xiàn)充分閉合;在誤差方面,地圖邊界會出現(xiàn)輕微彎曲,墻面存在噪點誤差,墻角等特征也與真實環(huán)境存在差異。分析實驗可知誤差來源于移動平臺本身的運動誤差,導致視覺里程計誤差的存在;環(huán)境反射材質的多變,導致像素點深度信息采集誤差的存在。但構圖實驗仍能高度還原場景的環(huán)境信息,為地圖導航提供的信息基礎。
該實驗采用手持相機繞實驗場地運動的方式采集數(shù)據(jù),通過g2o圖優(yōu)化器解決圖優(yōu)化BA(Bundle Adjustment)問題,得到全局一致的運動軌跡,進而得到誤差較小的三維點云地圖,如圖12為所構建的實驗室三維點云圖。

圖12 實驗室點云圖
手持移動軌跡的抖動必然存在,軌跡算法會將其平滑化,如圖13所示,為視覺算法反求的Kinect 2.0相機坐標系移動軌跡。圖12的多幀三維點云數(shù)據(jù)實現(xiàn)拼接,地圖效果反應實驗室環(huán)境中的物體信息,但點云密度有待提高。

圖13 獲取的Kinect 2.0運動軌跡
本實驗驗證了,在室內(nèi)環(huán)境中,利用Kinect 2.0相機實現(xiàn)2D SLAM和3D SLAM建圖的有效性。
本文設計并搭建了一款采用Kinect 2.0相機的機場視覺服務機器人。首先依據(jù)機場環(huán)境和服務要求搭建移動平臺原形機;再利用張正友標定法測量實際相機的性能參數(shù);然后構建視覺SLAM整體框架,包括前端ORB算法對特征點的識別與匹配,及后端位姿圖優(yōu)化;最后投入原理樣機在實驗室場景中定位建圖,驗證了視覺SLAM方案在機場服務平臺上的可行性。未來,該視覺移動平臺有待在真實的機場環(huán)境中實踐調(diào)試,研究改善,成為可靠的機場服務基礎設備。后期能搭載各類配套功能模塊從事特定服務,例如消毒設備,在無人干預的情況下,自動實現(xiàn)機場室內(nèi)的消毒工作。