本發(fā)明屬于多移動機(jī)器人規(guī)劃控制領(lǐng)域,特別涉及一種基于自組織行為的集群機(jī)器人圖形組建方法。
背景技術(shù):
群集機(jī)器人自組織圖形生成行為是多移動機(jī)器人規(guī)劃控制的一個重要分支。移動機(jī)器人模擬生物群集行為,自組織完成圖形生成的大規(guī)模編隊活動?,F(xiàn)階段,群集機(jī)器人圖形生成問題,已成為微小型機(jī)器人領(lǐng)域或無線傳感器網(wǎng)絡(luò)領(lǐng)域的重要方向。
目前,國內(nèi)研究群集機(jī)器人圖形生成問題,大都需要較強(qiáng)計算能力的機(jī)器人本體處理器和復(fù)雜傳感器系統(tǒng),一個機(jī)器人配備多個傳感器協(xié)同進(jìn)行工作。然而,對于傳感能力單一,且計算能力較弱的大規(guī)模微粒機(jī)器人,實(shí)現(xiàn)圖形生成的自組織控制,就變的相當(dāng)困難。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種集群機(jī)器人在無集中控制和領(lǐng)導(dǎo)機(jī)器人的情況下,自組織按照圖形組成圖形的方法,能夠有效實(shí)現(xiàn)小型集群機(jī)器人在自組織行為約束下,集群機(jī)器人完成圖形的組建任務(wù)。
一種基于自組織行為的集群機(jī)器人圖形組建方法,包括以下步驟:
步驟1:對集群機(jī)器人中各機(jī)器人發(fā)送待組建的圖形位置和形狀信息;
步驟2:將集群機(jī)器人按次序排列在初始位置,并隨機(jī)初始化4個單體機(jī)器人的運(yùn)動狀態(tài)以及給每個單體機(jī)器人進(jìn)行ID標(biāo)識,其中,一個為種子狀態(tài),梯度為0,另外三個為終止停止?fàn)顟B(tài),梯度為1,且梯度為1的單體機(jī)器人與梯度為0的單體機(jī)器人之間的距離小于0.309R;
步驟3:集群機(jī)器人中各單體機(jī)器人之間通過相互傳輸信息,依據(jù)各自不同運(yùn)動狀態(tài)和梯度,對各單機(jī)器人的下一時刻的運(yùn)動狀態(tài)和行進(jìn)順序進(jìn)行自組織的周期性編隊控制,完成所需組建的圖形;
所述集群機(jī)器人中各單體機(jī)器人之間相互傳輸信息是指集群機(jī)器人中各單體機(jī)器人將自身的位置坐標(biāo)、ID信息、運(yùn)動狀態(tài)以及梯度發(fā)送給在其通訊半徑內(nèi)的單體機(jī)器人,并獲取在該通訊半徑內(nèi)與其他機(jī)器人之間的距離;
單個機(jī)器人的運(yùn)動狀態(tài)包括起始停止?fàn)顟B(tài)、等待狀態(tài)、行進(jìn)狀態(tài)、種子狀態(tài)、暫停判斷狀態(tài)和終止停止?fàn)顟B(tài);
單體機(jī)器人梯度是指集群機(jī)器人在初始位置時,各單體機(jī)器人離處于種子狀態(tài)的單體機(jī)器人的遠(yuǎn)近程度,距離處于種子狀態(tài)單體機(jī)器人越遠(yuǎn)的單體機(jī)器人的梯度越高;
未進(jìn)行梯度初始化的單體機(jī)器人梯度以距離處理種子狀態(tài)的單體機(jī)器人距離由近至遠(yuǎn)依次按照以下過程確定梯度:
將與當(dāng)前單體機(jī)器人距離小于0.309R的單體機(jī)器人作為當(dāng)前單體機(jī)器人的鄰近單體機(jī)器人,將鄰近單體機(jī)器人中梯度最小的單體機(jī)器人的梯度賦值給當(dāng)前單體機(jī)器人,并當(dāng)前單體機(jī)器人的梯度值加1,完成當(dāng)前單體機(jī)器人的梯度計算;
所述起始停止?fàn)顟B(tài)是指集群機(jī)器人位于初始位置時,所有單體機(jī)器人靜止不動,除已初始化的四個單體機(jī)器人外,其余單體機(jī)器人均進(jìn)行自身梯度計算,完成梯度計算后進(jìn)入等待狀態(tài);
所述等待狀態(tài)為單體機(jī)器人從起始停止?fàn)顟B(tài)到行進(jìn)狀態(tài)之間的一個過渡狀態(tài),處于等待狀態(tài)的單體機(jī)器人滿足以下任一條件時,進(jìn)入行進(jìn)狀態(tài):
當(dāng)在通訊半徑內(nèi)的其他單體機(jī)器人的梯度全都小于該單體機(jī)器人梯度時,進(jìn)入行進(jìn)狀態(tài);
當(dāng)在通訊半徑內(nèi)該機(jī)器人梯度為最大且與其中一個或多個單體機(jī)器人的梯度相等,則從中選出ID最大的單體機(jī)器人進(jìn)入行進(jìn)狀態(tài);
所述行進(jìn)狀態(tài)是指單體機(jī)器人處于前行運(yùn)動過程中;
所述種子狀態(tài)是指處于種子狀態(tài)的單體機(jī)器人不運(yùn)動,且作為其他行進(jìn)狀態(tài)單體機(jī)器人停止運(yùn)動標(biāo)志物,當(dāng)處于行進(jìn)狀態(tài)的單體機(jī)器人與處于種子狀態(tài)機(jī)器人距離小于設(shè)定??烤嚯x時,停止運(yùn)動;
所述暫停判斷狀態(tài)是指處于行進(jìn)狀態(tài)機(jī)器人運(yùn)動到與種子狀態(tài)機(jī)器人相距0.309R時進(jìn)入的狀態(tài),用來根據(jù)周圍機(jī)器人的狀態(tài)判斷下一步進(jìn)入終止停止?fàn)顟B(tài)或種子狀態(tài);
所述終止停止?fàn)顟B(tài)是指單體機(jī)器人處于終止停止?fàn)顟B(tài)時,單體機(jī)器人靜止不動,向外發(fā)送自身位置和狀態(tài)信息;
其中,R為單體機(jī)器人半徑。
當(dāng)前單體機(jī)器人處于等待狀態(tài)時,若在其通訊半徑內(nèi)存在處于行進(jìn)狀態(tài)的單體機(jī)器人,則該單體機(jī)器人繼續(xù)保持為等待狀態(tài),反之則由ID和梯度大小控制先行順序,依次切換至行進(jìn)狀態(tài);單體機(jī)器人的梯度越大,行進(jìn)順序越靠前;
所述依據(jù)各自不同運(yùn)動狀態(tài)和梯度,對各單機(jī)器人的下一時刻的運(yùn)動狀態(tài)和行進(jìn)順序進(jìn)行自組織的周期性編隊控制,具體過程如下:
處于行進(jìn)狀態(tài)的單體機(jī)器人沿靜止的單體機(jī)器人邊緣前行,在前行過程中與靜止的單體機(jī)器人之間間隔距離為0.155R;
當(dāng)處于行進(jìn)狀態(tài)的單體機(jī)器人與處于種子狀態(tài)的單體機(jī)器人之間的間距小于或等于0.155R時,則該單體機(jī)器人由行進(jìn)狀態(tài)轉(zhuǎn)換到暫停判斷狀態(tài);
當(dāng)單體機(jī)器人處于暫停判斷狀態(tài)時,若在其通訊半徑內(nèi)存在處于種子狀態(tài)機(jī)器人時,該機(jī)器人保持暫停判斷狀態(tài);若在其通訊半徑內(nèi)不存在處于種子狀態(tài)機(jī)器人時,則開始計算自身優(yōu)先值,并與其最接近的兩個單體機(jī)器人進(jìn)行優(yōu)先值大小比較,優(yōu)先值大的單體機(jī)器人進(jìn)入種子狀態(tài),其他處于暫停判斷狀態(tài)的單體機(jī)器人進(jìn)入終止停止?fàn)顟B(tài);
當(dāng)單體機(jī)器人處于種子狀態(tài)時,若周圍圍滿六個機(jī)器人且間距都為0.309R時,則由種子狀態(tài)轉(zhuǎn)換至最終停止?fàn)顟B(tài),否則,一直保持種子狀態(tài);
當(dāng)單體機(jī)器人處于終止停止?fàn)顟B(tài)時,根據(jù)接收到其他處于終止停止?fàn)顟B(tài)機(jī)器人發(fā)送的定位信息,采用三邊定位算法對自身位置進(jìn)行計算,并向外廣播自身狀態(tài)和定位信息。
單體機(jī)器人的優(yōu)先值是指單體機(jī)器人的工作負(fù)責(zé)區(qū)域覆蓋所需組建圖形的軌跡類型;
覆蓋的軌跡為線條或弧線時,為線優(yōu)先值;
覆蓋的軌跡存在拐點(diǎn)時,為點(diǎn)優(yōu)先值;
不存在軌跡覆蓋時,為非優(yōu)先值;
其中,線優(yōu)先值大于點(diǎn)優(yōu)先值,點(diǎn)優(yōu)先值大于非優(yōu)先值。
所述單體機(jī)器人的工作負(fù)責(zé)區(qū)域是以(x0+1.155R,y0+R),(x0-1.155R,y0+R),(x0+1.155R,y0-R),(x0-1.155R,y0-R)四點(diǎn)組成的矩形區(qū)域;
其中,單體機(jī)器人圓面圓心點(diǎn)坐標(biāo)為(x0,y0)。
所述處于行進(jìn)狀態(tài)的單體機(jī)器人沿靜止單體機(jī)器人的邊緣行走,是沿順時針方向,以與集群機(jī)器人間距為0.309倍的單體機(jī)器人半徑距離,圍繞集群機(jī)器人進(jìn)行移動。
所述單體機(jī)器人自身位置坐標(biāo)信息采用如下定位方法進(jìn)行計算獲得:
其中,xself,yself分別表示為單體機(jī)器人真實(shí)的橫、縱坐標(biāo);分別表示為單體機(jī)器人的橫、縱坐標(biāo)計算值;xn,yn分別表示為該單體機(jī)器人的鄰近單體機(jī)器人中的第n個單體機(jī)器人的橫、縱坐標(biāo)計算值;DN表示為該單體機(jī)器人與其通訊范圍內(nèi)第n單體機(jī)器人之間的測量距離。
在組建的圖形中,相鄰單體機(jī)器人之間的間距為單體機(jī)器人半徑的0.309倍。
有益效果
本發(fā)明提供了一種基于自組織行為的集群機(jī)器人圖形組建方法,包含以下步驟:步驟1:從控制器向機(jī)器人個體發(fā)送路徑信息;步驟2:將多個單體機(jī)器人排隨機(jī)列成一個緊密的機(jī)器人群體,并初始化4個種子狀態(tài)機(jī)器人信息;步驟3:根據(jù)從控制器接收到的路徑信息、機(jī)器人之間傳輸?shù)男畔ⅰ顟B(tài)控制算法和基本行為對單體機(jī)器人的運(yùn)動狀態(tài)進(jìn)行控制,進(jìn)一步實(shí)現(xiàn)對群機(jī)器人運(yùn)動和組成圖形的控制完成圖形組建;
該方法相對于現(xiàn)有技術(shù)中能夠?qū)崿F(xiàn)群機(jī)器人自編隊功能的機(jī)器人需要有較強(qiáng)計算能力的處理器和強(qiáng)大的傳感器系統(tǒng)而言,該方法面向微小型群集機(jī)器人,對機(jī)器人硬件的要求低,硬件方面只需要紅外傳感器和計算能力較弱的處理器和常規(guī)電機(jī)即可,與其他復(fù)雜傳感器的編隊系統(tǒng)相比,更加輕便,有著更好的操控性;在定位方面,本發(fā)明所述方法中采用的是一種緊密環(huán)繞的結(jié)構(gòu),每一個處于種子狀態(tài)單體機(jī)器人最終都會被6個單體機(jī)器人緊密圍繞,形成一個六邊形穩(wěn)定結(jié)構(gòu),在三邊定位時不會出現(xiàn)因為機(jī)器人共線,而導(dǎo)致三邊定位法的失??;相比其他的隊形結(jié)構(gòu),該六邊形結(jié)構(gòu)有著更加穩(wěn)定的效果和更精確的測量;并且因為工作負(fù)責(zé)區(qū)域的設(shè)置,若某一時刻某一個機(jī)器人出現(xiàn)定位的誤差,只要計算后的機(jī)器人負(fù)責(zé)區(qū)域覆蓋真實(shí)的坐標(biāo),則在編隊表現(xiàn)上就不會出現(xiàn)偏差,仍舊按照正常的軌跡行進(jìn),因此,本發(fā)明所述方法在定位方面具有一定的容錯性。
附圖說明
圖1為本發(fā)明所述方法的整體流程圖;
圖2為本發(fā)明中央處理器與單體機(jī)器人關(guān)系示意圖;
圖3為本發(fā)明組成“L”圖形實(shí)驗過程圖,其中,圖(a)為起始梯度圖;圖(b)為機(jī)器人開始運(yùn)動圖;圖(c)為第一個運(yùn)動機(jī)器人停止運(yùn)動圖;圖(d)為第二個運(yùn)動機(jī)器人停止運(yùn)動圖;圖(e)為新種子狀態(tài)機(jī)器人產(chǎn)生圖;圖(f)為6個機(jī)器人加入預(yù)設(shè)圖形圖;圖(g)為圖形形成至拐角處圖;圖(h)為通過優(yōu)先值判斷產(chǎn)生新種子狀態(tài)機(jī)器人圖;圖(I)為最終“L”形狀形成圖;
圖4為本發(fā)明所述方法中單體機(jī)器人工作負(fù)責(zé)區(qū)域示意圖;
圖5為本發(fā)明所述方法中單體機(jī)器人的狀態(tài)轉(zhuǎn)換圖;
圖6為本發(fā)明所述方法中單體機(jī)器人沿邊緣行進(jìn)的運(yùn)動軌跡圖;
圖7為本發(fā)明所述方法中單體機(jī)器人優(yōu)先值計算示意圖;
圖8為本發(fā)明所述方法中單體機(jī)器人部分硬件組成示意圖。
具體實(shí)施方式
以下將結(jié)合附圖和具體實(shí)施對文本發(fā)明進(jìn)一步詳細(xì)說明。
本發(fā)明所述的一種基于自組織行為的集群機(jī)器人圖形組建方法,如圖1所示,具體步驟如下:
步驟1:向集群機(jī)器人發(fā)送所需的組建的圖形路徑信息;
向集群機(jī)器人發(fā)送路徑信息的控制器僅包含通過紅外信號發(fā)射器向各個終端機(jī)器人個體發(fā)送地圖信息的功能,不包含在運(yùn)行期間進(jìn)行通信向機(jī)器人發(fā)送動態(tài)指令的功能。
向各單體機(jī)器人發(fā)送的路徑信息為單一起點(diǎn),單一終點(diǎn),路徑無岔路的線型地圖信息。路徑無岔路的含義為群機(jī)器人不能在岔路口解體沿不同的方向行進(jìn)。
步驟1.1:預(yù)先通過接口將控制算法文件存入ROM存儲器中,由中央控制器通過紅外裝置向所有單體機(jī)器人發(fā)送地圖路徑信息,如圖2所示。
步驟1.2:所有單體機(jī)器人接收到由控制器發(fā)送過來的地圖信息和初始定位信息存儲在ROM存儲器中。
步驟2:將多個單體機(jī)器人排隨機(jī)列成一個緊密的機(jī)器人群體,并初始化4個起始狀態(tài)單體機(jī)器人信息。
單體機(jī)器人利用紅外發(fā)射器,向其通訊范圍內(nèi)的其他單體機(jī)器人交換位置坐標(biāo)信息,ID信息,所處狀態(tài)信息以及梯度信息。并可通過紅外發(fā)射器計算其與通訊范圍內(nèi)其他機(jī)器人之間的距離。
初始化單體機(jī)器人信息包括單體機(jī)器人位置坐標(biāo)信息,ID信息,所處狀態(tài)信息,梯度信息,通訊范圍內(nèi)與其他機(jī)器人之間的距離。
初始化的4個機(jī)器人為圖形組建的起點(diǎn),且圖形的起始點(diǎn)被4個單體機(jī)器人中的種子狀態(tài)機(jī)器人的負(fù)責(zé)區(qū)域所覆蓋。預(yù)設(shè)初始化4個單體機(jī)器人的位置定位數(shù)據(jù)和梯度數(shù)據(jù),種子狀態(tài)機(jī)器人梯度為0,其他三個機(jī)器人梯度為3。
步驟3:根據(jù)從控制器接收到的路徑信息、機(jī)器人之間傳輸?shù)男畔?、狀態(tài)控制算法和基本行為對單體機(jī)器人的運(yùn)動狀態(tài)進(jìn)行控制,進(jìn)一步實(shí)現(xiàn)對群機(jī)器人運(yùn)動和組成圖形的控制。
單個機(jī)器人的運(yùn)動狀態(tài)包括起始停止?fàn)顟B(tài)、等待狀態(tài)、行進(jìn)狀態(tài)、種子狀態(tài)、暫停判斷狀態(tài)和終止停止?fàn)顟B(tài);
所有單體機(jī)器人同時開始執(zhí)行算法文件,并同步通過紅外發(fā)射器和紅外接收器與通訊范圍內(nèi)的機(jī)器人進(jìn)行通信,并將與其通信機(jī)器人的ID信息、狀態(tài)信息、梯度信息、定位信息,和自身的ID信息,狀態(tài)信息,實(shí)時更新儲存在RAM中。通過紅外發(fā)射裝置向外廣播信息RAM中的自身信息,并在停止后同時向外廣播ROM中的定位信息。
步驟3.1:如圖(a)所示,4個初始化的單體機(jī)器人被放置在圖形的起點(diǎn)附近,處于種子狀態(tài)的單體機(jī)器人的梯度為0,其他三個單體機(jī)器人的梯度為1,與其他單體機(jī)器人組成一個緊密的機(jī)器人群體。其他單體機(jī)器人通過梯度計算算法計算自身的梯度,機(jī)器人梯度標(biāo)記在機(jī)器人圖形上。
步驟3.2:如圖(b)所示,通過梯度計算之后再圖(a)中梯度為7的單體機(jī)器人梯度最大,且在通訊范圍內(nèi)沒有運(yùn)動機(jī)器人,則該單體機(jī)器人開始沿其它單體機(jī)器人組成的集群邊緣運(yùn)動。
步驟3.3:隨后梯度同為6的機(jī)器人會依據(jù)ID大小的比較決定運(yùn)動的先后順序,之后的機(jī)器人會依次從等待狀態(tài)轉(zhuǎn)化到行進(jìn)狀態(tài)。如圖(c)所示第一個處于行進(jìn)狀態(tài)的單體機(jī)器人到達(dá)與種子狀態(tài)機(jī)器人相距小于等于3.09R的位置則進(jìn)入暫停判斷狀態(tài)。
步驟3.4:如圖(d)所示,第二個處于行進(jìn)狀態(tài)的單體機(jī)器人到達(dá)與種子狀態(tài)機(jī)器人相距小于等于3.09R的位置則進(jìn)入暫停判斷狀態(tài)。
步驟3.5:如圖(e)所示,第三個處于行進(jìn)狀態(tài)的單體機(jī)器人到達(dá)與種子狀態(tài)機(jī)器人相距小于等于3.09R的位置則進(jìn)入暫停判斷狀態(tài)。此時初始種子狀態(tài)機(jī)器人檢測到周圍存在6個距離其小于等于0.309R的單體機(jī)器人,則該單體機(jī)器人由種子狀態(tài)轉(zhuǎn)入最終停止?fàn)顟B(tài)。
此時之前三個進(jìn)入暫停判斷狀態(tài)的單體機(jī)器人檢測到周圍不存在種子狀態(tài)機(jī)器人則會通過計算優(yōu)先值,并通過三者相互比較優(yōu)先值大小,確定箭頭所指的單體機(jī)器人優(yōu)先值最大進(jìn)入種子狀態(tài),其他兩個單體機(jī)器人由暫停判斷狀態(tài)轉(zhuǎn)入終止停止?fàn)顟B(tài)。
步驟3.6:隨后又會有三個單體機(jī)器人將新的處于種子狀態(tài)的單體機(jī)器人圍繞,如圖(f)所示,并會再次產(chǎn)生新的處于種子狀態(tài)的單體機(jī)器人,并且其他兩個處于暫停判斷狀態(tài)的單體機(jī)器人將會進(jìn)入終止停止?fàn)顟B(tài)。
步驟3.7:經(jīng)過幾個周期后,集群機(jī)器人將會遇到如圖(g)所示的路線的拐角情況。此時如圖所示有A和B兩個單體機(jī)器人的負(fù)責(zé)區(qū)域覆蓋路徑,通過優(yōu)先值的計算可得B的優(yōu)先值為線優(yōu)先值大于A的點(diǎn)有限值,所以單體機(jī)器人B為新一代處于種子狀態(tài)的機(jī)器人,之后的單體機(jī)器人將會如圖(h)所示圍繞機(jī)器人B排列。
步驟3.8:最終組成如圖(I)所示的“L”圖形。
步驟4:所有單體機(jī)器人都加入到指定圖形的組成,算法結(jié)束。
由多個單體機(jī)器人組成的指定負(fù)責(zé)的區(qū)域,如圖4所示。當(dāng)一個單體機(jī)器人被多個單體機(jī)器人機(jī)密環(huán)繞時,各單體機(jī)器人之間間距一定;一個單體機(jī)器人周圍最多能夠圍繞6個單體機(jī)器人,直線l1,l2,l3,l4,l5,l6分別與圓相切。設(shè)相鄰單體機(jī)器人圓心之間的距離為D,機(jī)器人圓半徑為R,機(jī)器人之間距離為d,則有:
設(shè)中間單體機(jī)器人的位置坐標(biāo)為(xo,yo),則其工作負(fù)責(zé)的區(qū)域為由(xo+1.155R,yo+R),(xo-1.155R,yo+R),(xo+1.155R,yo-R),(xo-1.155R,yo-R)4點(diǎn)組成的矩形S區(qū)域。其他單體機(jī)器人的工作負(fù)責(zé)區(qū)域按照相同方法進(jìn)行計算。
根據(jù)控制算法,每個單體機(jī)器人會有一個自身狀態(tài)的轉(zhuǎn)換過程,狀態(tài)轉(zhuǎn)換過程圖如圖5所示。算法描述如下:
步驟1:當(dāng)算法文件開始執(zhí)行時,除四個初始化的單體機(jī)器人外其他機(jī)器人為起始終止?fàn)顟B(tài),并進(jìn)行梯度計算,在梯度計算后進(jìn)入步驟2;
步驟2:單體機(jī)器人進(jìn)入等待狀態(tài),檢測周圍是否存在處于行進(jìn)狀態(tài)的單體機(jī)器人,若不存在,則轉(zhuǎn)至步驟3;若存在,則保持等待狀態(tài),直到周圍不存在處于行進(jìn)狀態(tài)的單體機(jī)器人轉(zhuǎn)至步驟3;
步驟3:判斷自身的梯度數(shù)值是否為通訊范圍內(nèi)最大的,若不是則保持等待狀態(tài),直到自身的梯度在通訊范圍內(nèi)為最大值轉(zhuǎn)至步驟4;若自身梯度是通訊范圍內(nèi)最大值則轉(zhuǎn)至步驟4;
步驟4:判斷是否在通訊范圍內(nèi)是否存在機(jī)器人與其梯度相同,若不存在,則跳至步驟5;若存在則等待自身ID為最大值,轉(zhuǎn)至步驟5;
步驟5:進(jìn)入行進(jìn)狀態(tài),判斷與種子狀態(tài)機(jī)器人間距是否大于0.309R,若大于則保持行進(jìn)狀態(tài),并直至運(yùn)動到與處于種子狀態(tài)的單體機(jī)器人間距不大于0.309R的位置轉(zhuǎn)至步驟6;若不大于則轉(zhuǎn)至步驟6;
步驟6:進(jìn)入暫停判斷狀態(tài),判斷周圍是否有存在處于種子狀態(tài)的單體機(jī)器人,若不存在轉(zhuǎn)至步驟7;若存在,則保持該狀態(tài),等待當(dāng)周圍不存在處于種子狀態(tài)的單體機(jī)器人時轉(zhuǎn)至步驟7;
步驟7:計算優(yōu)先值并于其他同處于暫停判斷狀態(tài)機(jī)器人進(jìn)行比較,若優(yōu)先值最大,則轉(zhuǎn)至步驟8;若優(yōu)先值非最大轉(zhuǎn)至步驟9;
步驟8:進(jìn)入種子狀態(tài),判斷周圍是否圍滿6個單體機(jī)器人,若是則轉(zhuǎn)至步驟9;若不是則保持種子狀態(tài),直到周圍圍滿6個機(jī)器人,轉(zhuǎn)至步驟9;
步驟9:進(jìn)入終止停止?fàn)顟B(tài),進(jìn)行計算定位信息,并向外廣播定位信息,單體機(jī)器人將不再運(yùn)動。
沿邊緣行走行為,如圖6所示。以順時針方向圍繞由靜止機(jī)器人組成的機(jī)器人群體以與群體間距為0.309R距離進(jìn)行移動,并且僅在單體機(jī)器人的行進(jìn)狀態(tài)下執(zhí)行。設(shè)置單體機(jī)器人運(yùn)動步長為df,角度轉(zhuǎn)動步長為αf,并且需要記錄之前一步的距離dp,設(shè)置預(yù)期距離ds和現(xiàn)有測量距離D。
其中所指的距離為行進(jìn)機(jī)器人與被該機(jī)器人圍繞行進(jìn)的機(jī)器人圓心之間的距離。在實(shí)際中ds=0.309R,R為單體機(jī)器人半徑。偽代碼如下:
If D<ds
ifdp<D
向前前進(jìn)df;
else
逆時針轉(zhuǎn)αf并前進(jìn)df;
end
else
ifdp>D
向前前進(jìn)df;
else
順時針轉(zhuǎn)αf并前進(jìn)df;
end
end
計算優(yōu)先值:如圖7所示,是根據(jù)自身定位行為計算定位信息和負(fù)責(zé)區(qū)域,與控制器預(yù)先向該單體機(jī)器人發(fā)送的路徑信息,進(jìn)行各機(jī)器人優(yōu)先值計算的行為。根據(jù)機(jī)器人定位信息與給定路徑的距離和位置,優(yōu)先值計算結(jié)果可分為:線形優(yōu)先值、拐點(diǎn)形優(yōu)先值和非優(yōu)先值。設(shè)定:線形優(yōu)先值>拐點(diǎn)形優(yōu)先值>非優(yōu)先值。如圖7所示,設(shè)路徑由一個半圓圓弧C,兩條直線L1,L2。L1與L2拐點(diǎn)P,起點(diǎn)S,終點(diǎn)F組成。直線路徑L1與半圓圓弧路徑C平滑連接。若路徑上存在一點(diǎn)i,且i∈A,A為一機(jī)器人的工作負(fù)責(zé)區(qū)域,則認(rèn)為該路徑∈A。
若僅L1∈A則該機(jī)器人優(yōu)先值為線優(yōu)先值;
若僅L2∈A則該機(jī)器人優(yōu)先值為線優(yōu)先值;
若僅P∈A則該機(jī)器人優(yōu)先值為點(diǎn)優(yōu)先值;
若僅C∈A則該機(jī)器人優(yōu)先值為線優(yōu)先值;
若A為則該機(jī)器人優(yōu)先值為非優(yōu)先值。
ID計算用來確定群機(jī)器人進(jìn)入行進(jìn)狀態(tài)的順序,當(dāng)一個機(jī)器人在通訊半徑內(nèi)檢測到其與另外一個或多個機(jī)器人的梯度同為該通訊范圍內(nèi)最大梯度時,則通過比較ID確定先后順序。ID計算行為為隨機(jī)一個[0,1]之間的數(shù)字作為自身的ID,ID大的先進(jìn)行運(yùn)動。
通過ID進(jìn)行判斷后機(jī)器人Rn先進(jìn)入行進(jìn)狀態(tài),Rm隨后計入運(yùn)動狀態(tài)。初始時Rn與Rm之間的間距dnm=0,dnm<d0,d0為最小運(yùn)動間距,機(jī)器人Rn為行進(jìn)狀態(tài),Rm為準(zhǔn)備狀態(tài)。當(dāng)Rn運(yùn)動一段時間后,與Rm間距滿足dnm>d0時,Rm進(jìn)入運(yùn)動狀態(tài)。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。