馬慶祿,張 杰
(重慶交通大學(xué)交通運輸學(xué)院,重慶400074)
無人車的駕駛環(huán)境并非單一而簡單的,研究更為成熟可靠的無人車避障路徑規(guī)劃方法有利于確保無人駕駛的安全性以及進一步的無人駕駛技術(shù)的發(fā)展。研究采用更高效高精準(zhǔn)度的避障算法成了當(dāng)前無人車研究內(nèi)容的熱點[1,2],障礙物檢測分為主動和被動檢測,其中被動檢測法通過視覺傳感器對無人車身處的環(huán)境進行檢測,主要通過獲取周圍環(huán)境的顏色形狀邊緣特征,采用邊緣算法對特征顏色或形狀進一步進行數(shù)據(jù)處理,最終得到所需要的環(huán)境特征。然而這樣的方法有一定的缺陷,例如缺少獲得被測環(huán)境中精確的圖像深度信息的能力,以及在檢測數(shù)據(jù)量較大情況下不能保障算法的實時性等。主動檢測是指通過雷達等擁有測量環(huán)境距離或者高程能力的傳感器對自動駕駛車輛周圍的目標(biāo)進行檢測的方法[3]。因激光雷達短波長的特性使其具備了高檢測精度以及優(yōu)秀的抗環(huán)境干擾能力的性質(zhì)[4],劉大學(xué)等人通過基于激光雷達的分層聚類算法完成了越野環(huán)境中障礙物的識別并應(yīng)用到了越野環(huán)境下無人駕駛車輛的路徑規(guī)劃導(dǎo)航上[5],蔡自興等人以激光雷達為傳感器利用基于圓弧軌跡的局部路徑方法來規(guī)劃無人車的避障動作實現(xiàn)了動態(tài)環(huán)境下避障行為,具有良好的實時反應(yīng)能力[6],國外的Orr Itai等人研究了激光雷達分辨率對車輛檢測性能的影響并提出了可以提高基于深度神經(jīng)網(wǎng)絡(luò)的激光雷達檢測性能和效率的子采樣方法[7]。國內(nèi)外研究不論是傳統(tǒng)的激光雷達點云處理方法或是基于深度神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)的方法,都通過各類的車載傳感器獲取無人車周圍障礙物的信息,之后以內(nèi)部避障算法對無人車進行實時的路徑進行避障規(guī)劃[8],在這個過程中都因為傳感器或者算法的問題而出現(xiàn)規(guī)劃軌跡偏差或者路徑規(guī)劃實時性差的問題。對此,研究擬采用16線激光雷達為車載傳感器、改進的DP算法為避障算法實時生成有效而圓滑的避障路徑。
綜上,擬通過利用百度生產(chǎn)的自動駕駛開發(fā)套件Apollo D-kit進行實車實驗調(diào)試的方法,安裝ubuntu環(huán)境下的ros系統(tǒng)[9],部署Apollo源碼并且調(diào)用套件內(nèi)的激光雷達作為主動檢測傳感器用于識別障礙物,采用改進的DP局部路徑規(guī)劃算法完成對于動態(tài)障礙物的避障,在保證避障路徑規(guī)劃實時性的條件下生成更為圓滑可靠的避障軌跡。
激光雷達能夠獲取精確的數(shù)字高程并且生成精準(zhǔn)的三維位置信息,進一步確定被測物體的位置和大小幾何形狀。激光雷達所發(fā)出的高頻激光能夠每秒掃描并且獲取到100數(shù)量級的大量被測物體位置信息即激光點云,之后通過算法利用采集到的位置信息進行三維建模,同時出了獲得位置信息外,激光雷達還可以獲取障礙物的大致輪廓信息[10-12]。
Velodyne所生產(chǎn)的“冰球”16線雙回歸激光雷達在擁有一流的精度和校準(zhǔn)強度以及不俗的功率效率和感溫范圍,同時內(nèi)置發(fā)射排除和干擾抑制功能,減少噪聲。velodyne“冰球”16線激光雷達技術(shù)參數(shù)見表1。
表1 velodyne“冰球”技術(shù)參數(shù)
激光雷達首先以三維直角坐標(biāo)進行采樣(坐標(biāo)系見圖1),然而為了方便后續(xù)對獲得數(shù)據(jù)進行分析以及處理,激光雷達的初始數(shù)據(jù)轉(zhuǎn)化通過極坐標(biāo)進行采集儲存以及傳輸[13-16]。
圖1 激光雷達笛卡爾坐標(biāo)系
實際應(yīng)用中,因安裝激光雷達時無可避免地在三維空間中會存在偏差,所以需要通過引入旋轉(zhuǎn)矩陣R來進行修正。矩陣R的值一般通過標(biāo)定的方式計算出,采用建立過渡空間坐標(biāo)系的方法求解旋轉(zhuǎn)矩陣
(XVYVZV,1)T=Co(XYZ,1)T
(1)
首先取同一平面的n個點要求n>4,使用高度各不相同的物體作為標(biāo)定物。已知其相對于車體坐標(biāo)系的坐標(biāo)和相對于激光雷達坐標(biāo)系的坐標(biāo),可以推導(dǎo)出轉(zhuǎn)換關(guān)系,當(dāng)n>4時,公式為超定方程,求解獲得坐標(biāo)系轉(zhuǎn)換矩陣C。
Frenet坐標(biāo)系(見圖2)方便進行連續(xù)曲面上的點位定位,這一特性使得它被廣泛應(yīng)用于車道上的無人車定位。它基于既定的基準(zhǔn)線(記為TO),TO一般情況下定義為車道的中心線[17-19]。通過點位投影距離初始點長度以及于基準(zhǔn)線的距離為橫縱向位移進行定位。
圖2 Frenet-車體坐標(biāo)系轉(zhuǎn)換示意圖
如果待定位點位在全局坐標(biāo)系當(dāng)中的坐標(biāo)為(x,y),以坐標(biāo)(x,y)對基準(zhǔn)線TO作投影點F,則點F與待定位點位(x,y)的距離即為橫向位移d,以基準(zhǔn)線的起點到投影點F的曲線距離為縱向位移s,則有映射關(guān)系
(x,y)TO?(s,d)
(2)
無人車軌跡規(guī)劃需要所得的Frenet坐標(biāo)系中的軌跡規(guī)劃數(shù)據(jù)轉(zhuǎn)化輸出到車體坐標(biāo)系內(nèi)(見圖2)。
其中,無人車當(dāng)前的坐標(biāo)為
(3)
(4)
對于無人車的避障來說,可以看作是一次換道行為[20]。采用一種搜索尋路算法——DP算法(動態(tài)規(guī)劃算法),原理是將地圖格柵化,核心是加入估價函數(shù),加快搜索速度并提高搜索的精度以此提高軌跡規(guī)劃算法的實時性和穩(wěn)定性[21]。其估價函數(shù)如下
ctotal(f(s))=csmooth(f)+cobs(f)+cguidance(f)
其中
對上述輸出的原路徑二次優(yōu)化,不斷依次判斷優(yōu)化點到后續(xù)節(jié)點間障礙物的存在情況,同時將優(yōu)化節(jié)點更新為原節(jié)點的下一節(jié)點,重復(fù)操作,二次優(yōu)化A*算法[22,23]具體步驟如下。
步驟1:輸入原始路徑P,s為路徑節(jié)點總數(shù),初始化i=1,從起始點開始作為優(yōu)化節(jié)點P0,并添加到優(yōu)化路徑中
P=[p1,p2,pi,…,ps]
步驟2:判斷s是否小于3,當(dāng)s<3時,路徑為已為最優(yōu)路徑,輸出P結(jié)束,否則進入步驟3;
步驟3:判斷優(yōu)化節(jié)點P0與路徑節(jié)點Pi+1間是否存在障礙柵格,若不存在障礙柵格則i=i+1;若存在障礙柵格,則將路徑節(jié)點Pi+1添加到Pnew中,并將Pi+1作為新的優(yōu)化節(jié)點
Pnew=[Pnew;Pi+1],P0=Pi+1,i=i+1
在路徑的二次優(yōu)化過程中,未避免兩點之間所連接的每個格柵是否是障礙物,所以要計算得到各連線所經(jīng)過柵格的坐標(biāo)值,假設(shè)柵格矩陣M中的兩個柵格之間的坐標(biāo)位置差異為Δx、Δy,若Δx≥Δy則被探測柵格坐標(biāo)位置計算公式為
(5)
當(dāng)柵格矩陣M之中兩柵格之間的坐標(biāo)位置差異Δx≤Δy時探測柵格坐標(biāo)位置計算公式為
(6)
步驟4:判斷i是否小于s,當(dāng)i4 實驗
4.1 實驗平臺
實驗采用百度生產(chǎn)的全球首款自動駕駛開發(fā)套件Apollo D-kit,Apollo D-kit總體架構(gòu)包含車體上裝傳感器以及車輛底盤兩部分,其中車架上裝各類傳感器;車輛底盤包括車輛控制單元以及遙感單元,其總體架構(gòu)見圖3。
圖3 Apollo D-kit總體結(jié)構(gòu)實景圖
實驗平臺選取Apollo D-kit,軟件方面,實驗系統(tǒng)選取的是Ubuntu16.04版本,安裝docker容器以加載拉取apollo源碼,通過終端cyber_monitor以及rriver驅(qū)動調(diào)用所需要的傳感器;硬件方面搭載velodyne所生產(chǎn)的“冰球”16線雙回歸激光雷達,擁有100m感知范圍,±15°垂直視角,激光雷達安裝在車頂部中心位置,定位避障過程中Apollo D-kit通過雙GNSS 天線接收GPS定位信息,差分后的定位可達厘米級;同時慣性導(dǎo)航單元監(jiān)測并輸出姿態(tài)信息,并通過組合導(dǎo)航算法輸出無人車實時位置和方位數(shù)據(jù)。同時激光雷達掃描障礙物輪廓后進行簡單的聚類,實驗?zāi)壳暗木垲惙譃檐?、行人和自行車三?完成底層的定位及感知模塊后最后通過規(guī)劃模塊中的DP算法實現(xiàn)最終的避障功能。
4.2.1 虛擬車道線繪制
平常自動駕駛所最依賴的是高精度地圖,高精度地圖提供了道路定義、交叉路口、交通信號、車道規(guī)則等大量的駕駛輔助信息,可以為無人駕駛車提供多方面的幫助。Apollo D-kit避障功能采用的是簡單高效的虛擬車道線設(shè)置,通過第一次遙控車輛走完路線,上傳激光雷達感知數(shù)據(jù)以及車輛底盤數(shù)據(jù)至百度云盤,在Apollo Fuel頁面上提交虛擬車道繪制請求后填寫相關(guān)設(shè)置后,等待百度返回虛擬車道線繪制數(shù)據(jù)包,將獲得的虛擬車道數(shù)據(jù)包載入ubuntu環(huán)境下docker容器中Apollo模塊包中的localmap data目錄下,即可調(diào)取繪制好的虛擬車道。實車調(diào)試過程中的虛擬車道繪制頁面見圖4。
圖4 虛擬車道界面與起訖點標(biāo)定
上圖(a)中黃色線輪廓為繪制得的虛擬車道(車道寬度為3.5米),中心綠線為車道中線;(b)圖右側(cè)標(biāo)定的兩個紅點為標(biāo)記的POI(point of interest)規(guī)定車輛的起訖點,白色小車為當(dāng)前車輛在虛擬車道中的定位。
4.2.2 障礙物識別
將Apollo D-kit無人車遙控到繪制好虛擬車道線的指定位置,在其車道內(nèi)行進前端放置一障礙物遮擋部分車道。通過終端代碼調(diào)用ApolloD-kit的GPS-IMU組合導(dǎo)航單元,打開無人車GPS模塊和Lidar模塊,在apollo界面生成障礙物感知別圖,實驗實景與障礙物感知對照圖見圖5。
圖5 靜態(tài)障礙物避障實驗實景對照圖
圖5(a)(c)為實驗無人車與障礙物(足球框)的位置側(cè)視圖與正視圖,圖5(b)(d)為激光雷達障礙物感知后的成像圖,包含3.2.1節(jié)的虛擬車道等內(nèi)容以及障礙物輪廓掃描結(jié)果。
4.2.3 避障路徑規(guī)劃
規(guī)劃模塊是整合了決策和規(guī)劃兩個功能,該模塊是自動駕駛避障功能所需的最為核心的模塊之一,是在GPS-IMU及其定位算法所組成的定位模塊以及激光雷達及其切割聚類算法所構(gòu)成感知模塊上層的模塊。利用Apollo D-kit為實驗載體采用2.3節(jié)所介紹的搜尋式探索算法DP算法為核心避障規(guī)劃算法進行實驗。
實驗搭建Apollo Dreamview可視化交互仿真界面,通過界面可以即時監(jiān)控到無人車的當(dāng)前位置以及避障路徑,在4.2.2節(jié)中檢測到已有障礙物的基礎(chǔ)上,進一步終端通過代碼調(diào)用GPS-IMU模塊后,關(guān)閉車輛遙控器,開始自動駕駛,其中紅色線為預(yù)定車輛運行軌跡,位于車道中心,藍色為自動駕駛規(guī)劃路徑。Apollo D-kit開始自主駕駛,其無障礙物情況下的自動駕駛軌跡規(guī)劃圖見圖6。
圖6 無障礙物軌跡規(guī)劃圖
為了使實驗避障軌跡更加直觀,實驗時將障礙物(足球框)逐步推移到遮擋半個虛擬車道的位置進行觀察,實驗結(jié)果的避障過程軌跡對比圖見圖7。
圖7 避障過程軌跡對比圖及車輛參數(shù)圖
由圖7(a)可看出既定的軌跡路線位于紅色車道中線左側(cè)靠左側(cè)車道行駛,實驗人員開始推移障礙物并且感知可視化界面顯示感知到的障礙物的移動速度及方向,而(b)圖中在障礙物逐步遮擋左車道的情況下,無人車的規(guī)劃路徑避開障礙物產(chǎn)生偏離,預(yù)定路徑規(guī)劃由車道左側(cè)行駛至車道右側(cè)。
同時從圖8速度時間航向角三維圖可看出,無人車自動駕駛從第6s開始后行駛過程穩(wěn)定,由于既定路線為一大圓形軌跡,自動駕駛過程中偏航角基本穩(wěn)定15°左右(偏航角左偏為正值右偏為負(fù)值),15s開始避障時,車速由穩(wěn)定車速2.7m/s降低至1.2m/s同時偏航角轉(zhuǎn)回0°行駛2s后右偏至6°,避障完成后回復(fù)至避障前水平。由此看出,實驗過程中的動態(tài)路徑規(guī)劃反應(yīng)迅速,避障過程途中轉(zhuǎn)向角及速度變化平滑,避障軌跡穩(wěn)定有效。
圖8 避障過程車輛偏航-速度圖
本研究采用基于激光雷達的環(huán)境主動檢測方式以及局部路徑規(guī)劃的方式,針對已知已建立虛擬車道的環(huán)境下,完成了無人車對動態(tài)障礙物的避障。通過以A*算法為基礎(chǔ)并進行二次優(yōu)化的DP動態(tài)算法,實時計算調(diào)整機器人的運動方向和速度,進而輸出平滑有效的動態(tài)障礙物避障軌跡,提升了機器人避障的效率。最后文章算法的實時性以及穩(wěn)定性也由實驗結(jié)果得到驗證。