蔣澤艷,郭林煬,廖 軍,周正平
(1.長春金融高等??茖W(xué)校信息技術(shù)學(xué)院,吉林 長春 130000;2.長春理工大學(xué)高功率半導(dǎo)體激光國家重點(diǎn)實(shí)驗(yàn)室,吉林 長春 130022;3.揚(yáng)州工業(yè)職業(yè)技術(shù)學(xué)院智能制造學(xué)院,江蘇 揚(yáng)州 225000;4.江蘇曙光光電有限公司,江蘇 揚(yáng)州 225000)
移動機(jī)器人的應(yīng)用不僅提高了生產(chǎn)效率、降低了生產(chǎn)成本,而且在危險(xiǎn)復(fù)雜環(huán)境下提高了人類安全度。路徑規(guī)劃是移動機(jī)器人自主完成各項(xiàng)任務(wù)的基礎(chǔ)和前提,是移動機(jī)器人真正實(shí)現(xiàn)智能化、自主化的關(guān)鍵技術(shù)[1]。移動路徑質(zhì)量對機(jī)器人執(zhí)行任務(wù)效率、使用安全和使用壽命具有極大影響,因此研究機(jī)器人路徑規(guī)劃問題具有較大的使用價(jià)值。
機(jī)器人路徑規(guī)劃具有多種分類方法。根據(jù)移動機(jī)器人數(shù)量,可以分為單機(jī)器人路徑規(guī)劃和多機(jī)器人路徑規(guī)劃;根據(jù)環(huán)境信息掌握程度,可以分為全局路徑規(guī)劃和局部路徑規(guī)劃[2]。機(jī)器人路徑規(guī)劃方法可以分為傳統(tǒng)方法、啟發(fā)類方法、智能仿生方法等。傳統(tǒng)方法包括人工勢場法、模糊邏輯法等,該類方法特點(diǎn)是更加依賴環(huán)境信息。啟發(fā)類方法是以某種特征信息為啟發(fā)的規(guī)劃方法,主要應(yīng)用于離散的拓?fù)渚W(wǎng)絡(luò)中,包括A*算法[3]、Dijkstra算法、D*算法[4]等。智能仿生方法是以群體智能為基礎(chǔ),將最優(yōu)路徑搜索問題轉(zhuǎn)化為最優(yōu)解搜索問題,包括蟻群算法、粒子群算法、魚群算法等[5]。文獻(xiàn)[6]研究了布谷鳥算法與蝙蝠算法混合的路徑規(guī)劃方法,使用蝙蝠算法確定障礙物數(shù)量和位置,基于布谷鳥算法搜索了最優(yōu)路徑,該方法有效降低了路徑長度。文獻(xiàn)[7]以路徑最短、時(shí)間最短、無碰撞為路徑規(guī)劃目標(biāo),研究了粒子群與蟻群混合算法的規(guī)劃方法,混合方法與兩種獨(dú)立算法相比具有優(yōu)越性。文獻(xiàn)[8]研究了勢場-蟻群算法的路徑規(guī)劃方法,通過增設(shè)虛擬子目標(biāo)、設(shè)置自適應(yīng)揮發(fā)因子等策略,使算法在不同復(fù)雜環(huán)境下規(guī)劃的全局路徑質(zhì)量有所提高。隨著工作環(huán)境復(fù)雜性、多樣性的不斷增加,現(xiàn)存規(guī)劃方法的時(shí)效性、非最優(yōu)等問題日益突出,因此關(guān)于不同應(yīng)用背景下的路徑規(guī)劃方法仍是當(dāng)前研究熱點(diǎn)。
這里針對柵格環(huán)境下的路徑規(guī)劃問題,以路徑長度最短和拐點(diǎn)數(shù)量最少為優(yōu)化目標(biāo),在蟻群算法中引入信息素非均勻初始化策略、角度啟發(fā)因子和異構(gòu)螞蟻串行策略,并將改進(jìn)算法用于路徑規(guī)格,所規(guī)劃路徑在長度和平滑度上具有較大優(yōu)勢。
這里研究的是移動機(jī)器人在靜態(tài)環(huán)境下的全局路徑規(guī)劃問題,首先需要建立環(huán)境模型,將抽象的三維環(huán)境轉(zhuǎn)化為機(jī)器人可以識別的數(shù)字地圖。柵格法[9]具有原理簡單、使用方便、適用性廣等優(yōu)點(diǎn),因此這里使用柵格法將抽象的三維環(huán)境建模為二維數(shù)字地圖。從三維空間到二維空間的建模,是一個(gè)降維的過程,常用方法是根據(jù)地面的障礙物分布確定二維環(huán)境,但是這種降維方法忽略了空間障礙物(比如頂棚的下垂物)對機(jī)器人移動的影響。將機(jī)器人高度記為H,當(dāng)空間障礙物與地面距離小于H時(shí),將與地面距離小于H的部分沿豎直方向向地面投影,將障礙物投影與地面障礙物疊加,可得到二維環(huán)境模型。柵格環(huán)境模型的建立過程可以歸納為兩個(gè)膨化過程、一個(gè)編碼過程。
首先是障礙物的自身膨化,為了將機(jī)器人簡化為一個(gè)質(zhì)點(diǎn),將機(jī)器人最大外徑疊加到障礙物尺寸上,如圖1(a)所示。圖中黑色三角形表示原始障礙物,向外膨脹尺寸為機(jī)器人最大外徑。其次是柵格內(nèi)障礙物的膨化過程,當(dāng)障礙物沒有填滿柵格時(shí),將障礙物進(jìn)行膨化使其占滿整個(gè)柵格[10],此過程,如圖1(b)所示。
圖1 障礙物的兩個(gè)膨化過程Fig.1 Two Expansion Processes of Obstacles
最后是編碼過程,將障礙物柵格使用元素1表示,意味著機(jī)器人無法通過;將自由柵格使用元素0表示,意味著機(jī)器人可以自由通過。按照上述編碼方式,可以得到機(jī)器人能夠識別的0~1矩陣模型為:
機(jī)器人在柵格環(huán)境下進(jìn)行路徑規(guī)劃,以路徑長度最小、轉(zhuǎn)彎角度最小為優(yōu)化目標(biāo)。
(1)路徑長度模型。將機(jī)器人路徑拐點(diǎn)數(shù)量記為G,并將起點(diǎn)坐標(biāo)記為(x0,y0),終點(diǎn)坐標(biāo)記為(xG+1,yG+1),則機(jī)器人的路徑長度為:
式中:y1—機(jī)器人路徑長度。
(2)轉(zhuǎn)彎角度模型。根據(jù)機(jī)器人運(yùn)動的實(shí)際情況,機(jī)器人的轉(zhuǎn)角以前進(jìn)方向的夾角作為度量。以拐點(diǎn)i處的轉(zhuǎn)角為例,如圖2所示。圖中第一段路徑為轉(zhuǎn)彎前的前進(jìn)方向,后一段路徑為轉(zhuǎn)彎后的前進(jìn)方向,轉(zhuǎn)彎前后前進(jìn)方向的夾角θi即為轉(zhuǎn)角i處機(jī)器人轉(zhuǎn)角。
圖2 轉(zhuǎn)角示意圖Fig.2 Corner Diagram
則機(jī)器人由起點(diǎn)到終點(diǎn)行駛過程中的轉(zhuǎn)角為:
(3)約束條件。機(jī)器人路徑規(guī)劃的約束條件為機(jī)器人不能與障礙物發(fā)生碰撞,通過障礙物的自身膨化過程,只要機(jī)器人路徑與障礙物柵格沒有交集就能夠保證機(jī)器人行駛時(shí)的無碰撞。
為了在柵格環(huán)境下實(shí)現(xiàn)距離最短、轉(zhuǎn)角最小的路徑規(guī)劃目標(biāo),本節(jié)在分析標(biāo)準(zhǔn)蟻群算法基礎(chǔ)上,提出了具有兩個(gè)異構(gòu)品種螞蟻串行組成的蟻群算法。
蟻群算法是從螞蟻尋找食物的過程中獲得的靈感而提出的,其基本過程是螞蟻依賴自身對食物的感知向食物方向運(yùn)動,行駛過程中螞蟻會釋放信息素,其余螞蟻在食物感知和信息素共同引導(dǎo)作用下移動。
將上述過程抽象為數(shù)學(xué)過程,在t時(shí)刻螞蟻由節(jié)點(diǎn)i選擇節(jié)點(diǎn)j的概率pij(t)為[11]:
式中:τij(t)—t時(shí)刻節(jié)點(diǎn)i與節(jié)點(diǎn)j之間的信息素濃度;α—信息素啟發(fā)系數(shù);ηij—節(jié)點(diǎn)j的啟發(fā)因子,一般有,其中,djO—節(jié)點(diǎn)j與目標(biāo)節(jié)點(diǎn)距離;β—距離啟發(fā)系數(shù);allowedi—柵格i鄰域的自由柵格集合。
螞蟻在尋找食物過程中,信息素更新包括信息素?fù)]發(fā)和信息素殘留兩個(gè)過程,則算法完成一次迭代后的信息素更新方法為:
式中:ρ—信息素的揮發(fā)系數(shù);Δτij(t)—螞蟻種群在路徑ij的信息素殘留;M—種群中的螞蟻數(shù)量;—螞蟻k在路徑ij上的信息素殘留;dk—螞蟻k規(guī)劃的路徑長度。
標(biāo)準(zhǔn)蟻群算法在柵格環(huán)境下進(jìn)行路徑規(guī)劃存在以下不足:(1)算法初始時(shí)刻,信息素為均勻分布狀態(tài),信息素濃度啟發(fā)作用極小,算法的收斂速度較慢;(2)標(biāo)準(zhǔn)蟻群算法只能用于路徑最短的路徑規(guī)劃,對于多目標(biāo)規(guī)劃無法實(shí)現(xiàn);(3)在八叉樹或四叉樹柵格環(huán)境下,螞蟻只能沿0°、±45°、±90°、±135°等方向前進(jìn),這些方向未必是最優(yōu)前進(jìn)方向。為了解決上述問題,分別提出了信息素非均勻初始化、角度啟發(fā)因子、異構(gòu)螞蟻串行等策略。
如前文所述,標(biāo)準(zhǔn)蟻群算法中信息素的均勻化分布使得算法收斂速度極慢。針對這一問題,本節(jié)提出了信息素非均勻初始化方法。當(dāng)工作環(huán)境中不存在障礙物時(shí),則起點(diǎn)與終點(diǎn)連線為最優(yōu)路徑;當(dāng)環(huán)境中存在障礙物時(shí),最優(yōu)路徑一般緊鄰起點(diǎn)與終點(diǎn)連線。按照這一常識,將與該連線距離小的柵格賦予較大信息素濃度,與該連線距離較大的柵格賦予較小信息素濃度。則根據(jù)信息素非均勻初始化方法,節(jié)點(diǎn)i的信息素濃度為:
式中:τi(0)—初始時(shí)刻節(jié)點(diǎn)i的信息素濃度;τ0—信息素濃度基礎(chǔ)值;Δτi—信息素附加值;dSi—起點(diǎn)S與節(jié)點(diǎn)i的距離;diO—節(jié)點(diǎn)i與目標(biāo)節(jié)點(diǎn)O的距離;ε—權(quán)值。一般來講,選擇點(diǎn)越靠近目標(biāo)節(jié)點(diǎn)則路徑越優(yōu),則ε應(yīng)取較小值,使終點(diǎn)在信息素初始化中起主導(dǎo)作用,本節(jié)取ε=0.1。
分析式(5)可知,初始信息素濃度分布基本規(guī)律為:信息素沿起點(diǎn)與終點(diǎn)連線濃度最大,以此直線為對稱軸,信息素濃度向外逐漸減小。
標(biāo)準(zhǔn)蟻群算法中只有距離和信息素兩類啟發(fā)因子,路徑規(guī)劃時(shí)只能進(jìn)行路徑最短的優(yōu)化,為了同時(shí)實(shí)現(xiàn)路徑轉(zhuǎn)彎最小的優(yōu)化,本節(jié)引入了角度啟發(fā)因子。螞蟻當(dāng)前節(jié)點(diǎn)記為i,下一節(jié)點(diǎn)記為j,終點(diǎn)記為O,則角度啟發(fā)因子定義為:
式中:vij—角度啟發(fā)因子;θij—定義的角度值。角度啟發(fā)因子隨角度的變化曲線,如圖3所示。
圖3 角度啟發(fā)因子曲線Fig.3 Curve of Angle Heuristic Factor
結(jié)合式(6)和圖3可知,θij∈[0,180°],相應(yīng)的vij∈[1,0]。這意味著當(dāng)螞蟻直線行駛時(shí),θij=0,此時(shí)角度啟發(fā)因子最大為1;當(dāng)螞蟻轉(zhuǎn)彎角度最大時(shí),θij=180°,此時(shí)角度啟發(fā)因子最大為0;且角度啟發(fā)因子隨角度值的增大而減小,這一規(guī)律符合角度啟發(fā)因子的設(shè)計(jì)思路。
將角度啟發(fā)因子引入到式(3)中,得到改進(jìn)的選擇概率式為:
式中:γ—角度啟發(fā)系數(shù)。
標(biāo)準(zhǔn)蟻群算法在柵格環(huán)境下一般具有四叉樹和八叉樹兩種情況,在四叉樹情況下,螞蟻只能沿0°、±90°、180°方向前進(jìn);在八叉樹情況下,螞蟻只能沿0°、±45°、±90°、±135°、180°方向前進(jìn)。但是上述方向未必是最優(yōu)前進(jìn)方向,使得規(guī)劃的路徑未必為最優(yōu)路徑。
為了解決上述問題,本節(jié)提出了異構(gòu)螞蟻串行策略,其核心思想為:在蟻群中設(shè)置兩個(gè)品種的異構(gòu)螞蟻,第一類螞蟻為常規(guī)的規(guī)劃蟻,按照式(7)進(jìn)行柵格選擇和路徑規(guī)劃,在蟻群中占絕大多數(shù);第二類螞蟻為具有全局通視能力的螞蟻,用于路徑的再次優(yōu)化。兩類螞蟻按照串行方式工作,搜索蟻首先進(jìn)行路徑規(guī)劃,而后通視蟻進(jìn)行路徑再優(yōu)化。
在種群中通視蟻設(shè)置2只,全部放置在起點(diǎn)柵格。2只通視蟻工作原理不同,通視蟻1為由前向后優(yōu)化,通視蟻2為由后向前優(yōu)化。假設(shè)機(jī)器人路徑中具有G個(gè)拐點(diǎn),則通視蟻1的工作方法為:螞蟻1立足于起點(diǎn)柵格,向拐點(diǎn)2進(jìn)行通視,若中間沒有障礙物則再次向拐點(diǎn)3進(jìn)行通視,依次向下搜索,直至起點(diǎn)與第i+1個(gè)拐點(diǎn)無法通視,則起點(diǎn)與拐點(diǎn)i的直線連接為此段優(yōu)化路徑;螞蟻1重新立足于拐點(diǎn)i,重復(fù)上述過程,直至路徑優(yōu)化完畢。
通視蟻2的工作方法為:螞蟻2立足于起點(diǎn)柵格,向終點(diǎn)進(jìn)行通視,若中間沒有障礙物,則起點(diǎn)與終點(diǎn)連線即為最優(yōu)路徑,否則向拐點(diǎn)G-1進(jìn)行通視,依次向前搜索,直至起點(diǎn)與第i個(gè)拐點(diǎn)能夠通視,則起點(diǎn)與拐點(diǎn)i的直線連接為此段優(yōu)化路徑;螞蟻2重新立足于拐點(diǎn)i,重復(fù)上述過程,直至路徑優(yōu)化完畢。
經(jīng)上述分析和改進(jìn),制定基于串行異構(gòu)蟻群算法的機(jī)器人路徑規(guī)劃流程為:
(1)三維工作環(huán)境進(jìn)行降維和建模,得到二維0-1矩陣模型;
(2)進(jìn)行蟻群算法參數(shù)設(shè)置,包括蟻群規(guī)模M、算法迭代次數(shù)、信息素?fù)]發(fā)系數(shù)ρ、信息素啟發(fā)系數(shù)α、距離啟發(fā)系數(shù)β、角度啟發(fā)系數(shù)γ;
(3)按照式(5)進(jìn)行信息素濃度非均勻初始化;
(4)將所有規(guī)劃蟻放置在起始點(diǎn),并按照式(7)進(jìn)行柵格選擇;
(5)當(dāng)所有規(guī)劃蟻完成一次迭代,進(jìn)行信息素更新,迭代次數(shù)+1;
(6)是否達(dá)到最大迭代次數(shù),若否則返回(4);若是則給出規(guī)劃蟻得到的最優(yōu)路徑;
(7)通視蟻1和通視蟻2按照各自的工作原理進(jìn)行路徑再次優(yōu)化,并比較優(yōu)化結(jié)果;
(8)輸出再次優(yōu)化后的最優(yōu)路徑,算法結(jié)束。
為了對串行異構(gòu)蟻群算法的規(guī)劃性能進(jìn)行驗(yàn)證,在(10×10)和(20×20)兩種規(guī)模的柵格環(huán)境下進(jìn)行仿真和驗(yàn)證。仿真環(huán)境為Windows 操作系統(tǒng),處理器Inter(R)Core(TM)i5-7200U,CPU 2.5GHz,內(nèi)存12GB,MatlabR2018a軟件。
在(10×10)規(guī)模柵格環(huán)境下,起點(diǎn)坐標(biāo)為(0.5,0.5),終點(diǎn)坐標(biāo)為(9.5,9.5)。分別使用標(biāo)準(zhǔn)蟻群算法、文獻(xiàn)[12]超強(qiáng)啟發(fā)蟻群、本文串行異構(gòu)蟻群等3種蟻群算法進(jìn)行路徑規(guī)劃。算法參數(shù)設(shè)置為:蟻群規(guī)模M=60、算法迭代次數(shù)為200、信息素?fù)]發(fā)系數(shù)ρ=0.4、信息素啟發(fā)系數(shù)α=1、距離啟發(fā)系數(shù)β=1、角度啟發(fā)系數(shù)γ=2。為了保證公平,三種算法使用相同的參數(shù)設(shè)置,且各自獨(dú)立規(guī)劃10次路徑。標(biāo)準(zhǔn)蟻群算法、超強(qiáng)啟發(fā)蟻群算法規(guī)劃的最優(yōu)路徑,如圖4所示。串行異構(gòu)蟻群算法規(guī)劃蟻路徑,如圖4(c)所示,再次優(yōu)化路徑,如圖4(d)所示。對比圖4可知,在(10×10)規(guī)模柵格環(huán)境下,標(biāo)準(zhǔn)蟻群算法路徑長度為14.484,拐點(diǎn)數(shù)量為6個(gè);超強(qiáng)啟發(fā)蟻群算法路徑長度為14.484,拐點(diǎn)數(shù)量為5 個(gè);串行異構(gòu)蟻群算法路徑長度為14.193,拐點(diǎn)數(shù)量為2個(gè)。
圖4 (10×10)規(guī)模不同算法規(guī)劃路徑Fig.4 Path by Different Algorithm Under(10×10)
從路徑場地和拐點(diǎn)數(shù)量的角度看,串行異構(gòu)蟻群算法規(guī)劃的路徑質(zhì)量明顯優(yōu)于標(biāo)準(zhǔn)蟻群算法和超強(qiáng)啟發(fā)蟻群算法。
為了進(jìn)一步進(jìn)行比較,統(tǒng)計(jì)10次規(guī)劃結(jié)果平均值結(jié)果,如表1所示。
表1 規(guī)劃路徑參數(shù)對比Tab.1 Path Parameters Comparison
對比表1中數(shù)據(jù)可知,串行異構(gòu)蟻群算法收斂時(shí)平均迭代次數(shù)為69,遠(yuǎn)小于另外兩種算法,這是因?yàn)榇挟悩?gòu)算法的信息素使用非均勻初始化方法,極大提高了算法前期的搜索效率;串行啟發(fā)算法規(guī)劃的路徑拐點(diǎn)數(shù)量遠(yuǎn)小于另外兩種算法,這是因?yàn)楦倪M(jìn)算法中引入了角度啟發(fā)因子,優(yōu)先選擇直線路徑,且使用通視蟻進(jìn)行了路徑再次優(yōu)化,有效減少了路徑拐點(diǎn)數(shù)量,同時(shí)縮短了路徑長度。
在(20×20)規(guī)模柵格環(huán)境下,起點(diǎn)坐標(biāo)為(0.5,0.5),終點(diǎn)坐標(biāo)為(19.5,19.5)。分別使用標(biāo)準(zhǔn)蟻群算法、文獻(xiàn)[12]超強(qiáng)啟發(fā)蟻群、本文串行異構(gòu)蟻群等3種蟻群算法進(jìn)行路徑規(guī)劃。算法參數(shù)設(shè)置與前文一致,三種算法各自獨(dú)立規(guī)劃10次路徑。
標(biāo)準(zhǔn)蟻群算法、超強(qiáng)啟發(fā)蟻群算法規(guī)劃的最優(yōu)路徑,如圖5所示。串行異構(gòu)蟻群算法規(guī)劃蟻路徑,如圖5(c)所示。再次優(yōu)化路徑,如圖5(d)所示。
圖5 (20×20)規(guī)模不同算法規(guī)劃路徑Fig.5 Path by Different Algorithm Under(20×20)
對比圖4(a)、圖4(b)、圖4(d)可知,在(20×20)規(guī)模柵格環(huán)境下,標(biāo)準(zhǔn)蟻群算法路徑長度為36.624,拐點(diǎn)數(shù)量為16個(gè);超強(qiáng)啟發(fā)蟻群算法路徑長度為36.968,拐點(diǎn)數(shù)量為18個(gè);串行異構(gòu)蟻群算法路徑長度為33.898,拐點(diǎn)數(shù)量為4個(gè)。
從路徑場地和拐點(diǎn)數(shù)量的角度看,串行異構(gòu)蟻群算法規(guī)劃的路徑質(zhì)量明顯優(yōu)于另外兩種算法。為了進(jìn)一步進(jìn)行比較,統(tǒng)計(jì)10次規(guī)劃結(jié)果平均值,結(jié)果,如表2所示。
表2 路徑參數(shù)對比Tab.2 Path Parameters Comparison
對比表2中數(shù)據(jù)可知,串行異構(gòu)蟻群算法收斂時(shí)平均迭代次數(shù)為73,遠(yuǎn)小于另外兩種算法,這是因?yàn)榇挟悩?gòu)算法的信息素使用非均勻初始化方法,極大提高了算法前期的搜索效率;串行啟發(fā)算法規(guī)劃的路徑拐點(diǎn)數(shù)量遠(yuǎn)小于另外兩種算法,這是因?yàn)楦倪M(jìn)算法中引入了角度啟發(fā)因子,優(yōu)先選擇直線路徑,且使用通視蟻進(jìn)行了路徑再次優(yōu)化,有效減少了路徑拐點(diǎn)數(shù)量,同時(shí)縮短了路徑長度。
綜合(10×10)規(guī)模和(20×20)規(guī)模柵格環(huán)境下的機(jī)器人路徑規(guī)劃結(jié)果,串行異構(gòu)蟻群算法在柵格環(huán)境下機(jī)器人路徑規(guī)劃是有效的,且路徑質(zhì)量高于標(biāo)準(zhǔn)蟻群算法和超強(qiáng)啟發(fā)蟻群算法。
這里研究了機(jī)器人在柵格環(huán)境下的路徑規(guī)劃問題,以機(jī)器人路徑最短和拐點(diǎn)數(shù)量最少為優(yōu)化目標(biāo),提出了串行異構(gòu)蟻群算法的規(guī)劃方法。經(jīng)仿真驗(yàn)證得出了以下結(jié)論:
(1)信息素非均勻初始化方法可以有效提高算法前期的搜索效率,減少算法收斂時(shí)的迭代次數(shù);
(2)從路徑長度和拐點(diǎn)數(shù)量的角度講,串行異構(gòu)蟻群算法在不同規(guī)模柵格環(huán)境下規(guī)劃的路徑質(zhì)量優(yōu)于標(biāo)準(zhǔn)蟻群算法和超強(qiáng)啟發(fā)蟻群算法。