方朋朋,楊家富,施楊洋,于凌宇
(南京林業(yè)大學(xué) 機械電子工程學(xué)院,南京 210037)
隨著無人車技術(shù)快速發(fā)展,靜態(tài)和動態(tài)環(huán)境中精確避障已成為其關(guān)鍵技術(shù)。目前主要通過硬件和軟件共同配合實現(xiàn)避障功能,采用的主要避障算法有:人工勢場法[1~3],遺傳算法,模糊控制算法,粒子群算法等等。這些算法特點各異,適用于不同的環(huán)境。其中人工勢場法是一種應(yīng)用比較廣泛的算法,能在動態(tài)和靜態(tài)環(huán)境中實現(xiàn)避障。
人工勢場被表示成障礙物的斥力場和目標點的引力場的疊加,無人車在人工勢場的作用下從高勢場向低勢場運動,以完成路徑規(guī)劃和實現(xiàn)避障[4]。存在局部極小值使得無人車無法正常到達目標位置是傳統(tǒng)人工勢場法的一個主要問題。目前解決傳統(tǒng)人工勢場法局部極小值問題的方法有兩種,一種是用更加優(yōu)化的勢場函數(shù)來代替?zhèn)鹘y(tǒng)人工勢場函數(shù),降低出現(xiàn)局部極小值點的概率;另一種是融合其他的算法來解決傳統(tǒng)人工勢場的缺陷[4]。
本文通過在已有的人工勢場函數(shù)的基礎(chǔ)上利用梯度下降法對傳統(tǒng)人工勢場法進行優(yōu)化,找出產(chǎn)生局部極小值點的障礙物,再通過增加一個模擬風(fēng)阻力的外部的擾動函數(shù)來解決梯度下降法找出的局部極小值問題,使無人車可以跳出局部極小值點,順利到達目標點,通過MATLAB仿真驗證該方法的正確性。
無人車在人工勢場法中被看成力場中的一個物體,斥力場為障礙物對無人車產(chǎn)生的力場,引力場為目標對無人車產(chǎn)生的力場,兩種力場相互疊加形成合力場[5],無人車沿合力方向運動,最終到達目標點。
傳統(tǒng)人工勢場法函數(shù)為:
上式中,引力勢場函數(shù)是Uatt(X),斥力勢場函數(shù)是Urep(x),x為物體在大地坐標系中的位置。因此合力方程如下:
式中,F(xiàn)att(X)為目標對無人車的引力,F(xiàn)rep(X)為障礙物對無人車的斥力,F(xiàn)(X)為無人車所受的合力。
引力勢場函數(shù)為:
斥力場函數(shù)為:
由定義可知,合力為人工勢場的負梯度:
人工勢場引力為:
斥力函數(shù)為:
其中,引力增益用ε表示,無人車位置坐標用x表示,目標點的位置坐標用xg表示。障礙物的位置坐標用xo表示,斥力增益用k表示,障礙物對無人車影響的距離q0表示,當小于q0時無人車受到障礙物的斥力影響,而大于q0時,斥力為0。
圖1展示了傳統(tǒng)人工勢場法情況下受力示意圖。
圖1 傳統(tǒng)人工勢場法的受力圖
人工勢場法的計算比較簡單,而且使用方便,但是根據(jù)人工勢場法的受力示意圖可以看到合力為零時是由于引力與斥力大小相同,方向相反,在一條直線上,從而使人工勢場法在規(guī)劃無人車路徑時出現(xiàn)局部極小值點,合力為零或者合力反向就會使得路徑規(guī)劃失敗,無人車就會停止前進或者來回運動,這便會導(dǎo)致無人車無法到達目標位置,因此有必要對其進行改進與優(yōu)化。
根據(jù)傳統(tǒng)人工勢場法的受力示意圖可以清楚地知道,當合力為零時容易出現(xiàn)局部極小值點,合力反向時無人車將會來回運動,因此要避免這些情況的出現(xiàn)必須是的合力大于零,這樣無人車才可以順利到達目標位置。從此方面思考提出了先用梯度下降法來找出產(chǎn)生局部極小值的障礙物,再通過增加外部擾動的方法使合力大于零,從而解決局部極小值點的問題。改進后的流程圖如圖2所示。
圖2 改進人工勢場法流程圖
梯度下降法原理是如果實值函數(shù)F(x)在點a處可微且有定義,那么該函數(shù)在a點沿著梯度相反方向下降最快,從函數(shù)F對局部極小值的初始估計值開始對其進行優(yōu)化,若函數(shù)為凸函數(shù)則必定找到全局最優(yōu)解。而傳統(tǒng)人工勢場法的合力函數(shù)則是非凸函數(shù),存在局部最優(yōu),無法找出影響無人車路徑規(guī)劃的障礙物,故對其進行改進,使其為凸函數(shù),以便找出影響無人車到達目標位置的障礙物。
改進后的合力函數(shù)為:
式中ε為引力系數(shù),ρ為斥力系數(shù),q為無人車到原點距離,xg為目標點橫坐標,yg為目標點縱坐標,xo為障礙物橫坐標,yo為障礙物縱坐標,q0為障礙物斥力影響最小距離。
利用MATLAB隨機產(chǎn)生障礙物和目標點,并用傳統(tǒng)人工勢場法規(guī)劃出路徑,將所產(chǎn)生的目標點位置和每個障礙物利用梯度下降法來找出影響無人車出現(xiàn)局部極小值無法到達目標的障礙物。實驗結(jié)果如圖3所示。
圖3 梯度下降法計算結(jié)果
在圖3中,分別展示了影響無人車的障礙物和不影響無人車的障礙物,由圖中可以看到,當障礙物不影響無人車時,計算出來的q值與目標點到原點距離相同,且在忽略虛部的情況下合力剛好為零,無人車到達目標位置。對于影響無人車的障礙物,其合力在小于目標點到原點距離時已經(jīng)反向,故會使無人車無法到達目標位置。
圖4展示了改進后的人工勢場法的受力分析示意圖。
圖4 改進人工勢場法的受力圖
改進后的人工勢場引力函數(shù)為:
斥力函數(shù)為:
合力函數(shù)為:
如上式(9)所示, Fn為外部擾動,α為外部擾動Fn與x軸的夾角,在梯度下降法找出局部極小值點后,將外加擾動的分量全部施加在斥力上,引力不變,從而不會出現(xiàn)合力為零,避免了傳統(tǒng)人工勢場法的缺陷。
改進人工勢場法是否符合要求,無人車是否能夠在路徑規(guī)劃時不出現(xiàn)局部極小值點,躲避障礙,準確到達設(shè)定好的目標位置,需要通過軟件來進行驗證與分析。因此,利用MATLAB軟件搭建仿真實驗平臺來對改進后的方法的正確性進行驗證分析,同時也對傳統(tǒng)人工勢場法進行了對比驗證。此外還對夾角和外部擾動都必須在一定的范圍之內(nèi)進行了驗證。
傳統(tǒng)的人工勢場法用MATLAB仿真實驗結(jié)果如圖4所示。
圖5 傳統(tǒng)人工勢場法仿真實驗圖
由圖5可知,目標點位置是(10,10),障礙物的位置是(8,8),此時目標點與障礙物的位置比較近,就會出現(xiàn)局部極小值點,導(dǎo)致無人車無法到達目標點。
根據(jù)前面的梯度下降法找出的障礙物坐標,在相應(yīng)的障礙物位置增加模擬風(fēng)的外部擾動,使其跳出局部極小值,順利到達目標位置。
圖6展現(xiàn)了改進后的人工勢場法仿真實驗分析結(jié)果。
圖6 改進人工勢場法仿真實驗圖
由圖6所示,圓圈表示各個障礙物,仿真實驗時隨機設(shè)定障礙物位置,紅色表示無人車行駛路徑,綠色三角形表示目標點,通過在相應(yīng)的障礙物位置增加外部擾動。由于力是客觀存在,故在一定的誤差范圍之內(nèi),改變外部擾動大小以及與y軸夾角可以使得無人車能順利地到達目標點,避免開了局部極小值點。但是施加的外部擾動過大以及與y軸夾角過大也將會導(dǎo)致無人車偏離方向,無法到達目標點,仿真實驗結(jié)果如圖7、圖8所示。
圖7 外部擾動F過大仿真實驗結(jié)果圖
如圖7所示,當施加的外部擾動超過0<Fn≤10范圍時,無人車會偏離目標點,同時有可能會無法避開障礙物,從而導(dǎo)致路徑規(guī)劃失敗。
圖8 夾角過大仿真實驗結(jié)果圖
通過與傳統(tǒng)人工勢場法相比,改進后的人工勢場法在內(nèi)-0.5~0.5的誤差范圍內(nèi)可以準確到達目標點,避免了局部極小值。
本文通過梯度下降法和增加模擬風(fēng)的阻力外部擾動來改進和優(yōu)化傳統(tǒng)人工勢場法,使得傳統(tǒng)人工勢場法的局部極小值問題得到解決,在0.5~0.5的誤差范圍之內(nèi)可以順利到達目標位置。但無論是傳統(tǒng)人工勢場法,粒子群算法等還是改進的人工勢場法都是一種模型驅(qū)動,有一定的局限性,需要進一步研究,結(jié)合數(shù)據(jù)驅(qū)動來進行無人車的路徑規(guī)劃及避障,最終使無人車技術(shù)更加成熟。