基于蟻群算法的機(jī)器人路徑規(guī)劃研究
引言
路徑規(guī)劃是機(jī)器人運(yùn)動(dòng)控制的關(guān)鍵,也是當(dāng)前人工智能領(lǐng)域的研究熱點(diǎn)。機(jī)器人的路徑規(guī)劃是指在有障礙物的環(huán)境中,按照一定的評(píng)判標(biāo)準(zhǔn),找出一條從起點(diǎn)到終點(diǎn)的最優(yōu)無碰撞路徑。
蟻群算法作為仿生智能算法,具有較強(qiáng)的魯棒性、環(huán)境適應(yīng)性以及分布式計(jì)算、無中心控制的特征,國內(nèi)外學(xué)者對(duì)此做了大量研究并取得了豐碩成果,這些方法在基于靜態(tài)障礙環(huán)境下均能快速獲得最優(yōu)解,但存在路徑中拐點(diǎn)過多、拐彎停頓耗時(shí)和產(chǎn)生額外機(jī)械損耗等問題。
本文從拐點(diǎn)數(shù)及轉(zhuǎn)彎角度出發(fā),對(duì)蟻群算法每次迭代搜索出的最短路徑進(jìn)行順滑修正,進(jìn)一步優(yōu)化所尋路徑,避免不必要的轉(zhuǎn)彎,降低機(jī)器人機(jī)械損耗。
1環(huán)境建模
為便于開展路徑規(guī)劃,需要對(duì)機(jī)器人的行走環(huán)境做數(shù)字建模處理,將環(huán)境信息轉(zhuǎn)換為機(jī)器人可識(shí)別的數(shù)學(xué)模型。為不失一般性,采用主流的柵格地圖,按照以下定義對(duì)機(jī)器人行走環(huán)境進(jìn)行建模:
1.1柵格定義
以機(jī)器人自身尺寸6作為柵格大小,從而可以將機(jī)器人理想化為一個(gè)質(zhì)點(diǎn)進(jìn)行處理,確保機(jī)器人每次都停留在柵格的中心位置,便于開展無碰撞路徑規(guī)劃。只要柵格內(nèi)有障礙物存在,則視該柵格為障礙柵格,以黑色柵格表示。否則,該柵格為自由柵格,以白色柵格表示。
1.2坐標(biāo)系定義
以左下角為原點(diǎn)、橫向向右為Ⅹ軸正向、縱向向上為Y軸方向,將運(yùn)動(dòng)區(qū)域按柵格的大小劃分為皿和Ⅳ等分,按照從左到右、從下到上順序,將柵格編號(hào)為1,2,…,皿×Ⅳ,如圖1所示。
柵格i的中心坐標(biāo)(λi,yi)與柵格編號(hào)i存在以下對(duì)應(yīng)關(guān)系:
經(jīng)過上述定義,機(jī)器人路徑規(guī)劃問題其實(shí)就是在自由柵格集合中遍歷出所有鄰接?xùn)鸥竦淖蛹?并從中搜索出一條最短的鄰接?xùn)鸥衤窂健?
2平滑策略
路徑的平滑程度是度量機(jī)器人能量消耗與機(jī)械損耗的一個(gè)重要參數(shù)。拐彎過程中,機(jī)器人需要經(jīng)過減速、提速過程,產(chǎn)生額外的時(shí)間消耗、能量消耗和機(jī)械損耗,同時(shí)急拐彎還容易出現(xiàn)路徑累計(jì)誤差。
本文采取通過刪除拐彎點(diǎn)、拉直運(yùn)動(dòng)路徑或緩解急拐彎的方式來平滑機(jī)器人運(yùn)動(dòng)路徑,具體措施為:障礙柵格至平滑路徑起始點(diǎn)連線距離如圖2所示,現(xiàn)有搜索路徑i→j→k,出現(xiàn)拐彎點(diǎn)j。假設(shè)a、b分別為柵格編號(hào)i、j、k三者的最小值和最大值,搜索柵格編號(hào)子集L=(a,a+1,a+2,…,b}中的障礙柵格p,按照公式(2)計(jì)算柵格p到柵格i與柵格k中心連線的距離d,若d≤6,則可以刪除拐彎柵格j,拉直柵格i和柵格k,以此達(dá)到平滑運(yùn)動(dòng)路徑的目的。
平滑處理的算法流程如圖3所示。
3基于蟻群算法的路徑規(guī)劃步驟
步驟1:采用柵格法構(gòu)建環(huán)境地圖,指定機(jī)器人初始位置和終止位置并設(shè)置各種參數(shù),初始化信息素矩陣(信息素濃度均相同)。
步驟2:將螞蟻種群放置于初始位置,并將初始位置加入禁忌表。
步驟3:根據(jù)當(dāng)前信息素濃度計(jì)算第k只螞蟻由柵格i轉(zhuǎn)向柵格j的概率:
公式(3)中,allowdedi為與柵格i鄰接的自由柵格集合,a為柵格i至柵格i路徑上殘留的信息素,α、8分別為信息素濃度啟發(fā)因子和能見度啟發(fā)因子,n為路徑能見度函數(shù),其取值由公式(4)獲得:
公式(4)中,(xi+yi)和(xi+yi)分別表示柵格i和柵格i的中心點(diǎn)坐標(biāo)。
信息素τ進(jìn)行更新:
公式(5)、公式(6)中,p為信息素濃度衰減系數(shù),0為信息素強(qiáng)度,Lk為第k只螞蟻在本次迭代搜索中走過的路徑長度。
步驟4:更新路徑以及路徑總長度。
步驟5:重復(fù)步驟3和4,引導(dǎo)螞蟻到達(dá)目的地或陷入死循環(huán),對(duì)陷入死循環(huán)的螞蟻采取放棄策略。
步驟6:對(duì)搜索出的最短路徑做平滑處理,得到本輪迭代最優(yōu)解。
步驟7:重復(fù)步驟3至步驟6,直到迭代搜索結(jié)束,得到最終最優(yōu)解。
4仿真實(shí)驗(yàn)
采用10x10的柵格矩陣模擬機(jī)器人運(yùn)動(dòng)環(huán)境,使用VC++6.0編程對(duì)機(jī)器人路徑規(guī)劃進(jìn)行仿真驗(yàn)證。
仿真實(shí)驗(yàn)參數(shù)需滿足:種群數(shù)量m=100,迭代次數(shù)N=200,信息素權(quán)重參數(shù)a=1,啟發(fā)因子權(quán)重參數(shù)8=7,信息素強(qiáng)度系數(shù)0=200,信息素?fù)]發(fā)系數(shù)p=0.8,分別對(duì)基本蟻群算法和加入平滑處理策略的蟻群算法進(jìn)行仿真驗(yàn)證,得到機(jī)器人運(yùn)動(dòng)規(guī)劃
路徑分別如圖4、圖5所示。
從圖中可以看出,經(jīng)過平滑處理,直角急拐彎由6次降低為1次,拐彎總次數(shù)由6次降低為4次,路徑總長度由18s減少為15.76s。
5結(jié)語
本文研究了基于柵格地圖環(huán)境的蟻群算法機(jī)器人路徑規(guī)劃平滑策略。針對(duì)蟻群算法在機(jī)器人路徑規(guī)劃過程中出現(xiàn)的拐彎過多、運(yùn)動(dòng)延時(shí)和產(chǎn)生額外機(jī)械損耗等缺陷,提出了對(duì)迭代搜索出的最短路徑進(jìn)行平滑優(yōu)化處理的策略,刪除不必要的拐彎點(diǎn),拉直急拐彎路徑,降低機(jī)器人運(yùn)動(dòng)停滯概率,從而減少運(yùn)動(dòng)耗時(shí),降低機(jī)械損耗。仿真結(jié)果表明,采用對(duì)每一輪迭代搜索出的最短路徑進(jìn)行平滑處理的策略能有效提高路徑搜索質(zhì)量,降低機(jī)器人運(yùn)動(dòng)時(shí)間,減少機(jī)械磨損。