郜 輝,呂志剛,王 賓,夏開成,毛 琳,王 辛,李 彬
(西安工業(yè)大學(xué)電子信息工程學(xué)院,陜西 西安 710021)
人工勢場法是Khatib首次提出的理論,它的基本思想是將整個環(huán)境轉(zhuǎn)化為一個巨大的人工勢場模型[1],將移動機器人看做為一個運動的質(zhì)點,該質(zhì)點位于整個勢場內(nèi),同時移動機器人運動的目標點自身產(chǎn)生吸引力勢場[2],環(huán)境中的所有障礙物會產(chǎn)生排斥力勢場,移動機器人在環(huán)境中運動時會受到2種類型力的作用[3],第1種是最終目標點的引力勢場對移動機器人產(chǎn)生的吸引力,第2種是移動機器人運行過程中所有障礙物的排斥勢場對移動機器人產(chǎn)生的排斥力[4]。移動機器人在整個運動過程中所受的合力由目標點對移動機器人的引力和所有障礙物對移動機器人的斥力組成,移動機器人在引力與斥力的合力牽引下從起點移動到目標點,完成局部路徑規(guī)劃[5]。
人工勢場法從產(chǎn)生之初一直是移動機器人避障算法中的重要算法[6]。因為人工勢場法原理簡單,生成的路徑光滑,而且實時性好,也可以保證移動機器人的安全,避免和障礙物接觸,所以人工勢場法適合用在環(huán)境相對簡單、障礙物少的場景中,不適合在復(fù)雜的障礙物場景中[7]。人工勢場法的弊端有:當目標點距離障礙物太近,導(dǎo)致移動機器人所受障礙物斥力大于目標點吸引力,移動機器人出現(xiàn)目標不可達現(xiàn)象;當移動機器人運動環(huán)境復(fù)雜時容易產(chǎn)生引力和斥力的平衡狀態(tài),從而陷入局部極小點,導(dǎo)致移動機器人停止不前;另外移動機器人如果利用人工勢場法在障礙物前或在狹窄通道中運行時,極易產(chǎn)生振蕩現(xiàn)象[8]。
對于人工勢場法的研究由來已久,已經(jīng)有很多學(xué)者對人工勢場法的缺陷進行了改進[9]。文獻[10]引入了預(yù)測距離,并設(shè)置了虛擬目標點,在機器人還未陷入局部極小點之前使用虛擬目標點牽引移動機器人走出局部極小點;文獻[11]對引力場函數(shù)進行了改進,并在無人機陷入局部極小點后,以障礙物邊界為子目標點,使無人機可以飛出局部極小點,但是由于是以障礙物邊界為子目標點,有可能導(dǎo)致無人機碰撞障礙物。
在此,針對局部極小值問題,對4種局部極小值解決辦法進行討論分析。其中,增加子目標點的方式與繞障礙物走的方式成功解決了局部極小點問題,成功抵達了目標點,并通過仿真實驗驗證了增加障礙物排斥力方法解決局部極小點問題的局限性。
人工勢場法的基本原理就是將移動機器人假設(shè)成1個質(zhì)點,將移動機器人所在的環(huán)境假想成1個虛擬力場[12],移動機器人在虛擬力場中運動,虛擬力場是由目標點對移動機器人的引力場和障礙物對移動機器人的斥力場組成。所有的障礙物對移動機器人均有斥力作用[13],根據(jù)障礙物距離的遠近確定斥力場的大小,引力場由目標點產(chǎn)生。因此,人工勢場法的勢場函數(shù)就是引力場與斥力場的和,如式(1)所示。移動機器人的移動方向為勢場函數(shù)下降的方向,即勢場下移動機器人的合力受力方向。
U(q)=Uatt(q)+Urep(q)
(1)
q為移動機器人當前的坐標點;Uatt(q)為移動機器人的引力勢場[14];Urep(q)為移動機器人的斥力勢場;U(q)為移動機器人在勢場中所受的總勢場和。
在虛擬力場中移動機器人受到的總牽引力為當前位置總勢場的負梯度,移動機器人的牽引力由引力和斥力組成,在虛擬力場中引力是引力場的負梯度,斥力是斥力場的負梯度[15]。因此,移動機器人在勢場中所受力為
F(q)=Fatt(q)+Frep(q)-
Uatt(q)-Urep(q)
(2)
F(q)為移動機器人在虛擬力場中受到的總的合力;Fatt(q)為移動機器人受目標點的引力,引導(dǎo)移動機器人走向目標點;Frep(q)為移動機器人所受的總斥力,使移動機器人遠離障礙物[16]。
由于在移動機器人避障過程中,只受1個目標點牽引,但是會有多個障礙物同時對移動機器人進行作用,所以移動機器人在虛擬力場中斥力場與斥力不能單一的進行計算,需要計算多個障礙物對移動機器人的斥力總和[17],移動機器人在虛擬力場中斥力為
Frep(q)=∑nFrep(q)-∑nUrep(q)
(3)
n為整個環(huán)境中的障礙物個數(shù)。移動機器人在環(huán)境中受力分析如圖1所示,其中F為移動機器人所受合力。
圖1 移動機器人受力分析
如圖1所示,在移動機器人所處的環(huán)境中,共有4個障礙物和1個目標點。移動機器人受到目標點產(chǎn)生的吸引力Fatt,受到障礙物1產(chǎn)生的排斥力Frep(1),受到障礙物2產(chǎn)生的排斥力Frep(2),受到障礙物3產(chǎn)生的排斥力Frep(3),受到障礙物4產(chǎn)生的排斥力Frep(4),故移動機器人在當前位置共受到5個力的作用,5個力的合力為F。此外,移動機器人在當前位置的受力方向和運動方向也與F一致,在合力F的牽引下,移動機器人逐步抵達目標點。
傳統(tǒng)的人工勢場法在進行路徑規(guī)劃時,由于算法的特性原因,導(dǎo)致了傳統(tǒng)的人工勢場法有3個缺陷,如下所述。
a.缺陷一:局部極小值問題。當移動機器人在虛擬力場中所受引力與斥力大小相等、方向相反時,移動機器人處于受力平衡狀態(tài),當前位置所受合力為0,此時移動機器人陷入了局部極小值點[18]。移動機器人在局部極小值點附近的所有點位的合力都指向局部極小值,使得移動機器人無法走出該區(qū)域,或者在該區(qū)域產(chǎn)生振蕩[19]。
b.缺陷二:受力不平衡問題。傳統(tǒng)人工勢場法引力場函數(shù)與移動機器人和目標點距離成正比,當移動機器人距離目標點較遠時,引力場函數(shù)產(chǎn)生的引力過大,可能導(dǎo)致移動機器人與障礙物相撞[20]。
c.缺陷三:目標不可達問題。當此次路徑規(guī)劃中將目標點設(shè)置的位置距離障礙物很近時,障礙物會影響移動機器人的運動,障礙物產(chǎn)生的斥力會大于目標點產(chǎn)生的引力,導(dǎo)致移動機器人無法到達目標點,造成移動機器人的目標不可達問題[21]。
人工勢場法的局部極小值問題必須進行改進,改進算法有很多種,本文選用了4種解決局部極小值問題的辦法,進行了算法仿真驗證,并對比分析了4種解決辦法的優(yōu)缺點。4種解決辦法如下所述。
a.當移動機器人進入局部極小值之后,增加障礙物斥力,打破原有的平衡狀態(tài),迫使移動機器人走出局部極小值位置。
b.當移動機器人進入局部極小值之后,采用“繞墻走”的方式,圍繞障礙物的邊緣進行運動,使移動機器人走出局部極小值位置。
c.當移動機器人進入局部極小值之后,采用自動添加子目標點的方式,利用子目標點的牽引力引導(dǎo)移動機器人走出局部極小值位置,然后再從子目標點運動到最終的目標點。
d.當移動機器人進入局部極小值之后,采用人為添加子目標點的方式,利用子目標點的牽引力引導(dǎo)移動機器人走出局部極小值位置,然后再從子目標點運動到最終的目標點。
仿真實驗場景選用的是648×1 152的位圖地圖,地圖障礙物分布情況如圖2所示(圖中坐標數(shù)值進行了無量綱化處理,只表示場景大小,沒有具體單位,圖3~圖8類似)。
圖2 648×1 152地圖障礙物分布情況
本次路徑規(guī)劃中相關(guān)參數(shù)設(shè)置為:起點位置為(50,500);目標點位置為(1 100,50);移動機器人單步最大移動距離為2;移動機器人大小為10×10,長為10,高為10;吸引勢因子參數(shù)為300 000 000;排斥勢因子參數(shù)為300 000。
在當前參數(shù)的設(shè)置下,移動機器人在傳統(tǒng)人工勢場算法下的路徑規(guī)劃如圖3所示。
圖3 傳統(tǒng)人工勢場算法下的路徑規(guī)劃
圖3中,粗線條為人工勢場法的路徑,顯而易見,此方法陷入了局部極小值。因此,下面將分別使用4種方法解決傳統(tǒng)人工勢場法的局部極小值問題。
當移動機器人進入局部極小值之后,增加障礙物斥力,打破原有的平衡狀態(tài),迫使移動機器人走出局部極小值位置。
系統(tǒng)初始運行參數(shù)為:起點位置為(50,500);目標點位置為(1 100,50);移動機器人單步最大移動距離為2;移動機器人大小為10×10,長為10,高為10;吸引勢因子參數(shù)為300 000 000;排斥勢因子參數(shù)為300 000。
當移動機器人進入局部極小值位置后,增加障礙物排斥式因子參數(shù),增大障礙物排斥力,使移動機器人擺脫當前的局部極小值位置,當障礙物排斥勢因子參數(shù)由300 000增加到300 000 000時,仿真結(jié)果如圖4所示。
由圖4可知,增大障礙物排斥因子參數(shù)后,障礙
圖4 增加障礙物排斥因子的仿真結(jié)果
物排斥力增大,移動機器人從原來的局部極小值位置走出,但是隨后進入了新的局部極小值位置。由此可知,采用增加障礙物排斥力的方式可以使移動機器人走出局部極小值,但是并不能確保移動機器人成功抵達目標點,適用場景比較少。
當移動機器人進入局部極小值之后,采用“繞墻走”的方式,圍繞障礙物的邊緣進行運動,使移動機器人走出局部極小值位置。
系統(tǒng)初始運行參數(shù)如下:起點位置為(50,500);目標點位置為(1 100,50);移動機器人單步最大移動距離為2;移動機器人大小為10×10,長為10,高為10;吸引勢因子參數(shù)為300 000 000;排斥勢因子參數(shù)為300 000。
采取“繞墻走”方式仿真結(jié)果如圖5所示。
圖5 “繞墻走”方式解決局部極小值的仿真結(jié)果
由圖5可知,當移動機器人陷入局部極小值后,移動機器人繞著局部極小值位置上方的障礙物采取了“繞墻走”方式進行運動,當繞行過障礙物之后繼續(xù)執(zhí)行原來的算法,移動機器人成功抵達了目標點。由此可知,采用“繞墻走”方式可以成功地解決局部極小值問題,使移動機器人抵達目標點。
當移動機器人進入局部極小值之后,采用自動添加子目標點的方式,利用子目標點的牽引力引導(dǎo)移動機器人走出局部極小值位置,然后再從子目標點運動到最終的目標點。
系統(tǒng)初始運行參數(shù)為:起點位置為(50,500);目標點位置為(1 100,50);移動機器人單步最大移動距離為2;移動機器人大小為10×10,長為10,高為10;吸引勢因子參數(shù)為300 000 000;排斥勢因子參數(shù)為300 000。
當移動機器人陷入局部極小值后,算法自動生成子目標點(1 000,600),仿真結(jié)果如圖6所示。
圖6 自動生成子目標點(1 000,600)的仿真結(jié)果
當移動機器人陷入局部極小值后,算法自動生成子目標點(764,500),仿真結(jié)果如圖7所示。
圖7 自動生成子目標點(764,500)的仿真結(jié)果
由圖6和圖7可知,利用自動生成子目標點這種方式可以使移動機器人成功地走出局部極小位置,抵達目標點,但是由于子目標點位置是隨機生成的,路徑的長度不是最優(yōu)的,并且路徑的隨機性比較大,只有通過多次實驗才能選出最優(yōu)的路徑。
當移動機器人進入局部極小值之后,采用人為添加子目標點的方式,利用子目標點的牽引力引導(dǎo)移動機器人走出局部極小值位置,然后再從子目標點運動到最終的目標點。
系統(tǒng)初始運行參數(shù)為:起點位置為(50,500);目標點位置為(1 100,50);移動機器人單步最大移動距離為2;移動機器人大小為10×10,長為10,高為10;吸引勢因子參數(shù)為300 000 000;排斥勢因子參數(shù)為300 000。
當移動機器人陷入局部極小值后,人為的手動添加子目標點(760,200),仿真結(jié)果如圖8所示。
圖8 手動添加子目標點(760,200)的仿真結(jié)果
由圖8可知,采用手動添加子目標點的方式可以使移動機器人成功的走出局部極小位置,抵達目標點,而且路徑距離最短,是所有解決局部極小值問題方法中最好的方法。
解決局部極小值問題的4種方法仿真驗證結(jié)果如表1所示。
表1 解決局部極小值仿真結(jié)果
由表1可知,采用增加障礙物斥力的方式不一定能使移動機器人抵達目標點,不是一種優(yōu)良的算法改進方式;采用“繞墻走”方式可以使移動機器人擺脫局部極小值抵達目標點,但是路徑上距離障礙物較近,容易產(chǎn)生碰撞,對于一些要求不太高的場景可以采用此種方式進行路徑規(guī)劃;采用自動生成子目標點的方式可以使移動機器人擺脫局部極小值抵達目標點,但是通過仿真發(fā)現(xiàn),每次的子目標點位置都不一致,導(dǎo)致路徑長度不確定,缺乏穩(wěn)定性;采用人為添加子目標點的方式可以使移動機器人擺脫局部極小值并抵達目標點,并且路徑長度短、路徑安全性高,是4種方法中最有效的方法。
通過4種不同的方法對人工勢場法的局部極小值問題進行了相關(guān)研究與仿真驗證。首先介紹了增加障礙物斥力、“繞墻走”方式、自動添加子目標點、手動添加子目標點等4種解決局部極小值的方法;然后分析了人工勢場法的缺陷原因,并對人工勢場法的局部極小值問題進行了改進;最后進行了仿真實驗,結(jié)果表明采用人為添加子目標點的方式可以使移動機器人擺脫局部極小值并抵達目標點,并且路徑長度短、路徑安全性高,是4種方法中最有效的方法。