范玉龍,黃 波,周 仟,陳賀軍
(上海工程技術大學機械與汽車工程學院,上海 201620)
路徑規劃任務是規劃出一條從起點到目標點的安全無碰撞的最優路徑。近幾年研究者不斷提出新方法應用于各類路徑規劃,主要有柵格法、離散人工勢場法、模糊算法、模型預測算法和遺傳算法等。人工勢場法模型設計簡單、易于理解,能夠規劃出較為平滑的路徑,同時具有很強的實時性,因此被廣泛應用于機器人和智能車路徑規劃中。文獻[1]首次提出人工勢場法理論,其原理是將運動物體的運動空間看作虛擬力場空間,由目標點吸引力和障礙物斥力的共同作用規劃物體運動路徑。文獻[2]分析了傳統人工勢場法存在的一些缺陷:當目標點附近有障礙物或障礙物處于運動物體與目標點之間時會存在目標不可達問題;當環境中某點的斥力與引力相等且方向相反時,物體會出現停擺不前而無法逃出局部極小值點的問題。
對于上述傳統人工勢場法存在的問題,很多學者都提出了改進方法。如文獻[3]改進了函數形式,通過選取適當的增益系數解決了目標不可達問題;文獻[4]在斥力勢場函數中加入目標與障礙物距離調節因子,使得在目標點附近斥力為零;文獻[5]提出在局部極小點改變斥力角度和設定虛擬最小區域的方案;文獻[6]針對機器人無法到達目標點的問題,提出改進勢場模型中的斥力構成以及采用虛擬水流法解決局部最小陷阱問題;文獻[7]通過“沿邊規劃”解決局部極小值問題;文獻[8]將模糊控制與人工勢場法相結合,在相應時刻改變運動物體的合力大小及方向,從而避免在局部極小點出現震蕩;文獻[9]提出設置中間目標點的方法,給機器人一個外力以確保機器人能夠逃出最小值陷阱;文獻[10]、[11]通過改變斥力解決合力為零的問題,通過將斥力旋轉一定角度,依據障礙物距離大小采用相應的斥力和引力,并設置障礙物影響范圍以解決極小值問題;文獻[12]基于改進人工勢場法提出一種救災機器人路徑規劃方法,將障礙填充法與擾動場法相結合以解決局部最小點問題;文獻[13]重新定義了引力公式,以提高機器人避障和動態目標追蹤的靈活性;文獻[14]提出在動態不確定環境下快速調整移動路徑的方法,以調整當前狀態與目標狀態之間的移動路徑;文獻[15]、[16]考慮機器人與目標點的相對位置及相對速度因素,構建引力勢場和引力函數,以提高動態環境下機器人的避障能力;文獻[17]通過改變斥力方向和添加距離因子避免了傳統人工勢場法的目標不可達問題;文獻[18]基于最小轉向半徑對算法作進一步改進,以滿足小車的轉向行駛要求;文獻[19]引入斥力偏轉模型,增加了斥力增益系數函數,以優化路徑規劃中航向改變過大的問題;文獻[20]在斥力函數中引入距離影響因子,以解決目標點旁存在障礙物時的目標不可達問題,通過引入動態法向力以消除由單個障礙物形成的局部極值點振蕩。
本文基于改進的人工勢場法,通過動態改變障礙物影響范圍來解決目標點附近存在障礙物時的目標不可達問題。對于局部極小值,當小車陷入局部極小點時,通過設置虛擬障礙物,由虛擬障礙物提供額外的逃逸力以引導小車逃離局部極值點。通過設置合適的對比實驗,在單個和多個障礙物的條件下,比較傳統算法和改進算法的實際規劃效果,最后在MATLAB 仿真環境中對規劃算法進行驗證。
小車在虛擬勢場中運動時受到兩種勢場力影響:障礙物的斥力Fr,方向由障礙物指向小車;目標點的引力Fa,方向由小車指向目標點。其中,L0表示靜態障礙物作用范圍,受力情況如圖1 所示。
在二維空間中,忽略小車自身幾何大小,即把小車簡化為質點模型。考慮到所有研究對象的平面坐標,假設小車坐標為L=(xv,yv),目標點位置坐標為Lg=(xg,yg),定義目標點對小車的引力勢場為兩者歐式距離的函數:

Fig.1 Schematic diagram of traditional artificial potential field method圖1 傳統人工勢場法原理示意圖

式中,η是引力勢場的系數,令上式中的相對距離為D:

對引力勢場Ua求解偏導數,即為小車所受目標點的引力:

假設運動空間中障礙物坐標為Lb=(xb,yb),則小車所受障礙物斥力的勢場函數為:

其中,μ是斥力勢場的系數,L0是斥力勢場的最大作用距離,Lvb是障礙物到小車的距離,即認為在L0范圍內時小車才會受到障礙物的斥力作用。Lvb可采用以下公式計算:

根據式(5)計算出運動小車受到的障礙物斥力為:

通過以上分析,小車在虛擬勢場中運動時假設受到n個障礙物的斥力作用,其所受合力為:

當小車行駛的目標位置附近存在障礙物時,小車受到的引力變得越來越小,障礙物的斥力變得越來越大。因此,小車可能會處于停止或振蕩狀態而不能到達目標點(見圖2)。

Fig.2 Target unreachable diagram圖2 目標不可達示意圖
在原斥力勢場函數中,通過改變障礙物影響范圍,使得目標點不再受到障礙物斥力的作用,從而使小車繼續向目標點行進。改進后的斥力勢場函數如下:

式中,用新的范圍s 替代原先的障礙物影響范圍,使小車順利到達目標。
當小車、障礙物、目標點在同一條直線上,且障礙物處于中間位置時,小車會處于一個臨界狀態,此時小車會出現振蕩或停滯。當小車陷入局部極小點時,將障礙物當作質點,以障礙物影響的最大距離為半徑畫圓。以小車質心與障礙物質心的連線作為參考線,從小車質心作圓的切線,以與參考線夾角較小的切線為參考方向。然后在參考方向上設置虛擬障礙物,由虛擬障礙物提供額外的逃逸力引導小車逃離局部極小值點(見圖3)。

Fig.3 Schematic diagram of virtual obstacle method圖3 虛擬障礙物法示意圖
假設虛擬障礙物的斥力勢場函數為:

其中,μ′為大于零的虛擬斥力勢場常數,Lvb′為小車與虛擬障礙物之間距離,Lv是虛擬障礙物對小車的影響距離。只有小車與虛擬障礙物之間距離小于Lv時,虛擬障礙物才會對小車產生斥力,則虛擬斥力為:

為實現上述算法,設計算法流程如圖4 所示。

Fig.4 Algorithm flow圖4 算法流程
實驗步驟如下:①在MATLAB2018 中建立工作空間坐標系,設置合理的汽車起點、目標點、引力常數、斥力常數、障礙物個數、步長、迭代次數等參數;②根據改進的人工勢場法進行引力、斥力與合力計算;③判斷是否存在局部極小點,若存在,則利用作切線的方法設置虛擬目標點,通過虛擬斥力使得車輛逃離平衡點;④根據改進的人工勢場法計算下一步要到達的坐標,判斷目標點附近是否存在影響車輛到達目標的障礙物,若存在,動態改變障礙物影響距離以消除斥力的作用,使得車輛可以順利抵達目標點;⑤判斷計算出的坐標點是否與目標點重合,若重合,則結束算法流程,否則重新回到步驟③繼續計算,直到抵達目標點為止。
為了驗證上述算法在實際應用中的有效性與可行性,在MATLAB 仿真環境下設計實驗,分別用來說明傳統人工勢場法與改進后的人工勢場法在目標不可達、局部極小點問題上的對比。首先對原算法進行仿真,可看出傳統人工勢場法存在目標不可達問題,這是因為目標點附近存在障礙物,障礙物的斥力作用使得小車出現振蕩或停滯,從而導致小車不能順利到達目標點。考慮在單個障礙物情況下,傳統人工勢場法與改進后的人工勢場法在目標不可達問題上的表現,仿真結果如圖5 所示。

Fig.5 Single obstacle target unreachable圖5 單個障礙物目標不可達
通過分析可知,由于單個障礙物在目標點附近對小車的斥力,導致其不能順利抵達目標點,動態改變障礙物影響距離后,小車可按照規劃出的平滑路徑到達目標點。進一步考慮在多個障礙物的情況下,改進后的人工勢場法能否保證小車到達目標點。為此,在單個障礙物基礎上添加多個障礙物,以研究在多個障礙物綜合影響下的小車運動情況。仿真結果如圖6 所示。

Fig.6 Multiple obstacles target unreachable圖6 多個障礙物目標不可達
由圖6 可知,傳統人工勢場法規劃出的路徑不能到達目標,目標點附近存在兩個障礙物并且對小車的行進造成了影響,因此紅線在兩個障礙物中間附近不能繼續前進,小車在這里處于受力平衡狀態而出現停滯。藍線是改進后的人工勢場法規劃路線,當小車在兩個障礙物中間停滯不前時,通過動態縮小障礙物影響范圍,使得小車能夠在引力作用下繼續行進。由圖6 可以看到,小車能夠避開目標點附近障礙物,成功到達目標點。
為驗證局部極小點的路徑規劃問題,考慮在目標、障礙物、小車共線的情況下,單個與多個障礙物作用對最終結果的影響。首先,當小車、障礙物、目標點在同一條直線上,且障礙物處于中間位置時,小車在障礙物影響范圍內會出現振蕩或停滯,因此不能繼續前進。為驗證改進后的虛擬障礙物可以幫助小車逃離局部極小值點,在MATLAB中進行仿真,結果如圖7 所示。

Fig.7 Local minima of single obstacle圖7 單個障礙物局部極小點
通過分析圖7 可知,改進后的人工勢場法可以較為平滑地規劃出路徑,引導小車順利到達目標點。
進一步考慮在多個障礙物情況下的避障能力,仿真結果如圖8 所示。

Fig.8 Local minima of multiple obstacles圖8 多個障礙物局部極小點
通過進一步分析可知,在多個障礙物存在的情況下,傳統人工勢場法由于陷入局部極小值點而不能到達目標。改進后的人工勢場法利用虛擬障礙物的逃逸力引導小車繞開局部極小點,可在多個障礙物的間隙中規劃出一條避開局部極小點、整體比較平順、長度合適的路徑。
為解決傳統人工勢場法存在的目標不可達、局部極小值等問題,本文主要作了以下幾方面改進:首先,通過動態改變障礙物影響范圍,使得目標點附近障礙物不影響小車繼續前進,并在具有單個和多個障礙物情況下進行仿真,結果表明改進后的算法能夠引導小車抵達目標點;其次,當小車陷入局部極小點時,將障礙物當作質點,以障礙物影響的最大距離為半徑畫圓,以小車質心與障礙物質心的連線作為參考線,從小車質心作圓的切線,以與參考線夾角較小的切線為參考方向,之后在參考方向上設置虛擬障礙物,由虛擬障礙物提供的額外逃逸力引導小車逃離局部極小點。MATLAB 仿真結果表明了改進后算法的有效性,但小車在實際復雜環境下的避障能力有待后續進一步研究。