張鵬彬 曾鈺培
(中國(guó)石油大學(xué)(華東)化學(xué)工程學(xué)院,山東青島,266580)
移動(dòng)機(jī)器人的路徑規(guī)劃是機(jī)器人研究領(lǐng)域的一個(gè)重要分支,其路徑規(guī)劃的任務(wù)是在具有障礙物的環(huán)境中,按照一定的評(píng)價(jià)標(biāo)準(zhǔn),尋找一條從起始位置到達(dá)目標(biāo)位置的無(wú)碰撞路徑[1]。目前,移動(dòng)機(jī)器人的路徑規(guī)劃策略主要有兩種:一種是未知環(huán)境下,基于傳感器信息的路徑規(guī)劃;另一種是已知環(huán)境信息下的路徑規(guī)劃[2]。
人工勢(shì)場(chǎng)法是一種常用的解決移動(dòng)機(jī)器人路徑規(guī)劃問(wèn)題的方法,其計(jì)算量較小、實(shí)時(shí)性高、反應(yīng)速度快、規(guī)劃軌跡平滑。但是,人工勢(shì)場(chǎng)法也存在局部極小點(diǎn)、無(wú)法到達(dá)目標(biāo)點(diǎn)等缺點(diǎn),即在某個(gè)點(diǎn),引力和斥力剛好大小相等且方向想反,物體陷入局部最優(yōu)解或震蕩[3]。即當(dāng)引力與斥力的合力為零或接近零時(shí),機(jī)器人會(huì)認(rèn)為已經(jīng)到達(dá)目標(biāo)點(diǎn)而停止前進(jìn)或在一定區(qū)域內(nèi)徘徊,造成機(jī)器人永遠(yuǎn)無(wú)法到達(dá)目標(biāo)點(diǎn),而陷入局部極小點(diǎn)。
針對(duì)上述問(wèn)題,許多學(xué)者對(duì)算法進(jìn)行大量改進(jìn)性研究。文獻(xiàn)[4]通過(guò)增加虛擬目標(biāo)點(diǎn)與原目標(biāo)點(diǎn)共同作用于機(jī)器人來(lái)幫助機(jī)器人擺脫局部極小點(diǎn),文獻(xiàn)[5]基于人工勢(shì)場(chǎng)法原理,將機(jī)器人的人工勢(shì)場(chǎng)算法分為3層進(jìn)行設(shè)計(jì)和軌跡規(guī)劃,文獻(xiàn)[6]利用幾何方法重新規(guī)劃路徑使小車(chē)擺脫局部極小點(diǎn),文獻(xiàn)[7]提出了一種通過(guò)添加附加控制力的方法擺脫局部極小點(diǎn)。
針對(duì)傳統(tǒng)人工勢(shì)場(chǎng)算法存在的局部極小點(diǎn)問(wèn)題,本文提出了一種改進(jìn)的人工勢(shì)場(chǎng)法。該算法在判斷移動(dòng)機(jī)器人陷入局部極小點(diǎn)時(shí),使用選取在障礙物一側(cè)的中間目標(biāo)點(diǎn)將機(jī)器人引導(dǎo)出局部極小點(diǎn)區(qū)域,在機(jī)器人擺脫局部極小點(diǎn)時(shí),再使用真正的目標(biāo)點(diǎn)引導(dǎo)機(jī)器人繼續(xù)向原目標(biāo)點(diǎn)運(yùn)動(dòng)。當(dāng)機(jī)器人離目標(biāo)點(diǎn)比較近的時(shí)候,機(jī)器人則忽略斥力影響而直接到達(dá)目標(biāo)點(diǎn),避免因引力幾乎為零而斥力比較大時(shí),造成機(jī)器人在目標(biāo)點(diǎn)徘徊現(xiàn)象。
人工勢(shì)場(chǎng)法是由Khatib于1986 年提出的一種虛擬力法。人工勢(shì)場(chǎng)法的基本思想是在機(jī)器人的運(yùn)動(dòng)空間構(gòu)造目標(biāo)位置引力場(chǎng)和障礙物周?chē)饬?chǎng)共同作用的人工勢(shì)場(chǎng),目標(biāo)點(diǎn)對(duì)機(jī)器人產(chǎn)生引力,障礙物對(duì)機(jī)器人產(chǎn)生斥力,當(dāng)機(jī)器人沿引力和斥力的合力方向運(yùn)動(dòng)時(shí),可以局部規(guī)劃最優(yōu)路徑并避開(kāi)障礙物[8-10]。
當(dāng)機(jī)器人距離目標(biāo)點(diǎn)越近,勢(shì)能越小,當(dāng)引力為零時(shí),到達(dá)目標(biāo)點(diǎn)。引力函數(shù)定義為:
當(dāng)機(jī)器人距離障礙物越遠(yuǎn),勢(shì)能越小,超出障礙物影響范圍后,勢(shì)能為零。斥力函數(shù)定義為:
根據(jù)上述定義的引力場(chǎng)函數(shù)和斥力場(chǎng)函數(shù),可以得到整個(gè)運(yùn)行空間的總勢(shì)能函數(shù),機(jī)器人的總勢(shì)能為機(jī)器人所受的引力和斥力之和,因此總勢(shì)能函數(shù)為:
機(jī)器人所受合力為總勢(shì)能的負(fù)梯度:
其中, 是障礙物指向機(jī)器人的單位向量,
合力 的方向即為機(jī)器人運(yùn)動(dòng)方向,當(dāng)合力為零或接近零時(shí),機(jī)器人會(huì)認(rèn)為已經(jīng)到達(dá)目標(biāo)點(diǎn)而停止前進(jìn)或在一定區(qū)域內(nèi)徘徊,造成機(jī)器人永遠(yuǎn)無(wú)法到達(dá)目標(biāo)點(diǎn),而陷入局部極小點(diǎn)。如圖1所示,目標(biāo)點(diǎn)、障礙物、機(jī)器人在一條直線上時(shí),目標(biāo)點(diǎn)引力與障礙物斥力合力為零,此時(shí)機(jī)器人不能到達(dá)目標(biāo)點(diǎn)。
圖 1 機(jī)器人陷入局部極小點(diǎn)
判斷機(jī)器人是否陷入局部極小點(diǎn),需使用中間目標(biāo)點(diǎn)替換真正目標(biāo)點(diǎn),從而對(duì)機(jī)器人產(chǎn)生引力;判斷機(jī)器人是否擺脫局部極小點(diǎn),需使用真正目標(biāo)點(diǎn)對(duì)機(jī)器人產(chǎn)生引力。
改進(jìn)人工勢(shì)場(chǎng)算法流程如圖2所示,整個(gè)流程主要包括三個(gè)環(huán)節(jié)。
如果機(jī)器人陷入局部極小點(diǎn),則使用中間目標(biāo)點(diǎn)引導(dǎo)機(jī)器人脫離該區(qū)域。中間目標(biāo)點(diǎn)一般選取在障礙物的一側(cè),使中間目標(biāo)點(diǎn)、障礙物、機(jī)器人不在一條直線上,這樣機(jī)器人便不再徘徊,待行走一定步長(zhǎng)后再用真正目標(biāo)點(diǎn)引導(dǎo)機(jī)器人向原目標(biāo)點(diǎn)運(yùn)動(dòng)。
通過(guò)比較機(jī)器人當(dāng)前位姿與目標(biāo)點(diǎn)距離是否在一個(gè)很小的區(qū)域內(nèi),如果則認(rèn)為機(jī)器人位于目標(biāo)點(diǎn)附近,此時(shí)忽略斥力影響,機(jī)器人直接運(yùn)動(dòng)至目標(biāo)點(diǎn),避免因引力幾乎為零而斥力比較大時(shí),造成機(jī)器人在目標(biāo)點(diǎn)徘徊現(xiàn)象。
圖 2 改進(jìn)人工勢(shì)場(chǎng)算法流程
按照上述算法步驟,在Matlab和MobileSim平臺(tái)上進(jìn)行仿真,驗(yàn)證該方法的有效性。
圖3為傳統(tǒng)人工勢(shì)場(chǎng)法Matlab仿真,圖4為改進(jìn)人工勢(shì)場(chǎng)法Matlab仿真。其中,
圖3 傳統(tǒng)人工勢(shì)場(chǎng)法Matlab仿真
圖4 改進(jìn)人工勢(shì)場(chǎng)法Matlab仿真
從圖3中可以看出,傳統(tǒng)人工勢(shì)場(chǎng)法使機(jī)器人陷入了局部極小點(diǎn)而不能到達(dá)目標(biāo)點(diǎn);改進(jìn)人工勢(shì)場(chǎng)法在機(jī)器人陷入局部極小點(diǎn)時(shí),在中間目標(biāo)點(diǎn)的引導(dǎo)下使機(jī)器人擺脫了局部極小點(diǎn),如圖4中綠色軌跡所示,機(jī)器人行走一定步長(zhǎng)后轉(zhuǎn)用真正目標(biāo)點(diǎn)引導(dǎo),最后到達(dá)目標(biāo)點(diǎn)。
AmigoBot智能移動(dòng)機(jī)器人是先鋒機(jī)器人(Pioneer)公司生產(chǎn)的MobileRobots機(jī)器人系列之一,主要應(yīng)用在教學(xué)研究及編隊(duì)協(xié)作項(xiàng)目。本文使用其附帶的仿真軟件MobileSim進(jìn)行模擬實(shí)驗(yàn)。
從圖5、圖6中可以看出,利用傳統(tǒng)人工勢(shì)場(chǎng)算法,機(jī)器人被困在局部極小點(diǎn)而停止前進(jìn);利用改進(jìn)的人工勢(shì)場(chǎng)算法,機(jī)器人通過(guò)中間目標(biāo)點(diǎn)擺脫了局部極小點(diǎn),順利到達(dá)目標(biāo)點(diǎn),由此可以看出,改進(jìn)的人工勢(shì)場(chǎng)算法是可行的。
圖5 傳統(tǒng)人工勢(shì)場(chǎng)法MobileSim仿真
圖6 改進(jìn)人工勢(shì)場(chǎng)法MobileSim仿真
針對(duì)傳統(tǒng)人工勢(shì)場(chǎng)法存在的局部極小點(diǎn)問(wèn)題,本文提出了一種改進(jìn)的人工勢(shì)場(chǎng)算法。在判斷機(jī)器人陷入局部極小點(diǎn)時(shí),首先使用選取在障礙物一側(cè)的中間目標(biāo)點(diǎn)代替真正目標(biāo)點(diǎn)引導(dǎo)機(jī)器人,從而使機(jī)器人擺脫局部極小點(diǎn),然后待當(dāng)機(jī)器人逃離局部極小點(diǎn)并行走一定步長(zhǎng)后撤銷(xiāo)中間目標(biāo)點(diǎn),再使用真正目標(biāo)點(diǎn)引導(dǎo)機(jī)器人向原目標(biāo)點(diǎn)運(yùn)動(dòng)。最后,利用Matlab和MobileSim對(duì)傳統(tǒng)人工勢(shì)場(chǎng)法和改進(jìn)的人工勢(shì)場(chǎng)法進(jìn)行仿真實(shí)驗(yàn)對(duì)比,驗(yàn)證了該改進(jìn)方法的有效性。但是,針對(duì)復(fù)雜環(huán)境,改進(jìn)的人工勢(shì)場(chǎng)算法還需進(jìn)一步完善。