張 鵬,葛中盛, 徐效農(nóng), 趙奉奎
(1 南京林業(yè)大學(xué) 汽車與交通工程學(xué)院, 南京 210037; 2 上海汽車集團股份有限公司技術(shù)中心, 上海 201804)
近年來,隨著智能交通以及人工智能技術(shù)的興起,越來越多的企業(yè)與科研機構(gòu)積極推動無人駕駛領(lǐng)域的發(fā)展,避障路徑規(guī)劃算法是自動駕駛汽車的重要組成部分[1]。自動駕駛汽車的路徑規(guī)劃是指在一個有障礙物的環(huán)境中,為汽車尋找一條從起始位置到終點位置的最優(yōu)或次優(yōu)的運動路徑,使汽車在運動過程中能夠安全、沒有碰撞地避開所有障礙物[2]。學(xué)者們對其開展研究,取得了一些研究成果。江明等提出了基于改進蟻群算法的路徑規(guī)劃[3];于海璁等提出一種基于遺傳算法的多模式路徑規(guī)劃算法[4],此類智能路徑規(guī)劃算法,能夠在復(fù)雜環(huán)境中較好的路徑規(guī)劃。趙曉等提出了改進A*算法,是一種常用于靜態(tài)路網(wǎng)中求解最短路徑的啟發(fā)式搜索方法,對環(huán)境信息反應(yīng)速度快,魯棒性好[5];修彩靖等提出人工勢場法,其規(guī)劃的運動軌跡平滑,易于底層控制、計算量小[6]。雖然上述幾類算法在機器人路徑規(guī)劃中被廣泛應(yīng)用,但難以同時滿足自動駕駛汽車時效性以及車輛行駛的約束條件。
本文提出一種基于模擬退火法的人工勢場法,改進吸引立場函數(shù),有效解決傳統(tǒng)人工勢場法容易導(dǎo)致目標(biāo)不可及,陷入局部最小值的問題,能夠安全高效避障。
人工勢場法是由Khatib提出的一種虛擬力法。人工勢場法的基本原理是將汽車放在一個勢力場中,由汽車行駛目標(biāo)的終點產(chǎn)生的吸引力場,和行駛環(huán)境中各種車輛,行人,紅燈,隔離帶或?qū)嵕€等組成的障礙物產(chǎn)生斥力場,形成一個勢力場,在目標(biāo)點產(chǎn)生的引力中汽車向目標(biāo)點移動,途中遇到障礙物,由障礙物產(chǎn)生的斥力而遠(yuǎn)離障礙物[7-8]。人工勢場法的自動駕駛汽車避障主要的特點是可以實時避障,運動軌跡平滑,對未知環(huán)境的適應(yīng)性較強,計算速度快,結(jié)構(gòu)簡單,易于學(xué)習(xí)。將人工勢場法用于自動駕駛汽車避障路徑規(guī)劃,避障軌跡平滑,便于改進和優(yōu)化。人工勢場法也有缺點:出現(xiàn)目標(biāo)不可達(dá),局部極小值等問題。因此,如何設(shè)計“引力場”就成為該方法的關(guān)鍵。
本文將吸引力場加以改進,并引入模擬退火法,能夠有效解決目標(biāo)不可及,陷入局部最小值的問題,實現(xiàn)高效路徑規(guī)劃。
人工勢場法中自動駕駛汽車所在環(huán)境中所受的力,由目標(biāo)點發(fā)出的引力場和道路上的障礙物,或行駛緩慢的車輛對自動駕駛汽車的斥力場組成。引力場由運動終點發(fā)射出,斥力場由障礙物,如其他汽車,行人,隔離帶等,產(chǎn)生的斥力場組成[9]。因此,人工勢場法的勢場函數(shù)定義為引力場與斥力場的和,汽車的移動方向為勢場函數(shù)下降的方向。這樣汽車就可以找到一條無碰撞的路徑。勢場函數(shù)如式(1)表示:
U(q)=Uatt(q)+Urep(q),
(1)
其中,q是自動駕駛汽車的坐標(biāo)點;Uatt(q)是引力場;Urep(q)是斥力場;U(q)是勢場和。勢場函數(shù)的負(fù)梯度定義為人工力,人工力由引力和斥力組成。引力為引力場的負(fù)梯度,斥力為斥力場的負(fù)梯度。因此,汽車在勢場中所受力可用公式(2)表示:
F(q)=-F(q)=-Uatt(q)-Urep(q)=Fatt(q)+Frep(q).
(2)
斥力場的計算公式(3):
(3)
Frep=-
(4)
Frep斥力方向由障礙物點指向自動駕駛汽車,F(xiàn)rep合力可以分解為坐標(biāo)軸X方向和Y方向的力,如式(5),式(6)所示:
(5)
(6)
以上的斥力計算是針對單個障礙物而言。但是環(huán)境中往往有多個障礙物,所以斥力場與斥力應(yīng)該是多個障礙物對汽車的斥力場和與斥力和,則如式(7),式(8)所示:
(7)
(8)
其中,n為障礙物個數(shù),F(xiàn)為汽車所受合力。自動駕駛汽車受力情況如圖1所示。
圖1 自動駕駛汽車受力情況
引力場的計算公式(9):
(9)
其中,Katt為引力增益函數(shù),qg為目標(biāo)點的位置。根據(jù)式(9)可以計算引力大小,式(10):
Fatt=-Uatt(q)=-Katt(q-qg).
(10)
Fatt的方向指向目標(biāo)點,F(xiàn)att可以分解為X軸方向的力與Y軸方向的力,式(11)和式(12):
Fattx=-katt(x-xg),
(11)
Fatty=-katt(y-yg).
(12)
基于人工勢場法的路徑規(guī)劃用于自動駕駛汽車還存在一些問題。當(dāng)引力與斥力大小相等方向相反時,導(dǎo)致汽車缺少引力,從而導(dǎo)致目標(biāo)不可及;當(dāng)自動駕駛汽車陷入多個障礙物之間時,中間會形成極小的勢力場,陷入局部最小值,無法穿過障礙群。
傳統(tǒng)人工勢場法引力部分與汽車和目標(biāo)點位置距離隨距離越大而增大,當(dāng)汽車距離目標(biāo)點較遠(yuǎn)時,引力部分過大,可能導(dǎo)致汽車與障礙物相撞。針對這一問題,對引力場公式進行改進。
引力場的大小由汽車與目標(biāo)點的距離決定,當(dāng)距離非常大時,引力將會變得非常大,斥力相對于引力而言就會變得非常小,從而導(dǎo)致汽車與障礙物相撞。因此,對引力場加以改進,公式(13)如下:
(13)
(14)
其中,d為影響距離極限值,當(dāng)汽車與目標(biāo)點距離≤d時,引力與距離成平滑直線;當(dāng)汽車與目標(biāo)點距離>d時,將引力視為常數(shù)。
圖2 模擬退火法算法流程圖
由于實車實驗控制復(fù)雜,本文采用軟件仿真的方法對所設(shè)計的路徑規(guī)劃算法進行驗證,采用MATLAB軟件進行仿真分析。為了對所提算法進行充分的測試,本文建立了超車和左轉(zhuǎn)兩種工況進行模擬。超車工況如圖3所示,圖中黑色矩形代表預(yù)設(shè)的行駛車輛,虛線代表車道線,共有六輛大小不等的車輛分布在四條車道上,仿真車輛起點和終點坐標(biāo)分別為(50,50)和(700,350)。引力增益系數(shù)Katt=5,斥力增益系數(shù)Krep=15,障礙影響距離設(shè)為2,步長設(shè)為0.1,循環(huán)迭代次數(shù)設(shè)為1000,由圖3規(guī)劃路徑可知,自動駕駛汽車能夠識別周圍障礙,選擇無障礙物車道行駛。左轉(zhuǎn)工況如圖4所示,建立雙車道十字路口模型,其中分布著5個矩形障礙代表其他行駛車輛,仿真車輛起點和終點坐標(biāo)分別(201,250)和(302,539)。由圖4規(guī)劃路徑可知,自動駕駛汽車能夠識別十字路口,避開障礙物實現(xiàn)左轉(zhuǎn)彎。
圖3 超車情形
圖4 十字路口左拐情形
本文使用模擬退火法與改進引力場函數(shù)解決人工勢場法在自動駕駛汽車避障路徑規(guī)劃中的兩個問題:自動駕駛汽車無法抵達(dá)終點,汽車會陷入局部最小值。通過仿真證明,運用模擬退火算法和改進引力場函數(shù)方法對自動駕駛汽車避障路徑規(guī)劃有著極好的的避障效果。本文中雖然對用改進的人工勢場法在局部路徑下進行路徑規(guī)劃取得了一定的效果,但是該算法在全局路徑規(guī)劃上存在不足,可以考慮把人工勢場法與全局路徑規(guī)劃方法結(jié)合起來使用。