方朋朋,楊家富,施楊洋,于凌宇
(南京林業(yè)大學(xué) 機(jī)械電子工程學(xué)院,南京 210037)
隨著無人車技術(shù)快速發(fā)展,靜態(tài)和動(dòng)態(tài)環(huán)境中精確避障已成為其關(guān)鍵技術(shù)。目前主要通過硬件和軟件共同配合實(shí)現(xiàn)避障功能,采用的主要避障算法有:人工勢(shì)場(chǎng)法[1~3],遺傳算法,模糊控制算法,粒子群算法等等。這些算法特點(diǎn)各異,適用于不同的環(huán)境。其中人工勢(shì)場(chǎng)法是一種應(yīng)用比較廣泛的算法,能在動(dòng)態(tài)和靜態(tài)環(huán)境中實(shí)現(xiàn)避障。
人工勢(shì)場(chǎng)被表示成障礙物的斥力場(chǎng)和目標(biāo)點(diǎn)的引力場(chǎng)的疊加,無人車在人工勢(shì)場(chǎng)的作用下從高勢(shì)場(chǎng)向低勢(shì)場(chǎng)運(yùn)動(dòng),以完成路徑規(guī)劃和實(shí)現(xiàn)避障[4]。存在局部極小值使得無人車無法正常到達(dá)目標(biāo)位置是傳統(tǒng)人工勢(shì)場(chǎng)法的一個(gè)主要問題。目前解決傳統(tǒng)人工勢(shì)場(chǎng)法局部極小值問題的方法有兩種,一種是用更加優(yōu)化的勢(shì)場(chǎng)函數(shù)來代替?zhèn)鹘y(tǒng)人工勢(shì)場(chǎng)函數(shù),降低出現(xiàn)局部極小值點(diǎn)的概率;另一種是融合其他的算法來解決傳統(tǒng)人工勢(shì)場(chǎng)的缺陷[4]。
本文通過在已有的人工勢(shì)場(chǎng)函數(shù)的基礎(chǔ)上利用梯度下降法對(duì)傳統(tǒng)人工勢(shì)場(chǎng)法進(jìn)行優(yōu)化,找出產(chǎn)生局部極小值點(diǎn)的障礙物,再通過增加一個(gè)模擬風(fēng)阻力的外部的擾動(dòng)函數(shù)來解決梯度下降法找出的局部極小值問題,使無人車可以跳出局部極小值點(diǎn),順利到達(dá)目標(biāo)點(diǎn),通過MATLAB仿真驗(yàn)證該方法的正確性。
無人車在人工勢(shì)場(chǎng)法中被看成力場(chǎng)中的一個(gè)物體,斥力場(chǎng)為障礙物對(duì)無人車產(chǎn)生的力場(chǎng),引力場(chǎng)為目標(biāo)對(duì)無人車產(chǎn)生的力場(chǎng),兩種力場(chǎng)相互疊加形成合力場(chǎng)[5],無人車沿合力方向運(yùn)動(dòng),最終到達(dá)目標(biāo)點(diǎn)。
傳統(tǒng)人工勢(shì)場(chǎng)法函數(shù)為:

上式中,引力勢(shì)場(chǎng)函數(shù)是Uatt(X),斥力勢(shì)場(chǎng)函數(shù)是Urep(x),x為物體在大地坐標(biāo)系中的位置。因此合力方程如下:

式中,F(xiàn)att(X)為目標(biāo)對(duì)無人車的引力,F(xiàn)rep(X)為障礙物對(duì)無人車的斥力,F(xiàn)(X)為無人車所受的合力。
引力勢(shì)場(chǎng)函數(shù)為:

斥力場(chǎng)函數(shù)為:

由定義可知,合力為人工勢(shì)場(chǎng)的負(fù)梯度:

人工勢(shì)場(chǎng)引力為:

斥力函數(shù)為:

其中,引力增益用ε表示,無人車位置坐標(biāo)用x表示,目標(biāo)點(diǎn)的位置坐標(biāo)用xg表示。障礙物的位置坐標(biāo)用xo表示,斥力增益用k表示,障礙物對(duì)無人車影響的距離q0表示,當(dāng)小于q0時(shí)無人車受到障礙物的斥力影響,而大于q0時(shí),斥力為0。
圖1展示了傳統(tǒng)人工勢(shì)場(chǎng)法情況下受力示意圖。

圖1 傳統(tǒng)人工勢(shì)場(chǎng)法的受力圖
人工勢(shì)場(chǎng)法的計(jì)算比較簡單,而且使用方便,但是根據(jù)人工勢(shì)場(chǎng)法的受力示意圖可以看到合力為零時(shí)是由于引力與斥力大小相同,方向相反,在一條直線上,從而使人工勢(shì)場(chǎng)法在規(guī)劃無人車路徑時(shí)出現(xiàn)局部極小值點(diǎn),合力為零或者合力反向就會(huì)使得路徑規(guī)劃失敗,無人車就會(huì)停止前進(jìn)或者來回運(yùn)動(dòng),這便會(huì)導(dǎo)致無人車無法到達(dá)目標(biāo)位置,因此有必要對(duì)其進(jìn)行改進(jìn)與優(yōu)化。
根據(jù)傳統(tǒng)人工勢(shì)場(chǎng)法的受力示意圖可以清楚地知道,當(dāng)合力為零時(shí)容易出現(xiàn)局部極小值點(diǎn),合力反向時(shí)無人車將會(huì)來回運(yùn)動(dòng),因此要避免這些情況的出現(xiàn)必須是的合力大于零,這樣無人車才可以順利到達(dá)目標(biāo)位置。從此方面思考提出了先用梯度下降法來找出產(chǎn)生局部極小值的障礙物,再通過增加外部擾動(dòng)的方法使合力大于零,從而解決局部極小值點(diǎn)的問題。改進(jìn)后的流程圖如圖2所示。

圖2 改進(jìn)人工勢(shì)場(chǎng)法流程圖
梯度下降法原理是如果實(shí)值函數(shù)F(x)在點(diǎn)a處可微且有定義,那么該函數(shù)在a點(diǎn)沿著梯度相反方向下降最快,從函數(shù)F對(duì)局部極小值的初始估計(jì)值開始對(duì)其進(jìn)行優(yōu)化,若函數(shù)為凸函數(shù)則必定找到全局最優(yōu)解。而傳統(tǒng)人工勢(shì)場(chǎng)法的合力函數(shù)則是非凸函數(shù),存在局部最優(yōu),無法找出影響無人車路徑規(guī)劃的障礙物,故對(duì)其進(jìn)行改進(jìn),使其為凸函數(shù),以便找出影響無人車到達(dá)目標(biāo)位置的障礙物。
改進(jìn)后的合力函數(shù)為:

式中ε為引力系數(shù),ρ為斥力系數(shù),q為無人車到原點(diǎn)距離,xg為目標(biāo)點(diǎn)橫坐標(biāo),yg為目標(biāo)點(diǎn)縱坐標(biāo),xo為障礙物橫坐標(biāo),yo為障礙物縱坐標(biāo),q0為障礙物斥力影響最小距離。
利用MATLAB隨機(jī)產(chǎn)生障礙物和目標(biāo)點(diǎn),并用傳統(tǒng)人工勢(shì)場(chǎng)法規(guī)劃出路徑,將所產(chǎn)生的目標(biāo)點(diǎn)位置和每個(gè)障礙物利用梯度下降法來找出影響無人車出現(xiàn)局部極小值無法到達(dá)目標(biāo)的障礙物。實(shí)驗(yàn)結(jié)果如圖3所示。

圖3 梯度下降法計(jì)算結(jié)果
在圖3中,分別展示了影響無人車的障礙物和不影響無人車的障礙物,由圖中可以看到,當(dāng)障礙物不影響無人車時(shí),計(jì)算出來的q值與目標(biāo)點(diǎn)到原點(diǎn)距離相同,且在忽略虛部的情況下合力剛好為零,無人車到達(dá)目標(biāo)位置。對(duì)于影響無人車的障礙物,其合力在小于目標(biāo)點(diǎn)到原點(diǎn)距離時(shí)已經(jīng)反向,故會(huì)使無人車無法到達(dá)目標(biāo)位置。
圖4展示了改進(jìn)后的人工勢(shì)場(chǎng)法的受力分析示意圖。

圖4 改進(jìn)人工勢(shì)場(chǎng)法的受力圖

改進(jìn)后的人工勢(shì)場(chǎng)引力函數(shù)為:

斥力函數(shù)為:

合力函數(shù)為:

如上式(9)所示, Fn為外部擾動(dòng),α為外部擾動(dòng)Fn與x軸的夾角,在梯度下降法找出局部極小值點(diǎn)后,將外加擾動(dòng)的分量全部施加在斥力上,引力不變,從而不會(huì)出現(xiàn)合力為零,避免了傳統(tǒng)人工勢(shì)場(chǎng)法的缺陷。
改進(jìn)人工勢(shì)場(chǎng)法是否符合要求,無人車是否能夠在路徑規(guī)劃時(shí)不出現(xiàn)局部極小值點(diǎn),躲避障礙,準(zhǔn)確到達(dá)設(shè)定好的目標(biāo)位置,需要通過軟件來進(jìn)行驗(yàn)證與分析。因此,利用MATLAB軟件搭建仿真實(shí)驗(yàn)平臺(tái)來對(duì)改進(jìn)后的方法的正確性進(jìn)行驗(yàn)證分析,同時(shí)也對(duì)傳統(tǒng)人工勢(shì)場(chǎng)法進(jìn)行了對(duì)比驗(yàn)證。此外還對(duì)夾角和外部擾動(dòng)都必須在一定的范圍之內(nèi)進(jìn)行了驗(yàn)證。
傳統(tǒng)的人工勢(shì)場(chǎng)法用MATLAB仿真實(shí)驗(yàn)結(jié)果如圖4所示。

圖5 傳統(tǒng)人工勢(shì)場(chǎng)法仿真實(shí)驗(yàn)圖
由圖5可知,目標(biāo)點(diǎn)位置是(10,10),障礙物的位置是(8,8),此時(shí)目標(biāo)點(diǎn)與障礙物的位置比較近,就會(huì)出現(xiàn)局部極小值點(diǎn),導(dǎo)致無人車無法到達(dá)目標(biāo)點(diǎn)。
根據(jù)前面的梯度下降法找出的障礙物坐標(biāo),在相應(yīng)的障礙物位置增加模擬風(fēng)的外部擾動(dòng),使其跳出局部極小值,順利到達(dá)目標(biāo)位置。
圖6展現(xiàn)了改進(jìn)后的人工勢(shì)場(chǎng)法仿真實(shí)驗(yàn)分析結(jié)果。

圖6 改進(jìn)人工勢(shì)場(chǎng)法仿真實(shí)驗(yàn)圖
由圖6所示,圓圈表示各個(gè)障礙物,仿真實(shí)驗(yàn)時(shí)隨機(jī)設(shè)定障礙物位置,紅色表示無人車行駛路徑,綠色三角形表示目標(biāo)點(diǎn),通過在相應(yīng)的障礙物位置增加外部擾動(dòng)。由于力是客觀存在,故在一定的誤差范圍之內(nèi),改變外部擾動(dòng)大小以及與y軸夾角可以使得無人車能順利地到達(dá)目標(biāo)點(diǎn),避免開了局部極小值點(diǎn)。但是施加的外部擾動(dòng)過大以及與y軸夾角過大也將會(huì)導(dǎo)致無人車偏離方向,無法到達(dá)目標(biāo)點(diǎn),仿真實(shí)驗(yàn)結(jié)果如圖7、圖8所示。

圖7 外部擾動(dòng)F過大仿真實(shí)驗(yàn)結(jié)果圖
如圖7所示,當(dāng)施加的外部擾動(dòng)超過0<Fn≤10范圍時(shí),無人車會(huì)偏離目標(biāo)點(diǎn),同時(shí)有可能會(huì)無法避開障礙物,從而導(dǎo)致路徑規(guī)劃失敗。

圖8 夾角過大仿真實(shí)驗(yàn)結(jié)果圖
通過與傳統(tǒng)人工勢(shì)場(chǎng)法相比,改進(jìn)后的人工勢(shì)場(chǎng)法在內(nèi)-0.5~0.5的誤差范圍內(nèi)可以準(zhǔn)確到達(dá)目標(biāo)點(diǎn),避免了局部極小值。
本文通過梯度下降法和增加模擬風(fēng)的阻力外部擾動(dòng)來改進(jìn)和優(yōu)化傳統(tǒng)人工勢(shì)場(chǎng)法,使得傳統(tǒng)人工勢(shì)場(chǎng)法的局部極小值問題得到解決,在0.5~0.5的誤差范圍之內(nèi)可以順利到達(dá)目標(biāo)位置。但無論是傳統(tǒng)人工勢(shì)場(chǎng)法,粒子群算法等還是改進(jìn)的人工勢(shì)場(chǎng)法都是一種模型驅(qū)動(dòng),有一定的局限性,需要進(jìn)一步研究,結(jié)合數(shù)據(jù)驅(qū)動(dòng)來進(jìn)行無人車的路徑規(guī)劃及避障,最終使無人車技術(shù)更加成熟。