李金彥
(寧夏工商職業(yè)技術(shù)學(xué)院機(jī)電工程系,寧夏銀川 750021)
移動(dòng)機(jī)器人路徑規(guī)劃是人工智能與機(jī)器人學(xué)相結(jié)合的一個(gè)重要研究課題,其任務(wù)就是根據(jù)環(huán)境狀態(tài)和工作信息在起始點(diǎn)和目標(biāo)點(diǎn)之間規(guī)劃出一條平滑路徑。路徑規(guī)劃滿足始于起始終于目標(biāo),安全避障,最快到達(dá)[1-3]三方面內(nèi)容。傳統(tǒng)的人工勢場算法的結(jié)構(gòu)相對簡單,收斂性優(yōu)越,便于底層的實(shí)時(shí)控制,規(guī)劃出的路徑比較平滑并且安全,尤其適合簡單靜態(tài)環(huán)境下的路徑規(guī)劃。但是,傳統(tǒng)算法只是局部路徑規(guī)劃方法,存在局部極小值,在復(fù)雜動(dòng)態(tài)環(huán)境中,極易造成移動(dòng)機(jī)器人死鎖現(xiàn)象:在障礙物和目標(biāo)點(diǎn)接近時(shí),機(jī)器人難以到達(dá)目標(biāo)點(diǎn);勢場角度不易控制,機(jī)器人在障礙物前震蕩等現(xiàn)象;在多障礙物緊密分布的情況下,機(jī)器人會在障礙物形成的狹窄通道中擺動(dòng)[4-5]。
本文以機(jī)器人路徑規(guī)劃算法和具體策略為研究對象。采用二值圖像的數(shù)學(xué)形態(tài)學(xué)的方法,利用膨脹運(yùn)算和腐蝕運(yùn)算兩種對偶的基本變換算子,將離散的障礙物個(gè)體融合為完整的障礙物體,建立環(huán)境狀態(tài)數(shù)學(xué)模型;對機(jī)器人工作空間進(jìn)行全域搜索,尋求逃離局部最小點(diǎn)的運(yùn)動(dòng)方向;對算法實(shí)現(xiàn)采用PC與ARM控制模式,PC主要處理二值圖像狀態(tài)中膨脹和腐蝕操作并采集移動(dòng)機(jī)器人實(shí)時(shí)坐標(biāo)位置,這是基礎(chǔ)控制層;ARM針對移動(dòng)機(jī)器人自身攜帶距離傳感器信息進(jìn)行實(shí)時(shí)處理,設(shè)計(jì)移動(dòng)路徑,這是行為控制層設(shè)計(jì)。
人工勢場法將機(jī)器人在周圍環(huán)境中的運(yùn)動(dòng),設(shè)計(jì)成一種抽象的人造引力場中的運(yùn)動(dòng),目標(biāo)點(diǎn)對移動(dòng)機(jī)器人產(chǎn)生“引力”,而障礙物對移動(dòng)機(jī)器人產(chǎn)生“斥力”,最后通過求合力來控制移動(dòng)機(jī)器人的運(yùn)動(dòng)。
設(shè)機(jī)器人在空間中的位置為X=[x,y]T,機(jī)器人與目標(biāo)點(diǎn)引力場函數(shù)為:
上述引力場對機(jī)器人產(chǎn)生的引力勢能的負(fù)梯度為:
式中:katt為正比例常數(shù)因子;X為機(jī)器人當(dāng)前在運(yùn)動(dòng)空間的位置[x,y]T;Xg為目標(biāo)點(diǎn)在空間的位置[xg,yg]T,|X-Xg|為機(jī)器人當(dāng)前位置與目標(biāo)點(diǎn)的距離??梢钥闯?,引力隨機(jī)器人與目標(biāo)點(diǎn)距離變小而線性減小并最終趨于零。
障礙物i對機(jī)器人產(chǎn)生的斥力場函數(shù)為:Ureps(Xi)=
上述斥力場對機(jī)器人產(chǎn)生的斥力勢能的負(fù)梯度為:Freps(Xi)=-▽Ureps(Xi)
式中:krep為比例因子;Xobs為障礙物在運(yùn)動(dòng)空間中的位置;X-Xobs為障礙物與機(jī)器人的作用距離;ρ0為斥力閾值距離,距離超過ρ0,斥力可忽略不計(jì),斥力場隨著移動(dòng)機(jī)器人與目標(biāo)點(diǎn)距離的減少而減少,保持引力場始終大于斥力場。
所以機(jī)器人在運(yùn)動(dòng)空間中的合勢場和合力分別為:
合勢場與合力決定了機(jī)器人的運(yùn)動(dòng),機(jī)器人在合勢場的作用下,從高勢場位置逐步向低勢場位置運(yùn)動(dòng),由于目標(biāo)點(diǎn)被設(shè)計(jì)為合勢場的全局極小點(diǎn),理想狀態(tài)下,機(jī)器人能夠最終到達(dá)并止步于目標(biāo)點(diǎn)。然而,在復(fù)雜環(huán)境下,多個(gè)障礙物會造成目標(biāo)點(diǎn)以外的區(qū)域也存在極小點(diǎn),因此導(dǎo)致機(jī)器人可能無法到達(dá)預(yù)定目標(biāo),從而產(chǎn)生死鎖,如圖1所示。
圖1 機(jī)器人人工勢場法“死鎖示意圖”
機(jī)器人從起始點(diǎn)(4,3)要到達(dá)目標(biāo)點(diǎn)(19,18),從A到B區(qū)域,主要受到目標(biāo)點(diǎn)引力場和(8,1)處障礙物的斥力場,從B到C區(qū)域,各障礙物合力作用,在引力場作用下,移動(dòng)機(jī)器人運(yùn)動(dòng)方向指向G點(diǎn),但障礙物合圍造成無法通過障礙,從而在C區(qū)域持續(xù)震蕩,無法到達(dá)目標(biāo)點(diǎn)。
針對機(jī)器人在障礙物前持續(xù)震蕩并停止不前,對人工勢場法算法進(jìn)行改進(jìn),分為全局二維圖像的處理和空白路徑搜索法兩方面。
對二維圖像全局處理,是建立在上位機(jī)對靜態(tài)環(huán)境已知的基礎(chǔ)上,平面結(jié)構(gòu)元素由0或1矩陣形式表現(xiàn)。結(jié)構(gòu)元素原點(diǎn)和終點(diǎn)表現(xiàn)靜態(tài)環(huán)境大小,而值為1的點(diǎn),是需要處理的障礙物點(diǎn)[6-7]。采用數(shù)學(xué)形態(tài)學(xué)方法,利用膨脹和腐蝕兩種對偶變換,將離散障礙物點(diǎn)融合為完整背景圖像,用于對移動(dòng)機(jī)器人運(yùn)動(dòng)路徑的全局規(guī)劃。
膨脹是用矩陣算子依次掃描每一個(gè)像素點(diǎn),用矩陣中結(jié)構(gòu)元素和覆蓋的區(qū)域做“與”操作,如果結(jié)果全部為0,則該像素點(diǎn)為0;若為1,則二值圖像該像素點(diǎn)為1。腐蝕是與膨脹運(yùn)算對偶,選用不同矩陣算子掃描處理每個(gè)像素點(diǎn),用矩陣中結(jié)構(gòu)元素和覆蓋的區(qū)域做“與”操作,若結(jié)果全部為1,則該像素點(diǎn)為1;若為0,則二值圖像該像素點(diǎn)為1。膨脹和腐蝕處理都需要考慮到移動(dòng)機(jī)器人的具體形態(tài)。障礙物較小,機(jī)器人可以自由輕松通過時(shí),該障礙物可以作為噪聲點(diǎn)進(jìn)行處理;若兩障礙物相鄰,可以考慮融合在一起,更好規(guī)劃移動(dòng)機(jī)器人路徑。
筆者選取3×3膨脹算子和腐蝕算子為:
分別對圖像局部融合和去噪,圖2為全局靜態(tài)環(huán)境通過算子處理后狀態(tài)。
圖2 算子處理后狀態(tài)
當(dāng)移動(dòng)機(jī)器人底層程序檢測到自身陷入局部極小點(diǎn)后,停止運(yùn)動(dòng),傳送機(jī)器人環(huán)境數(shù)據(jù),等待上位機(jī)指令。上位機(jī)根據(jù)移動(dòng)機(jī)器人位置和靜態(tài)環(huán)境信息,設(shè)定虛擬目標(biāo)點(diǎn)。移動(dòng)機(jī)器人啟動(dòng)搜索程序,通過旋轉(zhuǎn)角度,改變原有運(yùn)動(dòng)方向,逃離局部極小值。
如圖3所示,移動(dòng)機(jī)器人沿1方向運(yùn)動(dòng)時(shí)處于死鎖狀態(tài),有幾個(gè)已知量:
(1)移動(dòng)機(jī)器人本體半徑為r,旋轉(zhuǎn)半徑為R,有n個(gè)距離傳感器均勻分布于圓周。
(2)當(dāng)前運(yùn)動(dòng)速度v和運(yùn)動(dòng)方向已知。
(3)L為啟動(dòng)空白搜索程序的閾值,是一個(gè)與v相關(guān)函數(shù),根據(jù)ARM程序采樣周期T,選擇L=2.5×vT。此刻第i個(gè)距離傳感器正對B障礙物,與i號傳感器相鄰傳感器(順時(shí)針方向)為,i+1,…,n,逆時(shí)針為i-1,…,1。逆時(shí)針檢測到障礙物的傳感器個(gè)數(shù)少于順時(shí)針方向,確定機(jī)器人旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針。旋轉(zhuǎn)角度 θ≥ arccos(R/S),S=|X-Xa|=,其中(x,y)為移動(dòng)機(jī)器人在上位機(jī)靜態(tài)環(huán)境中的坐標(biāo),(xa,ya)是障礙物A的位置。算法為:
θj=(i-j) 2 π/n,j≤i,j為程序中遞增量。
圖3 空白路徑搜索
圖4為機(jī)器人硬件系統(tǒng)。
圖4 機(jī)器人硬件系統(tǒng)
硬件系統(tǒng)采用ARM+PC模式,ARM是32位處理器,速度快,功耗低,集成度高,功能強(qiáng)大,因此ARM非常適用于移動(dòng)機(jī)器人行為控制層;PC機(jī)系統(tǒng)決策力強(qiáng),通信良好,易于擴(kuò)展,作為基礎(chǔ)決策層處理器;移動(dòng)機(jī)器人運(yùn)動(dòng)底盤采用雙輪差速驅(qū)動(dòng),配合2個(gè)萬向輪,可原地轉(zhuǎn)向、速度快、運(yùn)動(dòng)靈活,結(jié)構(gòu)簡單可靠,作為平臺安裝硬件電路和部件,路徑規(guī)劃硬件系統(tǒng)如圖4。
上位機(jī)和下位機(jī)算法流程如圖5所示。
圖5 上位機(jī)合下位機(jī)算法流程圖
為了檢驗(yàn)機(jī)器人對于不同環(huán)境的適應(yīng)能力,筆者考慮了如圖1所示的復(fù)雜環(huán)境,該環(huán)境為20 m×20 m的平面區(qū)域,包含密集障礙物、狹窄過道和無障礙環(huán)境3種不同類型的區(qū)域。通過對復(fù)雜環(huán)境進(jìn)行二值化處理和空白搜索,建立復(fù)雜環(huán)境數(shù)學(xué)模型,選擇合理的初始化參數(shù),得到仿真結(jié)果如圖6所示。仿真結(jié)果表明,當(dāng)目標(biāo)點(diǎn)在障礙物范圍內(nèi)時(shí),并且存在局部最小點(diǎn)時(shí),使用改進(jìn)的人工勢場法,機(jī)器人能安全、快速到達(dá)目標(biāo)點(diǎn),如表1為初始化參數(shù)表。
圖6 仿真結(jié)果
表1 初始化參數(shù)表
針對人工勢場法在移動(dòng)機(jī)器人路徑規(guī)劃中存在的“死鎖”現(xiàn)象,建立了改進(jìn)的人工勢場數(shù)學(xué)模型,以PC機(jī)為決策層,以ARM處理器為控制層,采用上位機(jī)和下位機(jī)協(xié)調(diào)決策的方式,在原人工勢場算法陷入極小值的狀態(tài)下添加了“空白搜索法”,移動(dòng)機(jī)器人很快解除“死鎖”。通過仿真實(shí)驗(yàn)可知,以改進(jìn)的人工勢場法為機(jī)器人路徑規(guī)劃具有一定的適用性,該算法不但適用于單個(gè)障礙物進(jìn)行避障,而且能實(shí)現(xiàn)多個(gè)障礙物構(gòu)成的復(fù)雜環(huán)境,特別是連續(xù)C型障礙物環(huán)境下的避障動(dòng)作,使得機(jī)器人繼續(xù)前行從而安全快速到達(dá)目標(biāo)地點(diǎn)。
[1] CraigJ J.Introduction to Robotics:Mechanics and Control[M].Second edition.Addison Wesley,2009.
[2] Zhang B,Chen W M,F(xiàn)ei M R.An Optimized Method for Path Planning Based on Artificial Potential Field[C].Jinan:ISDA,2006:35-39.
[3] 高緒祥,劉 靜,趙曉輝.具有越障和避障功能的小型移動(dòng)機(jī)器人設(shè)計(jì)[J].機(jī)械研究與應(yīng)用,2010,23(4):71-73.
[4] 戴 博,肖曉明,蔡自興.移動(dòng)機(jī)器人路徑規(guī)劃技術(shù)的研究現(xiàn)狀與展望[J].控制工程,2005,12(3):198-202.
[5] 沈文君.基于改進(jìn)人工勢場法的機(jī)器人路徑規(guī)劃算法研究[D].廣州:暨南大學(xué),2009.
[6] 殷 路,尹怡欣.基于動(dòng)態(tài)人工勢場法的路徑規(guī)劃仿真研究[J].系統(tǒng)仿真學(xué)報(bào),2009,21(11):3325-3329.
[7] 黃炳強(qiáng),曹廣益.基于模糊人工勢場的移動(dòng)機(jī)器人路徑規(guī)劃[J].上海理工大學(xué)學(xué)報(bào),2006,28(4):347-350.