趙一兵,劉昌華,鄭 震,郭 烈,馬振強(qiáng),韓治中
(大連理工大學(xué)汽車工程學(xué)院,遼寧,大連 116024)
高精度的定位系統(tǒng)是智能車輛感知層的重要一環(huán),它解決行駛過程中“我在哪里?”的問題,是實(shí)現(xiàn)智能車輛自主導(dǎo)航的基礎(chǔ)[1]。根據(jù)智能車輛對周圍環(huán)境的感知程度分為絕對定位和相對定位[2]。在進(jìn)行相對定位時(shí),基于視覺定位的定位方式研究較為廣泛,AZUMA[3]等利用擴(kuò)展卡爾曼濾波算法將相機(jī)數(shù)據(jù)與IMU 數(shù)據(jù)相融合,結(jié)果表明,融合后的定位效果較好,能有效地減小系統(tǒng)誤差。甘露[4]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的視覺定位系統(tǒng),將雙目視覺和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合,定位效果穩(wěn)定,具有較高的實(shí)用價(jià)值。
由于單傳感器誤差較大,將多個(gè)內(nèi)部傳感器數(shù)據(jù)相融合[5]的定位方式越來越得到專家學(xué)者的青睞。LIU 等[6]提出了一種基于1 個(gè)慣性測量單元和2 個(gè)3D 激光雷達(dá)的適合大型自然地形的實(shí)時(shí)6DSLAM 的方法,除了將整個(gè)地圖劃分為許多由大量基于樹結(jié)構(gòu)的體素組成的子地圖之外,還使用概率方法來表示1 個(gè)體素被占用和空余的可能性,實(shí)時(shí)性得以提升??嘛@信等[7]設(shè)計(jì)出包括紅外定位系統(tǒng)、聽覺定位系統(tǒng)和視覺定位系統(tǒng)的多傳感器定位系統(tǒng),提出的加權(quán)平均融合算法可使權(quán)重隨目標(biāo)位置和外部環(huán)境發(fā)生改變,環(huán)境適應(yīng)性更強(qiáng),有效提高了交互系統(tǒng)的整體定位精度和可靠性。
在靜態(tài)環(huán)境下,基于地圖匹配的定位方法經(jīng)常取得不錯(cuò)的效果,該方法將傳感器在一定范圍內(nèi)掃描得到的信息與先驗(yàn)地圖的信息做匹配,得到符合度、一致性最好的匹配結(jié)果,從而確定智能車輛的位置,實(shí)現(xiàn)定位功能[8-9]。艾國[10]將地圖匹配與激光陀螺慣性導(dǎo)航系統(tǒng)相結(jié)合,并提出基于曲線匹配的地圖匹配方法,充分利用激光陀螺慣性導(dǎo)航系統(tǒng)的高精度姿態(tài)信息,較現(xiàn)有的點(diǎn)到點(diǎn)、點(diǎn)到線的匹配技術(shù)有更高的定位精度。李祎承等[11]提出了一種融合了視覺傳感器和GPS/RTK 數(shù)據(jù)的視覺道路環(huán)境地圖構(gòu)建方法,在視覺地圖的基礎(chǔ)上,智能車僅需裝載普通的攝像機(jī)和GPS 接收器便能實(shí)現(xiàn)高精度定位,有效降低了智能車成本。
試驗(yàn)所用智能車輛是銳趣科技的四輪小車平臺,該平臺基于ROS 操作系統(tǒng),并采用四輪差速設(shè)計(jì),同側(cè)驅(qū)動輪以相同速度運(yùn)行。激光雷達(dá)采用思嵐A2 雷達(dá),安裝于小車頂部,驅(qū)動電機(jī)采用霍爾AB 型雙通道的增量式光電編碼器,慣性測量單元采用GY-85 九軸陀螺儀傳感器。
將定位問題分為無地圖定位與基于地圖定位,通過理論與實(shí)踐相結(jié)合的方式對智能車輛定位問題進(jìn)行探索。試驗(yàn)結(jié)果表明,航跡推測法具有較明顯的累計(jì)誤差問題,不適用于長距離定位,基于地圖的絕對定位方法對累計(jì)誤差有一定校正作用,定位效果較為良好,說明了地圖在定位系統(tǒng)中的重要性。
試驗(yàn)基于室內(nèi)結(jié)構(gòu)化環(huán)境下完成,車輪厚度僅影響重心高度,且只考慮智能車輛車輪發(fā)生純滾動情況,忽略車輛打滑,只建立其運(yùn)動學(xué)模型,尋找狀態(tài)變量與控制變量之間的函數(shù)關(guān)系。
將傳感器坐標(biāo)系與智能車輛坐標(biāo)系合并,全局坐標(biāo)系表示智能車輛的運(yùn)動范圍,局部坐標(biāo)系建立在小車中心位置,用于確定環(huán)境中特征點(diǎn)相對于小車的位置分布。智能車輛的運(yùn)動學(xué)模型如圖1 所示。
圖1 智能車輛運(yùn)動學(xué)模型
在圖1 中,坐標(biāo)系xCOMy為局部坐標(biāo)系,Xg0Yg為全局坐標(biāo)系,用(x,y,θ)T表示智能車輛在全局坐標(biāo)系中的位置和朝向信息,其中(x,y)表示智能車輛在全局坐標(biāo)系中的坐標(biāo)信息,θ表示在全局坐標(biāo)系中的方向角。左右輪中心距離為2c,車輪的半徑為R,智能車輛左右兩輪的線速度分別為VL和VR,則智能車輛運(yùn)動學(xué)方程可表示為:
且式(2)需要滿足非完整性約束條件:
因此,可以通過調(diào)節(jié)左右輪的線速度來改變小車的位姿。
1.2.1 里程計(jì)模型
假如在Δt時(shí)間段內(nèi),智能車輛的光電編碼器的脈沖增量為ΔN,里程計(jì)分辨率為re,則小車在這段時(shí)間內(nèi)移動的距離為:
若在這段時(shí)間內(nèi),小車左輪移動的距離用ΔdL表示,右輪移動的距離用ΔdR表示,令里程計(jì)模型的輸入為u=[ΔD,Δθ]。其中,智能車輛對應(yīng)的位移變化量ΔD與航向角變化量Δθ可以表示為:
根據(jù)智能車輛在行駛過程中航向角Δθ是否發(fā)生變化,可以把其里程計(jì)模型分為兩種:直線模型和圓弧模型。在試驗(yàn)小車進(jìn)行自定位的過程中,盡量增加采樣頻率,縮小初始點(diǎn)與終止點(diǎn)之間的距離,從而盡可能地保證定位過程的準(zhǔn)確性。由于會頻繁讀取里程計(jì)的信息來獲得智能車輛的位姿變化情況,因此,使用里程計(jì)的直線模型為主,在通過數(shù)據(jù)融合進(jìn)行航向角計(jì)算時(shí),需要使用圓弧模型。假設(shè)在t1時(shí)刻小車位姿為(x1,y1,θ1)T,在t2時(shí)刻小車位姿為(x2,y2,θ2)T,則表達(dá)式如下:
1.2.2 激光傳感器模型
試驗(yàn)中忽略激光傳感器自轉(zhuǎn)時(shí)對不同角度的采樣時(shí)間差,二維激光雷達(dá)的數(shù)據(jù)觀測模型可以用條件概率進(jìn)行表示:
式中:xk表示在k時(shí)刻智能車輛的位姿;zk表示激光觀測量。由于激光傳感器旋轉(zhuǎn)一周會進(jìn)行多次采樣過程,由此可得:
假設(shè)激光傳感器每次掃描得到的點(diǎn)之間相互獨(dú)立,則對于每次完成一圈掃描得到的觀測模型概率密度可以表示為:
1.2.3 慣性測量單元模型
慣性測量單元(IMU)具有靈敏、高頻的特點(diǎn),常作為其他傳感器的輔助傳感器使用,由物理理論可得:
式中:φ為旋轉(zhuǎn)角度;v為小車速度;Δt為慣性測量單元相鄰數(shù)據(jù)之間的時(shí)間差。
假設(shè)智能車輛的初始位置為p0=(0, 0,0)T,初始姿態(tài)為φ0=(0,0,0)T,R(φ0)表示初始姿態(tài)對應(yīng)的旋轉(zhuǎn)矩陣。歐拉角Δφ=(Δφx,Δφy,Δφz)T,歐拉角對應(yīng)的旋轉(zhuǎn)矩陣為R(Δφ)。
則進(jìn)行多次迭代后,可以得出:
式中:ωk表示在k時(shí)刻IMU 所測量的角速度值。
利用加速度a和采樣間隔時(shí)間Δt,可以得到在三維空間下智能車輛的速度和位移變化情況:
式中:ak表示在k時(shí)刻IMU 所測得的加速度值;Rk表示在k時(shí)刻時(shí)IMU 在世界坐標(biāo)系下的姿態(tài)。
定位問題可以看作一個(gè)坐標(biāo)系在另一個(gè)坐標(biāo)系下的求解問題。假設(shè)智能車輛在全局坐標(biāo)系中位姿為(x1,y1,θ1)T,在小車局部坐標(biāo)系下任意一點(diǎn)的坐標(biāo)為(x1,y1),經(jīng)過齊次坐標(biāo)變換可以通過平移變換矩陣T,旋轉(zhuǎn)變換矩陣R可轉(zhuǎn)換至全局坐標(biāo)系下,其中矩陣T和矩陣R為:
智能車輛的定位經(jīng)常被稱為位姿估計(jì),而基于概率的狀態(tài)估計(jì)是最常用手段[12]。概率運(yùn)動學(xué)模型在定位過程中起著狀態(tài)變換的作用,這即是條件密度,即:
式中:xt與xt-1表示智能車輛的位姿信息;ut表示運(yùn)動控制,由里程計(jì)數(shù)據(jù)提供。這個(gè)模型表示在xt-1位姿基礎(chǔ)上執(zhí)行控制ut后,智能車輛取得的運(yùn)動狀態(tài)后驗(yàn)概率分布。
圖2 智能車輛定位圖例
定位圖例如圖2 所示,陰影節(jié)點(diǎn)值(地圖m、測量值z和控制u)已知,時(shí)刻t的狀態(tài)依賴t-1 時(shí)刻狀態(tài)和控制ut,測量zt依賴t時(shí)刻狀態(tài)。
智能車輛在硬件裝配過程中會存在各種誤差,從軟件層面來說,系統(tǒng)在一定頻率下接收數(shù)據(jù),也會存在一定誤差。因此,需要對智能車輛的IMU、線速度、角速度進(jìn)行校準(zhǔn)。
在校準(zhǔn)IMU 的過程中需對加速度計(jì)和陀螺儀分別進(jìn)行校準(zhǔn),習(xí)慣上先對加速度計(jì)進(jìn)行校準(zhǔn),然后利用校準(zhǔn)后的加速度計(jì)信息來校準(zhǔn)陀螺儀。加速度校準(zhǔn)通常需將加速度計(jì)保持靜止?fàn)顟B(tài),根據(jù)測量值的二范數(shù)等于當(dāng)?shù)刂亓铀俣葋磉M(jìn)行校準(zhǔn)。陀螺儀校準(zhǔn)過程主要包括Allan方差校準(zhǔn)零偏噪聲(Bias)和優(yōu)化方式求解尺度因子及軸偏差[13-14]。
本文設(shè)計(jì)了線速度、角速度校準(zhǔn)試驗(yàn),在線速度校準(zhǔn)中,通過校準(zhǔn)文件使智能車輛前進(jìn)1 m,將實(shí)際移動距離與理論移動距離(本文為1 m)的比值作為線速度修正系數(shù),在角速度校準(zhǔn)中,通過校準(zhǔn)文件使智能車輛旋轉(zhuǎn)360°,將實(shí)際旋轉(zhuǎn)角度與理論旋轉(zhuǎn)角度(本文為360°)的比值作為角速度修正系數(shù)。最后通過測程法前進(jìn)返回試驗(yàn)對校準(zhǔn)效果進(jìn)行驗(yàn)證,共進(jìn)行5 次試驗(yàn),結(jié)果如圖3 和圖4 所示。
由圖3 可知,校準(zhǔn)后小車距離初始點(diǎn)的距離更近,其運(yùn)動精度得到明顯提高,通過對試驗(yàn)過程的觀察以及對圖4 中的數(shù)據(jù)結(jié)果進(jìn)行分析可知,造成小車運(yùn)動偏離的主要原因是旋轉(zhuǎn)角度誤差較大,通過校準(zhǔn)后該問題得到顯著改善。
圖3 校準(zhǔn)前后小車距原點(diǎn)距離對比
圖4 校準(zhǔn)前后小車航向角對比
擴(kuò)展卡爾曼濾波[15]是借助線性濾波理論求解非線性問題的算法,如果被用作多傳感器的數(shù)據(jù)融合,可以將其中一個(gè)傳感器數(shù)據(jù)當(dāng)作測量量,另一傳感器數(shù)據(jù)當(dāng)作估計(jì)值進(jìn)行融合。擴(kuò)展卡爾曼濾波近似的主要思想就是線性化,最常通過泰勒展開進(jìn)行線性化,然后對系統(tǒng)狀態(tài)進(jìn)行估計(jì)。擴(kuò)展卡爾曼濾波分為時(shí)間更新方程和測量更新方程兩部分,如圖5 所示。
圖5 擴(kuò)展卡爾曼濾波算法流程
定位評價(jià)標(biāo)準(zhǔn)是衡量一種定位算法好壞的指標(biāo)[16],本研究選用定位誤差、定位成功率作為評價(jià)指標(biāo),其計(jì)算方式如下。
3.2.1 定位誤差
定位誤差指智能車的真實(shí)位置與估計(jì)位置之間的位置偏差,其表達(dá)式為:
式中:(xt,yt,zt)代表智能車輛通過定位算法估算出的位置;(xe,ye,ze)代表智能車輛在運(yùn)動過程中的實(shí)際位置,由于智能車輛在室內(nèi)結(jié)構(gòu)化環(huán)境下運(yùn)動,這里zt=ze=0,在實(shí)際計(jì)算時(shí)還要考慮小車航偏角偏差:
式中:θt代表定位算法估計(jì)出的航偏角;θe代表真實(shí)位置的航偏角。
3.2.2 定位成功率
在某一精度范圍內(nèi),成功次數(shù)與總次數(shù)的比值,其表達(dá)式為:
3.2.3 定位實(shí)時(shí)性
指定位系統(tǒng)能否在規(guī)定時(shí)間內(nèi)完成相應(yīng)的邏輯處理并得到正確結(jié)果,實(shí)時(shí)性的高低是評價(jià)定位系統(tǒng)性能的重要指標(biāo)。其影響因素包括硬件和軟件兩個(gè)層面。
本文在robot_localization 功能包[17]的基礎(chǔ)上進(jìn)行改進(jìn),對里程計(jì)及IMU 進(jìn)行數(shù)據(jù)融合,該功能包是所有狀態(tài)估計(jì)節(jié)點(diǎn)的集合,每個(gè)狀態(tài)估計(jì)節(jié)點(diǎn)通過其使用的傳感器對小車在三維空間中的運(yùn)動狀態(tài)進(jìn)行估計(jì)。在原功能包的基礎(chǔ)上對其做了一些改進(jìn):
(1)修改了功能包中原有的參數(shù)配置讀取功能,將里程計(jì)、IMU 等傳感器相關(guān)模型及參數(shù)統(tǒng)一放置在參數(shù)配置文件中。根據(jù)小車實(shí)際的傳感器參數(shù)進(jìn)行配置,保證了功能包中的傳感器模型與小車實(shí)際所用傳感器的一致性。
(2)根據(jù)小車實(shí)際參數(shù)(傳感器間外部參數(shù)、小車軸距、論據(jù)等參數(shù))對小車進(jìn)行了物理建模并將模型導(dǎo)入robot_localization 功能包,保證了小車實(shí)際尺寸與功能包中物理模型的一致性。
在robot_localization 功能包中,主要使用ekf_localization_node,該節(jié)點(diǎn)可以接收IMU 所測量的翻滾角、俯仰角、偏航角及速度和加速度,以及來自車輪編碼器的偏航速度等。在ekf_localization_node 狀態(tài)估計(jì)節(jié)點(diǎn)中,通常在只融合連續(xù)的位置數(shù)據(jù)(里程計(jì)、IMU)時(shí),把世界坐標(biāo)系和傳感器坐標(biāo)系設(shè)置為一個(gè),此時(shí)世界坐標(biāo)系為odom。多傳感器融合下智能車輛TF 樹如圖6 所示。
圖6 多傳感器信息融合下的TF 樹
定位測試試驗(yàn)中經(jīng)常使用的有兩種方法:第1種是在實(shí)際環(huán)境中選取需要的定位點(diǎn),讓智能車輛重復(fù)到達(dá)定位點(diǎn),比較智能車輛在定位點(diǎn)的輸出值;第2 種是在實(shí)際環(huán)境下選取需要的定位點(diǎn),讓智能車輛重復(fù)到達(dá)定位點(diǎn),比較小車定位點(diǎn)實(shí)際值與輸出值。在無地圖情況下定位試驗(yàn)采用第2 種測試方法。在該試驗(yàn)中共進(jìn)行了直線軌跡與曲線軌跡兩種試驗(yàn),為降低由操作失誤等不可控因素對試驗(yàn)結(jié)果的干擾,本文對試驗(yàn)結(jié)果根據(jù)格拉布斯(Grubbs)準(zhǔn)則[18]進(jìn)行了野值檢測與剔除,處理后的結(jié)果如圖7~10 所示。
圖7 直線軌跡距離誤差
圖8 直線軌跡航向角誤差
圖9 曲線軌跡距離誤差
圖10 曲線軌跡航向角誤差
由圖7 和圖9 可知,在無地圖情況下通過航跡推測法進(jìn)行定位存在較為明顯的累積誤差并會不斷增加,不能通過外部傳感器或先驗(yàn)地圖信息進(jìn)行修正,因此,在無地圖情況下不做定位成功率評價(jià)。
在圖8 和圖10 中,角度誤差均值分別為1.15°與3.25°,該結(jié)果可以反映在試驗(yàn)過程中小車按照既定軌跡行駛。
robot_localization 功能包是基于擴(kuò)展卡爾曼濾波進(jìn)行數(shù)據(jù)融合的,定位算法復(fù)雜度較低,實(shí)時(shí)性較好。在計(jì)算機(jī)上運(yùn)行測試時(shí),算法運(yùn)行一次的時(shí)間穩(wěn)定在10 ms 左右并且受計(jì)算機(jī)系統(tǒng)硬件因素影響。提高硬件系統(tǒng)配置可減少算法運(yùn)行時(shí)間。
本文使用了ROS 開源社區(qū)中SLAM 算法——gmapping 功能包,該功能包訂閱智能車輛深度信息、里程計(jì)信息和IMU 信息,同時(shí)需要完成相應(yīng)參數(shù)配置,然后即可創(chuàng)建該環(huán)境下的二維柵格地圖,如圖11所示。
圖11 試驗(yàn)環(huán)境地圖
蒙特卡羅算法[19]通過使用一系列帶有權(quán)重的粒子模擬被估計(jì)狀態(tài)的后驗(yàn)概率密度函數(shù),又被稱為粒子濾波[20]定位。粒子濾波器是貝葉斯估計(jì)器的一種實(shí)現(xiàn)方式,在處理非線性情況時(shí)具有天然優(yōu)勢,同時(shí)又能處理多峰分布情況。本文應(yīng)用蒙特卡羅定位,定位方案如圖12 所示。
圖12 智能車輛定位方案
在定位過程中,智能車輛先從已知位置出發(fā),首先利用內(nèi)部傳感器(里程計(jì)、IMU)獲得自身狀態(tài)信息,然后利用擴(kuò)展卡爾曼濾波算法融合里程計(jì)和IMU 的信息,對小車的位姿進(jìn)行一次粗略估計(jì),再使用外部傳感器(激光傳感器)掃描周圍環(huán)境,建立局部地圖后,利用粒子濾波算法對小車位姿進(jìn)行估計(jì),從而獲得智能車輛在全局中的位姿信息,其定位效果如圖13 和圖14 所示,圖中綠色的點(diǎn)代表對智能車輛的位置估計(jì),從圖中可以看出粒子濾波能夠有效地對智能車輛進(jìn)行定位。
圖13 粒子濾波前截圖
圖14 粒子濾波后截圖
由于傳感器精度有限,為了避免建圖誤差干擾,本次試驗(yàn)選取第1 種定位測試方式,同樣進(jìn)行了直線軌跡與曲線軌跡試驗(yàn),并對試驗(yàn)結(jié)果進(jìn)行野值檢測與剔除,處理后的數(shù)據(jù)結(jié)果如圖15~20 所示。
圖15 直線軌跡距離誤差
圖16 直線軌跡航向角誤差
圖17 曲線軌跡距離誤差
圖18 曲線軌跡航向角誤差
圖19 直線軌跡位置誤差結(jié)果
圖20 直線軌跡航線角誤差結(jié)果
圖15 和圖17 可知,定位誤差存在不斷累積增加的現(xiàn)象,但對比圖7 和9 來看,距離誤差有所減小,說明基于地圖的定位效果比無地圖定位有所提高。圖16 和圖20 中,航向角誤差均值分別為2.12°和3.15°,對比圖18 與圖20 來看,航向角誤差并無明顯改善。
根據(jù)定位評價(jià)標(biāo)準(zhǔn)對該試驗(yàn)結(jié)果進(jìn)行分析。由圖19 和圖20 可知,在4 組測量共40 次定位結(jié)果中,出現(xiàn)了13 次不符合距離誤差指標(biāo)的定位結(jié)果,成功27 次,出現(xiàn)了4 次不符合角度誤差指標(biāo)的定位結(jié)果,成功36 次,可得直線軌跡定位成功率為:
由圖21 和圖22 可知,在4 組測量共50 次定位結(jié)果中,出現(xiàn)15 次不符合距離誤差指標(biāo)的定位結(jié)果,成功35 次,出現(xiàn)了13 次不符合角度誤差指標(biāo)的定位結(jié)果,成功37 次,可得曲線軌跡定位成功率為:
圖21 曲線軌跡位置誤差結(jié)果
圖22 曲線軌跡航向角誤差結(jié)果
在定位的實(shí)時(shí)性方面,基于地圖的定位采用蒙特卡羅定位算法,其本質(zhì)是通過算法的迭代來逐步增加正確定位粒子的權(quán)重,忽略誤定位粒子,進(jìn)而實(shí)現(xiàn)準(zhǔn)確定位。因此,在有地圖的情況下,定位精度會隨著小車運(yùn)行時(shí)間增長而有所提高。經(jīng)過上述試驗(yàn),如圖13 和圖14 所示,小車在穩(wěn)定行駛3 m后即可獲得成功率較高的定位結(jié)果。算法運(yùn)行一次所用時(shí)間穩(wěn)定在40 ms 左右,并且受計(jì)算機(jī)系統(tǒng)硬件影響。
本文對實(shí)驗(yàn)室內(nèi)的智能車輛傳感器系統(tǒng)進(jìn)行了參數(shù)校正,理論與實(shí)踐相結(jié)合,對于無地圖情況下的擴(kuò)展卡爾曼濾波的航位推測定位技術(shù)、地圖構(gòu)建以及有地圖情況下的蒙特卡羅定位進(jìn)行了理論分析與試驗(yàn)驗(yàn)證的系統(tǒng)研究。試驗(yàn)結(jié)果表明,航跡推測定位不適用于遠(yuǎn)距離定位,存在較為明顯的累積誤差現(xiàn)象,基于地圖的定位會對累積誤差進(jìn)行一定的校正,在該情況下位置定位成功率可達(dá)70%左右,角度估計(jì)成功率在直線軌跡情況下高達(dá)90%,曲線軌跡達(dá)到74%,表明了地圖的重要性。仍存在一定的改善空間,后續(xù)研究可以考慮使用Kinect 深度攝像機(jī)與激光雷達(dá)相結(jié)合,繼續(xù)提高定位精度。