任工昌,郭維鵬,劉 朋
(陜西科技大學(xué)機電工程學(xué)院,陜西西安 710021)
移動機器人自主避障是指從初始位置運動到目標(biāo)位置的過程中,機器人在外部條件約束下能安全地避開各種障礙物,最終抵達目標(biāo)位置[1]。常見的避障算法有神經(jīng)網(wǎng)絡(luò)算法[2]、模糊邏輯算法[3]、人工勢場法[4-6]和A*算法[7]等。
人工勢場法是Khatib[8]在研究機械臂時構(gòu)建的一種虛擬勢場法,其原理是將機器人放置于一個由障礙物與目標(biāo)點共同作用的勢場中,目標(biāo)點引力勢場對其有吸引作用,而障礙物斥力勢場對其有排斥作用,兩個勢場的共同作用使機器人進行移動。
人工勢場法因其具有數(shù)學(xué)分析簡單、軌跡光滑等特點被廣泛應(yīng)用于移動機器人避障與路徑規(guī)劃中[9]。但經(jīng)典人工勢場法尚存在一些不足[10-12],而且在實際應(yīng)用過程中,動態(tài)障礙物也是機器人在運動時要考慮避開的對象,使得經(jīng)典人工勢場法無法滿足避障要求,因此需要對該方法進行一定改進。對于動態(tài)避障問題,Ge 等[13]針對目標(biāo)點和障礙物位置都發(fā)生變化的問題,提出一種新的勢能方法,從而定義新的勢能函數(shù)解決該問題;韓永等[14]通過引用速度勢場的概念,改進傳統(tǒng)勢場函數(shù),有效解決了動態(tài)避障問題;翟紅生等[15]在傳統(tǒng)勢力場基礎(chǔ)上引入相對速度場,并結(jié)合量子粒子群算法,實現(xiàn)機器人的動態(tài)路徑規(guī)劃。
本文一方面對經(jīng)典勢場函數(shù)進行改進,以解決目標(biāo)點不可達問題,并通過調(diào)整引力在坐標(biāo)軸上的分量,從而改變合力方向,解決局部極小值問題;另一方面考慮障礙物運動速度,將其與機器人相對速度納入勢場函數(shù),從而重新建立斥力勢場,實現(xiàn)動態(tài)避障。
人工勢場法的核心思想是受物理學(xué)中自然勢場啟發(fā)而產(chǎn)生的,如電勢場與重力勢場[16]。將這種作用機制的數(shù)學(xué)函數(shù)應(yīng)用在移動機器人環(huán)境模型中,通過給定初始點、目標(biāo)點和各障礙物位置坐標(biāo),根據(jù)三者之間的相對位置關(guān)系建立人工勢場以模擬自然勢場,這就是經(jīng)典人工勢場法。
利用勢場函數(shù)U建立人工勢場,在平面空間中,機器人初始位置坐標(biāo)為q=(x,y)T,目標(biāo)位置坐標(biāo)為qgoal=(xg,yg)T,此處的引力勢場會對機器人產(chǎn)生一個引力,方向由機器人指向目標(biāo)點;障礙物qobs=(xo,yo)T處的斥力勢場會對機器人產(chǎn)生一個斥力,方向由障礙物指向機器人。q處的勢場函數(shù)U(q)可表示為:
其中,引力勢場函數(shù)公式為:
則引力為:
式中,λ為非負常數(shù),是引力勢場的增益系數(shù),實驗時可根據(jù)具體情況改變λ值,以增加或減少引力勢場作用強度。ρ(q,qgoal)表示機器人當(dāng)前位置q點與要到達目標(biāo)點qgoal之間的距離。
斥力勢場函數(shù)公式為:
式中,μ為非負常數(shù),表示斥力勢場增益系數(shù),其作用與引力勢場中的λ類似,用來調(diào)整斥力勢場大??;ρ0為障礙物作用距離閾值,其作用是考慮目標(biāo)點附近障礙物對機器人的影響;ρ(q,qobs)表示機器人所在位置q點與閾值內(nèi)障礙物qobs之間的距離。
由勢場函數(shù)可以看出,當(dāng)目標(biāo)點附近存在障礙物時,移動機器人與目標(biāo)點位置越接近,其所受引力越小,但斥力受目標(biāo)點附近障礙物影響而逐漸增大,則移動機器人受斥力作用還會運動一段距離,即出現(xiàn)目標(biāo)點不可達的情況。因此,可將機器人與目標(biāo)位置之間的相對距離加入到斥力勢場函數(shù)中,減小目標(biāo)點附近障礙物的斥力勢場。斥力勢場函數(shù)公式如下:
由斥力場可得斥力Frep(q)的分量為:
其中,參數(shù)n為正實數(shù),F(xiàn)rep1(q)方向從障礙物指向機器人,對機器人有排斥作用;Frep2(q)方向從機器人指向目標(biāo)位置,對機器人有吸引作用。由式(3)與式(6)可知,若機器人到達目標(biāo)位置,此時引力為零,同時靠近目標(biāo)位置的障礙物產(chǎn)生的斥力勢場也為零,符合避障要求。
若存在障礙物分布在移動機器人與目標(biāo)點連線上的情況,移動機器人在向目標(biāo)位置運動時合力方向始終不變,則運動方向也始終不變,從而無法避開障礙物。為解決局部極小值問題,可對引力進行改進,若作用在機器人上的引力與斥力共線時,可調(diào)整引力在坐標(biāo)軸上的分量,從而改變合力方向,解決局部極小值問題。
當(dāng)斥力與引力共線時,改進后的引力在坐標(biāo)軸x、y 上的分力如下:
式(9)與式(10)是改進后引力Fatt(q)在坐標(biāo)軸x、y上的分量,其中α、β∈(-1,1),通過改變參數(shù)α與β值可以調(diào)整引力大小與方向,合力方向也隨之改變,使機器人能夠繞過障礙物,離開局部極小值點。其中,θ為改進后引力與x軸正方向的夾角,如式(11)所示。
為實現(xiàn)移動機器人在動態(tài)環(huán)境中的自主避障,提高其動態(tài)避障能力,可在斥力勢場函數(shù)中加入移動機器人與障礙物的相對速度。在向目標(biāo)點前進時,移動機器人可以實時獲得距離本身最近障礙物的速度vobs,兩者相對速度在其連線上的分量vro為:
式中,nro是相對速度的單位向量,方向由機器人指向障礙物,如圖1 所示。
Fig.1 Speed relationship between robot and obstacle圖1 機器人與障礙物之間速度關(guān)系
考慮到實際運動過程中機器人自身大小對避障有一定影響,因此在斥力勢場函數(shù)中加入機器人半徑R。改進后的斥力勢場函數(shù)為:
其中,η為常數(shù),表示相對速度影響因子。通過改變參數(shù)η可調(diào)整相對速度對勢場的影響,當(dāng)障礙物為靜態(tài)時,η=0。
對斥力勢場函數(shù)Urep(q,v)求負梯度可得:
其中,F(xiàn)repq是斥力場關(guān)于位置q的梯度,F(xiàn)repv為斥力勢場關(guān)于速度v的梯度。由式(12)可知,vro相對于速度和位置的梯度為:
為驗證改進后算法的動態(tài)避障能力,在MATLAB 環(huán)境下對算法進行仿真,觀察改進算法針對局部極小值、目標(biāo)不可達以及動態(tài)避障等問題的改進效果,仿真參數(shù)設(shè)置如表1 所示。
設(shè)置機器人初始坐標(biāo)位置(0,0),沿與x軸正方向夾角為45°的方向運動,目標(biāo)點坐標(biāo)位置(8,8),靠近目標(biāo)點的障礙物坐標(biāo)位置(7,7.8),圖2、圖3 分別為目標(biāo)不可達問題改進前后仿真結(jié)果對比。
Table 1 Simulation parameter setting表1 仿真參數(shù)設(shè)置
Fig.2 Simulation results before improvement of target unreachable problem圖2 目標(biāo)不可達問題改進前仿真結(jié)果
Fig.3 Improved simulation result of target unreachable problem圖3 目標(biāo)不可達問題改進后仿真結(jié)果
由圖2 可以看出,當(dāng)機器人抵達目標(biāo)位置周圍時,其所受引力較小,因此機器人受斥力影響偏離目標(biāo)位置向前運動,不能抵達目標(biāo)位置。圖3 為改進后的斥力勢場,改進后的斥力勢場可減小目標(biāo)附近障礙物對機器人的影響,從而成功達到目標(biāo)點位置。
在機器人與目標(biāo)點連線上設(shè)置障礙物,其位置為(4,4)。由圖4 可以看出,算法改進后的機器人可成功避開障礙物并到達目標(biāo)位置,不會陷入局部極小值點。該算法對動態(tài)障礙物同樣適用,如圖5、圖6 所示。從圖中可看出,機器人能夠調(diào)整運動方向,避免陷入局部極小值。
Fig.4 Obstacle avoidance process when the obstacle is static圖4 障礙物為靜態(tài)時避障過程
Fig.5 Obstacles and robots move towards the obstacle avoidance position圖5 障礙物與機器人相向運動避障位置
Fig.6 The whole process of obstacle and robot moving towards each other圖6 障礙物與機器人相向運動全過程
設(shè)置初始點位置坐標(biāo)(-4,-4),目標(biāo)點位置坐標(biāo)(11.5,3.5),并在移動機器人所在運動環(huán)境中設(shè)置4 個障礙物,其中兩個靜態(tài)障礙物位置坐標(biāo)分別為(-1,4.8)和(1,1.7),兩個動態(tài)障礙物起始位置坐標(biāo)分別為(4,8)和(6,6),其運動方向如圖7 所示。其中,所選取障礙物位置以及運動軌跡都會干擾到機器人,機器人在此環(huán)境下避障仿真結(jié)果如圖7、圖8 所示。其中,圖7 是移動機器人在遇到第一個動態(tài)障礙物時的避障軌跡,圖8 是移動機器人整體避障軌跡。從圖中可以看出,機器人能夠根據(jù)障礙物運動情況及時調(diào)整位姿,從而避開障礙物。
Fig.7 The robot avoids the first dynamic obstacle圖7 機器人躲避第一個動態(tài)障礙物
Fig.8 The whole process of robot avoidance圖8 機器人避障全過程
機器人在避障過程中與第一個動態(tài)障礙物之間距離變化情況如圖9 所示,由圖可知,其最小距離約為0.7m,可保證機器人與障礙物之間有一個足夠的安全距離。在整個避障過程中,移動機器人角度變化情況如圖10 所示,可看出機器人避障時角度變化比較平穩(wěn),最大變化僅為46°,在合理范圍內(nèi)。仿真結(jié)果表明,移動機器人通過使用本算法能有效避開靜態(tài)及動態(tài)障礙物。
本文通過對經(jīng)典人工勢場法存在的問題進行改進,以解決原算法中的目標(biāo)不可達與局部極小值問題,并通過在斥力勢場函數(shù)中引入障礙物速度,以滿足機器人在動態(tài)環(huán)境中的避障要求。仿真結(jié)果顯示,改進算法對于移動機器人在靜態(tài)、動態(tài)環(huán)境中的避障有著良好效果,而且對機器人運動過程中的角度變化以及與障礙物的最小距離都能實現(xiàn)較好的控制。
Fig.9 Change of distance between robot and obstacle圖9 機器人與障礙物距離變化
Fig.10 Robot angle change圖10 機器人角度變化情況
然而,本算法主要解決經(jīng)典人工勢場法存在的問題,并通過改進算法滿足機器人對動態(tài)障礙物的避障要求,但并沒有對避障路徑進行優(yōu)化,仍存在路徑非最短等問題,有待后續(xù)進一步完善。