摘 要: 為解決多機器人協(xié)作的問題,,設(shè)計了可以讓機器人之間基于ZigBee網(wǎng)絡(luò)進行通信的通信方案,。機器人硬件系統(tǒng)中引入了ZigBee節(jié)點,多個機器人依賴ZigBee形成一個星型網(wǎng)絡(luò),,每個機器人可以通過中心節(jié)點保持通信。實驗結(jié)果表明,,機器人之間可以可靠地進行通信,,能夠顯著提高機器人的工作效率。
關(guān)鍵詞: 多機器人; 通信,; ZigBee; MG2455
機器人[1]作為人類20世紀最偉大的發(fā)明之一,,在短短的40年內(nèi)發(fā)生了日新月異的變化。隨著社會生產(chǎn)技術(shù)的飛速發(fā)展,,機器人的應(yīng)用領(lǐng)域也不斷擴展,,從自動化生產(chǎn)線到海洋資源的探索,乃至太空作業(yè)等領(lǐng)域,,機器人可謂是無處不在,。然而就目前的機器人技術(shù)水平而言,單機器人在信息的獲取,、處理及控制能力等方面都是有限的,,對于復(fù)雜的工作任務(wù)及多變的工作環(huán)境,單機器人的能力更顯不足,。由多個機器人組成的群體系統(tǒng)通過協(xié)調(diào),、協(xié)作來完成單機器人無法或難以完成的工作將是機器人發(fā)展的一個趨勢。目前的多機器人通信一般采用有線通信的方式,,盡管技術(shù)成熟,、可靠性高,但由于線纜限制了機器人的移動范圍和靈活性,,沒能得到廣泛的應(yīng)用,。ZigBee網(wǎng)絡(luò)技術(shù)是基于802.15.4的無線通信協(xié)議,具有低成本,、低功耗,、低傳輸速率的特點,并支持星型,、樹狀和網(wǎng)狀等多種網(wǎng)絡(luò)拓撲結(jié)構(gòu),。多機器人協(xié)作只需要彼此間斷性地傳遞有限的信息,并要盡可能地節(jié)省能量,。而ZigBee非常適合這種場合的應(yīng)用。
1 ZigBee技術(shù)及優(yōu)勢
1.1 ZigBee簡介
ZigBee是一組基于IEEE批準通過的802.15.4無線標準研制開發(fā)的,,是有關(guān)組網(wǎng),、安全和應(yīng)用軟件方面的技術(shù)標準。IEEE僅處理低級MAC層和物理層協(xié)議,,而ZigBee聯(lián)盟對其網(wǎng)絡(luò)層協(xié)議和API進行了標準化,。每個協(xié)調(diào)器可連接多達255個節(jié)點,而由此形成的ZigBee網(wǎng)絡(luò)對路由傳輸?shù)臄?shù)目沒有限制,。ZigBee聯(lián)盟還開發(fā)了安全層,,以保證這種便攜設(shè)備不會意外泄漏其標識。完整的ZigBee協(xié)議套件由高層應(yīng)用規(guī)范,、應(yīng)用層,、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層組成,。網(wǎng)絡(luò)層以上協(xié)議由ZigBee聯(lián)盟制定,,IEEE802.15.4負責物理層和鏈路層標準。
1.2 ZigBee優(yōu)勢
ZigBee[2]技術(shù)是一種新興的近距離,、低復(fù)雜度,、低功耗、低數(shù)據(jù)速率,、低成本的無線網(wǎng)絡(luò)技術(shù),,它是一種介于無線標記技術(shù)和藍牙之間的技術(shù)提案。主要用于近距離無線連接,。一般而言,,隨著通信距離的增大,設(shè)備的復(fù)雜度,、功耗以及系統(tǒng)成本都在增加,。相對于現(xiàn)有的各種無線通信技術(shù),ZigBee技術(shù)將是最低功耗和最低成本的技術(shù),。同時由于ZigBee技術(shù)的低數(shù)據(jù)速率和通信范圍較小的特點,,也決定了ZigBee技術(shù)適合于承載數(shù)據(jù)流量較小的業(yè)務(wù)。所以,,ZigBee聯(lián)盟預(yù)測的主要應(yīng)用領(lǐng)域包括工業(yè)控制,、消費性電子設(shè)備、汽車自動化,、農(nóng)業(yè)自動化和醫(yī)用設(shè)備控制等,。
2 機器人通信系統(tǒng)的設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)
多移動機器人通信可以采用ZigBee的星型結(jié)構(gòu),如圖1所示。在這個網(wǎng)絡(luò)中,,充當網(wǎng)絡(luò)協(xié)調(diào)器的機器人負責組建網(wǎng)絡(luò),,管理網(wǎng)絡(luò),并對網(wǎng)絡(luò)的安全負責,。它要存儲網(wǎng)絡(luò)內(nèi)所有節(jié)點的設(shè)備信息, 包括數(shù)據(jù)包轉(zhuǎn)發(fā)表,、設(shè)備關(guān)聯(lián)表以及與安全有關(guān)的密鑰等。其他的普通機器人,,使用的ZigBee節(jié)點都是RFD設(shè)備,。當這類機器人受到某些觸發(fā)時,例如內(nèi)部定時器時間到了,、外部傳感器采集完數(shù)據(jù),、收到協(xié)調(diào)器要求答復(fù)的命令,就會向協(xié)調(diào)器傳送數(shù)據(jù),。作為網(wǎng)絡(luò)協(xié)調(diào)器的機器人可以采用有線的方式和1臺PC機相連接,,在PC機上存儲網(wǎng)絡(luò)需要的綁定表、路由表和設(shè)備信息,,減小網(wǎng)絡(luò)協(xié)調(diào)器的負擔,提高網(wǎng)絡(luò)的運行效率,。
2.2 機器人的硬件設(shè)計
機器人的硬件一般包含核心控制器模塊,、外界數(shù)據(jù)采集模塊、驅(qū)動模塊以及執(zhí)行機構(gòu),。在本設(shè)計中加入了無線通信模塊,,其硬件結(jié)構(gòu)如圖2所示。核心控制部分實際上是一個典型的嵌入式系統(tǒng),。處理器采用Atmel公司的AT91RM9200處理器,,它是一款工業(yè)級的處理器,ARM920T內(nèi)核,,200MIPS的處理速率,,外圍接口豐富。ZigBee無線通信模塊采用韓國RadioPulse公司的MG2455芯片,。當機器人的無線接收部分接收到命令或數(shù)據(jù)時,,由MG2455芯片進行相應(yīng)的處理后傳送給高速處理器,由高速處理器來驅(qū)動機器人的電機部分,,實現(xiàn)相應(yīng)的操作,。當機器人需要向其他機器人或者PC機發(fā)送命令或者數(shù)據(jù)時,就由高速處理器把組織好的數(shù)據(jù)發(fā)送給ZigBee節(jié)點,,ZigBee節(jié)點再把數(shù)據(jù)組裝成幀,,從天線發(fā)送出去。可以采用1臺PC機來實現(xiàn)機器人的監(jiān)測與控制,,把需要耗費時間和運算量的工作轉(zhuǎn)移到PC機上進行,,以提高網(wǎng)絡(luò)的運行效率。AT91RM9200采用串口與ZigBee通信模塊連接,。當有數(shù)據(jù)需要傳送時,,主動方通過串口發(fā)出中斷由對方CPU來處理傳送過來的數(shù)據(jù)。由于通信的數(shù)據(jù)量并不是很大并且通信并不很頻繁,,所以不會影響核心控制部分的正常運行,。各種傳感器和驅(qū)動器作為處理器的外設(shè)和系統(tǒng)相連。傳感器采集外界環(huán)境中的各種信息,,例如溫度,、濕度、亮度,。驅(qū)動器是各種電機,,控制機器人手和足的運動。
2.3 通信模塊ZigBee節(jié)點的硬件設(shè)計
MG2455[3]是韓國RadioPulse公司推出的用來實現(xiàn)嵌入式ZigBee應(yīng)用的片上系統(tǒng),。它支持2.4 GHz IEEE802.15.4/ZigBee協(xié)議,,通信距離能夠達到300 m。在物理層,,它使用直接序列擴頻技術(shù)和O-QPSK調(diào)制技術(shù),具有很強的抗干擾能力,。在MAC層,它采用了CSMA-CA機制競爭信道,,提高了信道的利用率,。MG2455芯片有3種可選的通信速率:250 kb/s供ZigBee使用,500 kb/s和1 Mb/s的通信速率供傳遞語音和圖像使用,。在1.5 V的工作電壓下,,可以達到-98 dBm的接收靈敏度和8 dBm的發(fā)射強度。功耗在芯片進入深度睡眠的模式下可以降低到1 ?滋A以下,。MG2455芯片的處理速度是標準8051單片機的12倍,,具有96 KB的內(nèi)置Flash和8 KB的數(shù)據(jù)存儲區(qū),1個SPI接口,,2個串行接口,,2個外部中斷,4個A/D轉(zhuǎn)換器,,4個定時器,,2個PWM,22個普通I/O口,。另外,,它的體積只有7 mm×7 mm×0.9 mm,外圍電路僅需要一些電感,、電容和電阻。天線既可以是鞭狀天線也可以是陶瓷天線或者PCB天線,。這些優(yōu)點非常適合于機器人通信節(jié)點的應(yīng)用,。用MG2455芯片實現(xiàn)的ZigBee節(jié)點硬件原理圖如圖3所示。
3 機器人通信系統(tǒng)的軟件設(shè)計
3.1 核心控制器的軟件設(shè)計
核心控制器的控制對象涉及到多個輸入部件和輸出部件,,輸入部件主要是各種傳感器,,輸出部件主要是各種伺服電機。所以,,CPU處理的任務(wù)非常復(fù)雜,,可以考慮在軟件設(shè)計方面采用多任務(wù)實時操作系統(tǒng)UCOS。設(shè)計者分別寫出控制傳感器和電機的任務(wù),,然后把這些任務(wù)按照重要性賦予一定的優(yōu)先級,,讓操作系統(tǒng)輪流調(diào)用這些任務(wù)。
3.2 ZigBee節(jié)點的軟件設(shè)計
針對MG2455芯片,,RadioPulse公司提供了EVK,、MDK和ZDK 3種版本的軟件。EVK實現(xiàn)了MG2455芯片的驅(qū)動程序,,包括無線模塊,、串口模塊、功率控制模塊等,。MG2455芯片通過中斷實現(xiàn)物理層的數(shù)據(jù)與無線發(fā)送緩沖區(qū),、無線接收緩沖區(qū)的交換。用戶可以在這個軟件版本的基礎(chǔ)上實現(xiàn)各種靈活的上層應(yīng)用,;MDK實現(xiàn)了MAC層的協(xié)議,包括CSMA-CA機制,、數(shù)據(jù)請求,、節(jié)點加入請求和節(jié)點離開請求等復(fù)雜的原語;ZDK完整地實現(xiàn)了ZigBee協(xié)議定義的NWK,、APS,、AF、ZDO以及安全層,。3種版本的機器人的應(yīng)用強調(diào)數(shù)據(jù)傳輸?shù)膶崟r性,,所以選擇EVK版本作為開發(fā)上層應(yīng)用的軟件基礎(chǔ)。下面主要介紹幾個重要的函數(shù):
(1)void ZHAL_CHANNEL_SET(UINT8 chan);//set the channel
void ZHAL_PAN_ID_SET(UINT16 ID); //set the PAN id
void ZHAL_SHORT_ADDR_SET(UINT16 Addr);//set the short address
void ZHAL_TXPOWER_SET(UINT8 PowerLevel); //set the power
void ZHAL_DATARATE_SET(UINT8 Rate);//set the datarate
以上函數(shù)設(shè)置了節(jié)點的通信信道,、網(wǎng)絡(luò)ID,、網(wǎng)絡(luò)地址、發(fā)射功率和通信速率參數(shù),。
(2) UINT8 ZSYS_SEND_PACKET(UINT16 PANID,UINT16 SrcAddr, UINT16 DstAddr, UINT8 MsgLen, UINT8 *MsgBuff, UINT8 AckReq, UINT8 OobIndex); // send packet
源節(jié)點通過這個函數(shù)發(fā)送信息給目的節(jié)點,,參數(shù)包含了網(wǎng)絡(luò)ID號、源節(jié)點地址、目標地址,、發(fā)送長度,、發(fā)送內(nèi)容的指針,應(yīng)答標識位和傳輸速率的選擇位,。通過應(yīng)答標識位AckOn參數(shù)告訴目的節(jié)點是否需要回應(yīng)消息,。傳輸速率的選擇為:如果發(fā)送信息成功,則返回值為0,。
(3) MAC_PKT* ZSYS_RX_PACKET_GET( );//receive packet
ZSYS_RX_PACKET_CLR( ); //clear receive buffer
源節(jié)點通過這個函數(shù)在無線接收緩沖區(qū)接收信息,。當緩沖區(qū)中具有信息時,函數(shù)會返回指向數(shù)據(jù)的指針,通過這個指針可以訪問信息的源地址,、信號強度值以及內(nèi)容,;當沒有接收到信息時,函數(shù)返回一個空指針,。當無線緩沖區(qū)的數(shù)據(jù)得到處理后,,調(diào)用ZSYS_RX_PACKET_CLR( )函數(shù)清空接收緩沖區(qū)。
(4) void ZSYS_UART1_PUT_STRING(UINT8 *StrPtr,UINT8 StrLen)//put message to host
UINT8 ZSYS_UART1_GET_STRING(UINT8 *StrPtr,UINT8 StrLen);//get message from host
ZigBee節(jié)點通過這2個函數(shù)與主控制器芯片AT91RM9200通信,。
3.3 上層協(xié)議的設(shè)計
設(shè)計了一個簡單的2個機器人協(xié)作的應(yīng)用案例:A機器人用機械手臂從筐中取出1個乒乓球,,將其移動到合適的位置;B機器人從墨水瓶里面給筆蘸上墨水,,然后在A機器人手臂上的乒乓球上畫上一些圖案,,在畫圖案的過程中,A機器人會挪動乒乓球的位置,。圖案畫好后,,A機器人將畫有圖案的機器人放到另外1個筐子。針對這個案例,,設(shè)計了2個機器人之間的通信協(xié)議,。圖4是規(guī)定的發(fā)送數(shù)據(jù)的格式,先是1 B的命令前綴,,后面是可選的命令參數(shù),,主要是坐標信息。
(1) A機器人取到乒乓球后將球移動到合適的位置,,通知B機器人可以開始下一步工作,。此時,A機器人發(fā)送1個命令幀給B機器人,,此時只有命令前綴,,而沒有坐標信息。
(2) B機器人收到信息后,,到墨水瓶里面去蘸墨水,,通知機器人A要開始繪制圖案了,。
(3) B機器人會隔一段時間告訴A機器人現(xiàn)在的進度情況,A機器人則根據(jù)B機器人的進度,,調(diào)整乒乓球的位置,;此時發(fā)送的信息里面除了命令前綴以外,還有坐標信息,,這些坐標信息代表了當前任務(wù)的進度,。
(4) B機器人畫圖完成,告訴A機器人結(jié)束信息,,A機器人將乒乓球放回到筐中,。
本文分析了機器人通信的特點,結(jié)合ZigBee技術(shù)及發(fā)展現(xiàn)狀,,提出了基于ZigBee的機器人通信方案,,即把短距離通信技術(shù)應(yīng)用到機器人通信中,為機器人嵌入一個無線通信的模塊,,就像給機器人加上了一雙耳朵一樣,。詳細闡述了機器人的通信模塊的硬件和軟件的設(shè)計。目前機器人技術(shù)正在大行其道,,可以想像在不遠的將來,,機器人將為人類做各種各樣復(fù)雜的工作。ZigBeec網(wǎng)絡(luò)技術(shù)未來肯定能在機器人通信領(lǐng)域中占有一席之地,。
參考文獻
[1] 張海英,劉祚時,林桂娟.群體機器人研究的現(xiàn)狀和發(fā)展[J]. 電子技術(shù)應(yīng)用,,2004,30(2).
[2] 瞿雷,劉勝德,,胡咸斌.ZigBee技術(shù)及應(yīng)用.北京:北京航空航天大學(xué)出版社,,2007.