張 豐,廖衛(wèi)強(qiáng),2,喬中飛,李光澤
(1.集美大學(xué)輪機(jī)工程學(xué)院,福建 廈門 361021;2.福建省船舶與海洋工程重點(diǎn)實(shí)驗(yàn)室,福建 廈門 361021)
無(wú)人船集船舶設(shè)計(jì)、人工智能、信息處理和運(yùn)動(dòng)控制等專業(yè)技術(shù)于一體,能夠在海洋環(huán)境中自主航行并完成各種任務(wù)[1]。其中路徑規(guī)劃是無(wú)人船技術(shù)的重要組成部分,合理的路徑規(guī)劃不僅能使無(wú)人船安全避開海上障礙物,還能使其節(jié)省時(shí)間及能耗。因此,路徑規(guī)劃對(duì)于無(wú)人船來(lái)說(shuō)有著重要的意義。
目前針對(duì)無(wú)人船路徑規(guī)劃的算法主要有:粒子群算法、人工勢(shì)場(chǎng)法、遺傳算法、禁忌搜索算法等。其中,人工勢(shì)場(chǎng)法(artificial potential field,APF)算法具有計(jì)算量小、原理簡(jiǎn)單和生成路徑平滑等優(yōu)點(diǎn),因此,被廣泛應(yīng)用于無(wú)人船的路徑規(guī)劃[2-4]。但經(jīng)典人工勢(shì)場(chǎng)法尚存在一些不足[5-8],如:目標(biāo)點(diǎn)不可達(dá)、局部極小值、路徑振蕩及冗余等。因此需要對(duì)該方法進(jìn)行改進(jìn)。
對(duì)于傳統(tǒng)人工勢(shì)場(chǎng)法存在的問(wèn)題,目前已有多種改進(jìn)方法。劉翰培等[9]在危險(xiǎn)區(qū)域融合模糊控制算法,克服了傳統(tǒng)人工勢(shì)場(chǎng)法的局部極小值問(wèn)題;Zhou等[10]將人工勢(shì)場(chǎng)法結(jié)合粒子群算法優(yōu)化切向向量,改善了目標(biāo)點(diǎn)不可達(dá)問(wèn)題;林潔等[11]通過(guò)引用模擬退火算法,改進(jìn)傳統(tǒng)人工勢(shì)場(chǎng)函數(shù),提出“沿邊走”的策略,有效解決了容易陷入局部極小值問(wèn)題;任工昌等[12]在傳統(tǒng)勢(shì)力場(chǎng)基礎(chǔ)上引入障礙物速度斥力場(chǎng)函數(shù),實(shí)現(xiàn)機(jī)器人的動(dòng)態(tài)路徑規(guī)劃;胡杰等[13]提出一種用偏轉(zhuǎn)角度來(lái)構(gòu)建附加牽引力的方法,以解決局部極小值問(wèn)題;Guang等[14]提出利用分段混合算法改進(jìn)勢(shì)場(chǎng)函數(shù),解決目標(biāo)點(diǎn)不可達(dá)及局部極小值問(wèn)題。
本文針對(duì)無(wú)人船人工勢(shì)場(chǎng)法路徑規(guī)劃中的問(wèn)題,對(duì)斥力函數(shù)進(jìn)行改進(jìn),以解決目標(biāo)不可達(dá)問(wèn)題。通過(guò)艏向角限制,使船舶無(wú)法進(jìn)行大角度折返運(yùn)動(dòng),限制船舶下一點(diǎn)位移,使其離開單一障礙物引起的局部極小值問(wèn)題;通過(guò)增加隨機(jī)擾動(dòng)量,從而使引力出現(xiàn)誤差,解決多個(gè)障礙物造成的局部極小值問(wèn)題;通過(guò)路徑優(yōu)化,減小路徑振蕩,實(shí)現(xiàn)路徑的平滑性。
人工勢(shì)場(chǎng)法由引力勢(shì)場(chǎng)和斥力勢(shì)場(chǎng)組成[15]。目標(biāo)點(diǎn)對(duì)機(jī)器人產(chǎn)生引力作用,障礙物對(duì)無(wú)人船產(chǎn)生斥力作用,在引力與斥力合力作用下無(wú)人船向目標(biāo)點(diǎn)移動(dòng)。
傳統(tǒng)的斥力勢(shì)場(chǎng)函數(shù)為:
(1)
(2)
式中:Fr為障礙物對(duì)無(wú)人船的斥力。
結(jié)合式(1)和式(2)可以發(fā)現(xiàn),當(dāng)dji≤d0時(shí),隨著無(wú)人船和障礙物之間的距離dji的減小,斥力勢(shì)能Er和斥力Fr都會(huì)上升;當(dāng)dji趨近于0時(shí),斥力Fr會(huì)接近無(wú)窮大。
從式(1)可以知,當(dāng)目標(biāo)點(diǎn)和障礙物之間的距離很近時(shí),障礙物斥力會(huì)大于目標(biāo)點(diǎn)引力,導(dǎo)致無(wú)人船無(wú)法到達(dá)目標(biāo)點(diǎn)。在傳統(tǒng)的斥力勢(shì)場(chǎng)函數(shù)上,添加無(wú)人船與目標(biāo)之間的距離,修改斥力函數(shù),從而解決目標(biāo)點(diǎn)不可達(dá)問(wèn)題。改進(jìn)斥力勢(shì)場(chǎng)函數(shù)為:
(3)
局部極小值問(wèn)題是指船舶在移動(dòng)過(guò)程中的某個(gè)時(shí)刻,在當(dāng)前位置下目標(biāo)船舶受到的引力與斥力大小相等,方向相反,導(dǎo)致當(dāng)前位置點(diǎn)船舶合力為0,船舶不再移動(dòng)或者在小范圍內(nèi)往復(fù)抖動(dòng)的現(xiàn)象。典型的局部極小值問(wèn)題可以細(xì)分為兩種情況。1)在船舶與目標(biāo)點(diǎn)之間存在單一障礙物,且船舶、障礙物和目標(biāo)點(diǎn)處于同一直線。此時(shí),隨著船舶逐步向目標(biāo)點(diǎn)運(yùn)動(dòng),斥力逐漸增大,引力逐漸減小,當(dāng)運(yùn)動(dòng)到某個(gè)斥力與引力大小相近的位置,船舶在該處停止或者在該點(diǎn)處往復(fù)抖動(dòng),導(dǎo)致船舶無(wú)法到達(dá)目標(biāo)點(diǎn),如圖1a所示)。2)在復(fù)雜障礙物情況下,多個(gè)障礙物組成的復(fù)雜障礙物環(huán)境所產(chǎn)生的總斥力與目標(biāo)點(diǎn)產(chǎn)生的引力合力為0,導(dǎo)致船舶無(wú)法到達(dá)目標(biāo)點(diǎn),如圖1b)所示。
對(duì)情況1與情況2分別進(jìn)行處理。 局部極小值狀態(tài)判別為ρ(Xj,Xj-b) 針對(duì)情況1),通過(guò)加入艏向角限制,使船舶無(wú)法進(jìn)行大角度折返運(yùn)動(dòng),其最大艏向角為60°。該限制能夠?qū)Υ霸诤罄m(xù)位置的位移施加控制,使其離開局部受力平衡狀態(tài)。 針對(duì)情況2),施加隨機(jī)擾動(dòng)。當(dāng)出現(xiàn)多個(gè)障礙物的局部極小值時(shí),無(wú)人船下一步計(jì)算出的引力隨機(jī)地出現(xiàn)誤差,引力偏離正常值,使無(wú)人船跳出局部極小值。若仍陷于局部極小值,則繼續(xù)產(chǎn)生新的隨機(jī)誤差,直至無(wú)人船走出局部極小值。Fa=dEa/drj=karj·kb。式中:kb為隨機(jī)擾動(dòng)量,取值50%~200%。為了避免在隨機(jī)擾動(dòng)之下船舶會(huì)撞上障礙物,擾動(dòng)量的大小必須適當(dāng),太大船舶可能撞上障礙物,太小可能不足以跳出局部極小值。此外,施加隨機(jī)擾動(dòng)后,雖然無(wú)人船會(huì)跳出局部極小值,但是由于隨機(jī)性,無(wú)人船很有可能會(huì)在原地來(lái)回走動(dòng)多次才會(huì)成功跳出,在這個(gè)過(guò)程中,會(huì)產(chǎn)生冗余的路徑。 按照斥力修改方案,修改傳統(tǒng)人工勢(shì)場(chǎng)法的斥力函數(shù),然后進(jìn)行仿真模擬。引力系數(shù)ka=15;斥力系數(shù)kr=5;障礙物的斥力影響距離d0=2.5;rj的指數(shù)a取值為2。 運(yùn)行修改斥力函數(shù)后的人工勢(shì)場(chǎng)法,結(jié)果如圖3所示。圖3a)顯示傳統(tǒng)人工勢(shì)場(chǎng)法無(wú)法到達(dá)目標(biāo)點(diǎn);圖3b)為修改斥力函數(shù)后人工勢(shì)場(chǎng)法的仿真結(jié)果,成功抵達(dá)目標(biāo)點(diǎn)。證明修改斥力函數(shù)之后,解決了無(wú)法到達(dá)目標(biāo)點(diǎn)的問(wèn)題。 在修改斥力函數(shù)的基礎(chǔ)上,施加隨機(jī)擾動(dòng),使無(wú)人船具有跳出局部極小值的能力,隨機(jī)擾動(dòng)設(shè)置為使引力在正常值的50%~200%之間變化。 創(chuàng)造含有以下兩種的局部極小值環(huán)境。 1)在沒(méi)有施加艏向角限制的情況下進(jìn)行仿真,運(yùn)行結(jié)果如圖4a)所示,無(wú)人船在坐標(biāo)點(diǎn)(4,5)周圍陷入局部極小值。隨后在施加艏向角限制的情況下進(jìn)行仿真,運(yùn)行結(jié)果如圖4b)所示,已經(jīng)具備了解決局部極小值的的能力。 2)在沒(méi)有施加隨機(jī)擾動(dòng)的情況下進(jìn)行仿真,運(yùn)行結(jié)果如圖5 a)所示,無(wú)人船在坐標(biāo)點(diǎn)(5,6)周圍陷入局部極小值。隨后在施加隨機(jī)擾動(dòng)的情況下進(jìn)行仿真,運(yùn)行結(jié)果如圖5 b)所示,已經(jīng)具備了解決局部極小值的能力,但是會(huì)形成冗余及部分振蕩路徑。 針對(duì)無(wú)人船在海面上因?yàn)樵黾与S機(jī)擾動(dòng)而產(chǎn)生路徑振蕩的問(wèn)題,進(jìn)行減小路徑振蕩的仿真,著重選擇出現(xiàn)路徑振蕩的環(huán)境進(jìn)行仿真。仿真結(jié)果如圖6所示,比較圖6a)、圖6b)可以看出,減小路徑振蕩之后,路徑的平滑性提高了。 本文在傳統(tǒng)的人工勢(shì)場(chǎng)法基礎(chǔ)之上,通過(guò)修改斥力函數(shù),加入了無(wú)人船和目標(biāo)之間的距離這個(gè)因素,克服了船舶無(wú)法到達(dá)目標(biāo)點(diǎn)的問(wèn)題,提高了人工勢(shì)場(chǎng)法的可行性,但需要注意目標(biāo)點(diǎn)上存在障礙物的情況。采用施加船向角和增加隨機(jī)擾動(dòng)的方法來(lái)應(yīng)對(duì)局部極小值問(wèn)題,仿真結(jié)果顯示,路徑在陷入局部極小值之后,會(huì)經(jīng)過(guò)一段路程后跳出,但是由于其隨機(jī)性,在路徑跳出局部極小值的過(guò)程中會(huì)留下一段無(wú)效的路徑。為了改善路徑振蕩和施加隨機(jī)擾動(dòng)時(shí)產(chǎn)生的無(wú)效路徑,提出一種路徑簡(jiǎn)化的措施,通過(guò)去除一些振蕩的路徑點(diǎn),讓路徑變得平滑。 改進(jìn)后的人工勢(shì)場(chǎng)法具有靜態(tài)和動(dòng)態(tài)障礙物的仿真環(huán)境中進(jìn)行路徑規(guī)劃,探索將人工勢(shì)場(chǎng)法應(yīng)用在無(wú)人船路徑規(guī)劃的可行性,為無(wú)人船技術(shù)的研究提供了更多的思路。2.3 路徑簡(jiǎn)化
3 仿真結(jié)果與分析
3.1 目標(biāo)不可達(dá)現(xiàn)象仿真分析
3.2 局部極小值現(xiàn)象仿真分析
3.3 路徑振蕩現(xiàn)象仿真分析
4 結(jié)語(yǔ)