??? 摘 要: 介紹了一種用于Robocup F-180小型組足球機(jī)器人" title="足球機(jī)器人">足球機(jī)器人比賽的無(wú)線(xiàn)通信系統(tǒng)" title="通信系統(tǒng)">通信系統(tǒng)的設(shè)計(jì)。包括發(fā)送端和接收端" title="接收端">接收端系統(tǒng)的硬件設(shè)計(jì)和實(shí)現(xiàn)及其軟件設(shè)計(jì)。給出了一種適用于這套系統(tǒng)的通信協(xié)議,包括物理層的編碼設(shè)計(jì)、糾錯(cuò)編碼設(shè)計(jì)和幀結(jié)構(gòu)設(shè)計(jì)。
??? 關(guān)鍵詞: 串行通信? 無(wú)線(xiàn)通信? 機(jī)器人
?
??? 足球機(jī)器人是一個(gè)極富挑戰(zhàn)性的高技術(shù)密集型項(xiàng)目,融小車(chē)機(jī)械、機(jī)器人學(xué)、機(jī)電一體化、單片機(jī)、數(shù)據(jù)融合、精密儀器、實(shí)時(shí)數(shù)字信號(hào)處理、圖像處理與圖像識(shí)別、知識(shí)工程與專(zhuān)家系統(tǒng)、決策、軌跡規(guī)劃、自組織與自學(xué)習(xí)理論、多智能體協(xié)調(diào)以及無(wú)線(xiàn)通信等理論和技術(shù)于一體,既是一個(gè)典型的智能機(jī)器人系統(tǒng),又為研究發(fā)展多智能體系統(tǒng)、多機(jī)器人之間的合作與對(duì)抗提供了生動(dòng)的研究模型。它通過(guò)提供一個(gè)標(biāo)準(zhǔn)任務(wù),使研究人員利用各種技術(shù)獲得更好的解決方案,從而有效促進(jìn)各個(gè)領(lǐng)域的發(fā)展。其中的理論與技術(shù)可應(yīng)用于工業(yè)生產(chǎn)、自動(dòng)化流水線(xiàn)、救援、教育等實(shí)踐領(lǐng)域,從而有效推動(dòng)國(guó)家科技經(jīng)濟(jì)等方面的發(fā)展。機(jī)器人足球賽從一個(gè)側(cè)面反映了一個(gè)國(guó)家信息與自動(dòng)化領(lǐng)域的基礎(chǔ)研究和高技術(shù)發(fā)展水平。
??? 目前,國(guó)際上有組織的機(jī)器人足球比賽分為兩大系列——FIRA和Robocup。本文所要論述的系統(tǒng)所應(yīng)用的F-180小型足球機(jī)器人比賽就是RoboCup系列中應(yīng)用較廣泛的一種。
??? F-180小型足球機(jī)器人足球比賽的示意圖如圖1所示,比賽雙方各有5名機(jī)器人小車(chē)在場(chǎng)上。足球機(jī)器人系統(tǒng)在硬設(shè)備方面包括機(jī)器人小車(chē)、攝像裝置、計(jì)算機(jī)主機(jī)和無(wú)線(xiàn)發(fā)射裝置;從功能上分,它包括機(jī)器人小車(chē)、視覺(jué)、決策和無(wú)線(xiàn)通信四個(gè)子系統(tǒng)。
?
??? 其中無(wú)線(xiàn)通信系統(tǒng)是銜接主機(jī)和底層機(jī)器人不可缺少的一環(huán),它必須保證從主機(jī)端到機(jī)器人底層之間的數(shù)據(jù)傳送是可靠的,從而使得機(jī)器人比賽能夠順利流暢進(jìn)行。由于比賽雙方都有多個(gè)機(jī)器人同時(shí)在場(chǎng)地上跑動(dòng),要求無(wú)線(xiàn)通信有一定的抗干擾性。無(wú)線(xiàn)通信系統(tǒng)的性能相當(dāng)程度上直接影響著機(jī)器人的場(chǎng)上表現(xiàn)。
1 系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)
??? 比賽中從攝像頭來(lái)的視頻信號(hào)經(jīng)過(guò)計(jì)算機(jī)處理之后得到控制小車(chē)用的數(shù)據(jù)信息,而無(wú)線(xiàn)通信系統(tǒng)就是將這些數(shù)據(jù)信息及時(shí)準(zhǔn)確地送達(dá)場(chǎng)上的每一個(gè)機(jī)器人小車(chē),系統(tǒng)采用廣播方式,各機(jī)器人根據(jù)特定標(biāo)志識(shí)別發(fā)給自己的有用數(shù)據(jù),從而進(jìn)行決策與行動(dòng)。整個(gè)系統(tǒng)的框圖如圖2所示。
?
1.1 發(fā)送端的硬件設(shè)計(jì)
??? 發(fā)送端主要用PIC16F877單片機(jī)實(shí)現(xiàn)編碼和對(duì)發(fā)射機(jī)的控制,計(jì)算機(jī)通過(guò)串行口發(fā)送數(shù)據(jù),經(jīng)過(guò)PIC16F877編碼后再通過(guò)PTR3000無(wú)線(xiàn)通信模塊" title="無(wú)線(xiàn)通信模塊">無(wú)線(xiàn)通信模塊將數(shù)據(jù)發(fā)送出去。
??? 所采用的PIC16F877單片機(jī)是MICROCHIP公司推出的8位單片機(jī)。采用RISC指令系統(tǒng)和哈佛總線(xiàn)結(jié)構(gòu),最高運(yùn)行的時(shí)鐘頻率可達(dá)20MHz,因而指令運(yùn)行速度快。它有很寬的工作電壓范圍,可直接與3.3V的PTR3000無(wú)線(xiàn)通信模塊配合使用。
??? PTR3000無(wú)線(xiàn)數(shù)據(jù)收發(fā)模塊是一種半雙工收發(fā)器,采用NORDIC公司的nrf903無(wú)線(xiàn)收發(fā)芯片,工作頻率采用國(guó)際通用的數(shù)傳頻段ISM,頻段915MHz,工作頻率可以在902MHz~928MHz可變。采用GMSK調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制。靈敏度高,達(dá)到-100dBm,最大發(fā)射功率+10dBm,工作電壓為2.7V~3.3V。它最多有169個(gè)頻道,可滿(mǎn)足需要多頻道的場(chǎng)合,最高數(shù)據(jù)速率可達(dá)76.8kbps。因而完全可以滿(mǎn)足小型組機(jī)器人通信的數(shù)傳速率與距離的需要。
??? 本系統(tǒng)中PIC16F877就是采用20MHz的時(shí)鐘信號(hào),能夠滿(mǎn)足即時(shí)收發(fā)數(shù)據(jù)以及編碼的需要。整個(gè)系統(tǒng)中包含兩種電源,無(wú)線(xiàn)通信模塊的電源為3.3V,而MAX232又需要+5V電源。信號(hào)線(xiàn)的連接也要考慮兩種電平的匹配問(wèn)題,在必要的地方要加上電平轉(zhuǎn)換電路。
??? 首先單片機(jī)要接收來(lái)自計(jì)算機(jī)端的數(shù)據(jù),計(jì)算機(jī)串口輸出的信號(hào)經(jīng)過(guò)MAX232由232電平轉(zhuǎn)換為T(mén)TL電平。但是由于單片機(jī)采用3.3V電平,因而MAX232輸出的信號(hào)需經(jīng)過(guò)電平轉(zhuǎn)換才能輸入單片機(jī),電平轉(zhuǎn)換可以采用TI公司提供的典型電平匹配電路(見(jiàn)圖3),也可采用74LVCXX系列邏輯門(mén)來(lái)轉(zhuǎn)換。
?
??? 由于PIC16F877只有一個(gè)異步串行口,因而要通過(guò)16C550通用同步異步收發(fā)器(USART)芯片來(lái)擴(kuò)展一個(gè)異步串行口。這樣就可以保證從計(jì)算機(jī)串口輸出的數(shù)據(jù)與無(wú)線(xiàn)通信的數(shù)據(jù)速率不同,從而使原始數(shù)據(jù)經(jīng)過(guò)通信編碼及打包數(shù)據(jù)量增加之后也能及時(shí)傳送,并且在必要時(shí)也能將接收數(shù)據(jù)送回計(jì)算機(jī)端,實(shí)現(xiàn)半雙工通信。系統(tǒng)的電路圖如圖4。從圖4可以看出PIC單片機(jī)采用并口對(duì)16C550進(jìn)行初始化配置。由于16C550共有10個(gè)寄存器,且占用了8個(gè)地址,因而PIC單片機(jī)用RA0、RA1、RA2三個(gè)通用I/O" title="I/O">I/O口做地址線(xiàn)選擇16C550的各個(gè)寄存器。單片機(jī)可以不斷通過(guò)RB1、RB2引腳檢測(cè)TXRDY、RXRDY信號(hào)獲知ST16C550是否接收到數(shù)據(jù),還是已經(jīng)發(fā)送了數(shù)據(jù)。還可以通過(guò)把16C550設(shè)置成中斷方式使每接收到一個(gè)字節(jié)數(shù)據(jù)便產(chǎn)生一次中斷使INT信號(hào)有效,單片機(jī)進(jìn)入中斷處理程序,從而使單片機(jī)的執(zhí)行效率更高。
?
??? 單片機(jī)通過(guò)自帶的異步串行口輸出數(shù)據(jù)到PTR3000通信模塊。由于nrf903芯片接收和發(fā)送數(shù)據(jù)共用一個(gè)引腳,因而需要其他電路來(lái)解復(fù)用。最簡(jiǎn)單的方法就是在單片機(jī)的TX引腳先接一個(gè)10kΩ的隔離電阻,再與RX和PTR3000的DATA引腳相連。但是這種方法有兩個(gè)缺點(diǎn),它會(huì)造成發(fā)送的數(shù)據(jù)串入到單片機(jī)的接收引腳中,另外發(fā)送信號(hào)的驅(qū)動(dòng)能力受到了極大的限制。因此,本系統(tǒng)采用了74HC244三態(tài)緩沖器作為隔離(見(jiàn)圖4中虛線(xiàn)框內(nèi)所示),并且通過(guò)單片機(jī)的RB4控制收發(fā)狀態(tài),因而在半雙工方式下發(fā)送信號(hào)與接收信號(hào)可以互不干擾地傳送。
??? 對(duì)于通信模塊工作狀態(tài)的控制主要包含表1所列的這幾個(gè)信號(hào),通過(guò)單片機(jī)的普通I/O口即可控制。
?
1.2 發(fā)送端的軟件設(shè)計(jì)
??? 當(dāng)系統(tǒng)復(fù)位時(shí),單片機(jī)首先要對(duì)PTR3000無(wú)線(xiàn)通信模塊和16C550的寄存器進(jìn)行編程初始化。PTR3000的初始化編程是通過(guò)同步串行信號(hào)進(jìn)行的,總共有三個(gè)信號(hào)CFG_CLK、CS和CFG_DATA,分別連接到單片機(jī)RC3、RB7、RC5引腳。PIC16F877單片機(jī)本身就有同步串行口功能模塊,但是由于PTR3000的同步串行數(shù)據(jù)位為14位,并非整數(shù)字節(jié),而且14位數(shù)據(jù)必須一次初始化完成,因此實(shí)際通過(guò)普通的I/O口編程來(lái)實(shí)現(xiàn)這14位的同步串行信號(hào)更方便一些。在整個(gè)初始化期間CS信號(hào)必須一直為高電平。這14位初始化字的定義見(jiàn)表2。在初始化同步串行信號(hào)輸出時(shí)最高有效位在先。在對(duì)PTR3000編程前先設(shè)置其狀態(tài)為接收狀態(tài)以免在其他頻率造成無(wú)線(xiàn)干擾,編程完成后就可以將狀態(tài)改為發(fā)射狀態(tài)了。
?
??? 接下來(lái)對(duì)16C550的初始化設(shè)置。由于PIC16F877自身的并行口對(duì)16C550進(jìn)行初始化編程設(shè)置各個(gè)寄存器,需要注意的只是在輸出每一個(gè)字節(jié)之前先要通過(guò)RA0~RA2輸出相應(yīng)字節(jié)的地址信號(hào)。在初始化設(shè)置時(shí)將16C550的波特率設(shè)置低于76.8kbps,以保證接收的數(shù)據(jù)能夠通過(guò)PTR3000即時(shí)發(fā)送。
1.3 接收端的硬件設(shè)計(jì)
??? 接收端裝在每個(gè)機(jī)器人小車(chē)上,由于機(jī)器人小車(chē)的控制采用DSP控制器TMS320LF2407,因而在接收端PTR3000無(wú)線(xiàn)通信模塊就采用TMS320LF2407來(lái)控制。通過(guò)PTR3000接收的數(shù)據(jù)直接輸入DSP,由DSP進(jìn)行解碼,從而做出決策和發(fā)出控制信號(hào)。因而無(wú)線(xiàn)通信系統(tǒng)的接收端電路相對(duì)發(fā)送端要簡(jiǎn)單得多,只需用TMS320LF2407代替發(fā)送電路中的單片機(jī)與PTR3000模塊相連接即可。PTR3000的初始化編程也就由2407的普通I/O口來(lái)實(shí)現(xiàn),只不過(guò)在初始化編程之后依舊保持PTR3000處在接收狀態(tài)。
2 協(xié)議的設(shè)計(jì)
2.1物理層的編碼設(shè)計(jì)
??? 物理層的編碼設(shè)計(jì)要根據(jù)所采用的物理器件和物理信道的特性來(lái)決定。本系統(tǒng)采用PTR3000無(wú)線(xiàn)通信模塊。在接收模塊中為了獲得0直流電平就需要在所傳輸?shù)臄?shù)據(jù)中邏輯“0”和邏輯“1”的數(shù)量相等。只有滿(mǎn)足上述條件接收部分才會(huì)獲得很高的接收正確率。長(zhǎng)時(shí)間空閑也會(huì)導(dǎo)致接收部分的0直流電平漂移,因?yàn)殚L(zhǎng)時(shí)間的空閑實(shí)際上一直發(fā)送的是邏輯“1”。
??? 由于PTR3000的這些特性,很自然就想到采用曼徹斯特編碼(Manchester)(也稱(chēng)為數(shù)字雙向碼(Digital Biphase)或分相碼(Biphase,Split-phase))。它采用一個(gè)周期的方波表示“1”,而用它的反向波形表示“0”。由于方波的正負(fù)周期各占一半,因而信號(hào)中不存在直流分量[3]。在異步串行通信中有一個(gè)起始位“0”,因此將停止位“1”長(zhǎng)度也設(shè)為一位,這樣在一個(gè)字節(jié)共10位信號(hào)中也就不存在直流分量了。只是加了曼徹斯特編碼之后原來(lái)一個(gè)字節(jié)的數(shù)據(jù)現(xiàn)在要兩個(gè)字節(jié)才能傳送。
??? 有一些數(shù)據(jù)字節(jié),不會(huì)在進(jìn)行曼徹斯特編碼之后的數(shù)據(jù)串中出現(xiàn),但是在一個(gè)字節(jié)中也具有0直流分量的特性,也有很高的接收正確率。這類(lèi)數(shù)據(jù)字節(jié)如:0xF0、0x0F、0xCC、0x33等。從碼型看來(lái)其中0xF0碼型定時(shí)性能是最好的(其碼型見(jiàn)圖5),它很容易使異步接收器達(dá)到同步并且不會(huì)發(fā)生錯(cuò)誤。由于0xF0的這種特性就可以用它做同步碼元,在空閑的時(shí)間內(nèi)通信系統(tǒng)就通過(guò)一直發(fā)送同步碼元,使接收端保持同步,而且也可以保持接收模塊的0直流電平狀態(tài)。
?
2.2 糾錯(cuò)編碼設(shè)計(jì)
??? 為了在有一定外界干擾的情況下,保證主機(jī)與機(jī)器人之間的無(wú)線(xiàn)通信依然穩(wěn)定可靠,必須采取一定的抗干擾措施,這可以采用糾錯(cuò)編碼來(lái)實(shí)現(xiàn)??梢赃x擇的糾錯(cuò)編碼方案有(14,8)分組碼、(7,4)分組碼和循環(huán)碼?熏需要使用兩字節(jié)的長(zhǎng)度發(fā)送一字節(jié)的有效信息;(5,2)分組碼和循環(huán)碼,交錯(cuò)碼、(21,8)分組碼和縮短循環(huán)碼、(21,9)BCH碼、(21,12)BCH碼,需要使用三字節(jié)的長(zhǎng)度發(fā)送一字節(jié)的有效信息。
??? 系統(tǒng)中使用了(7,4)分組碼,并在實(shí)際中取得了較好的效果。它的構(gòu)成方式如下:
??? 假定不做任何處理的原碼格式為:
??
???
??? 其中每個(gè)字節(jié)的最高位作為標(biāo)志位,用于表示高四位和低四位,高四位用“1”做標(biāo)志,低四位用“0”做標(biāo)志。接收端通過(guò)檢測(cè)位標(biāo)志進(jìn)行重組和解碼。對(duì)于譯碼基本方法有維特比譯碼和使用監(jiān)督矩陣譯碼,可根據(jù)具體的編碼方案靈活選用。
2.3 幀格式設(shè)計(jì)
??? 一般數(shù)據(jù)幀包括幀頭、機(jī)器人標(biāo)識(shí)、數(shù)據(jù)、數(shù)據(jù)校驗(yàn)、保留字節(jié)等內(nèi)容,通常按照下面的格式排列:
???
??? 為了保證幀能夠準(zhǔn)確接收,幀頭的設(shè)計(jì)至關(guān)重要。一般幀頭需要兩個(gè)或兩個(gè)以上的字節(jié),并且應(yīng)該選擇數(shù)據(jù)中出現(xiàn)幾率較低的數(shù)值和組合。在這個(gè)系統(tǒng)中可以采用一般數(shù)據(jù)中根本不會(huì)出現(xiàn)的數(shù)據(jù)字節(jié)如0xF0、0xCC作為數(shù)據(jù)幀頭。而其它類(lèi)型的幀(如開(kāi)球或暫停等命令幀),則可以選擇在0xF0之后加上其它的字0x33、0xC3、0x3C、0x0F等構(gòu)成。這種幀頭組合在一般的數(shù)據(jù)中是不會(huì)出現(xiàn)的,因而可保證幀同步不會(huì)出錯(cuò)。場(chǎng)上的每個(gè)機(jī)器人通過(guò)數(shù)據(jù)幀中的機(jī)器人標(biāo)識(shí)來(lái)識(shí)別屬于自己的數(shù)據(jù),由于場(chǎng)上只有5個(gè)機(jī)器人,因而機(jī)器人標(biāo)識(shí)只占用一個(gè)字節(jié)。
??? 這套通信系統(tǒng)采用了PTR3000無(wú)線(xiàn)通信模塊進(jìn)行無(wú)線(xiàn)傳輸,并運(yùn)用了單片機(jī)的編解碼使這套系統(tǒng)工作更加穩(wěn)定可靠,使數(shù)據(jù)能夠及時(shí)正確地傳送到場(chǎng)上的每個(gè)機(jī)器人,完全滿(mǎn)足小型組足球機(jī)器人比賽的通信速率和正確率要求。
??? 這套小型組機(jī)器人通信系統(tǒng)已應(yīng)用于中國(guó)科技大學(xué)的F-180 Robocup小型足球機(jī)器人系統(tǒng)中。2003年7月在意大利舉行的Robocup小型組機(jī)器人足球比賽中,這套通信系統(tǒng)在存在各種通信干擾的情況下依然表現(xiàn)出了較高的可靠性。2003年8月在北京舉辦的全國(guó)機(jī)器人大賽F-180 Robocup小型組的比賽中,這套通信系統(tǒng)為中國(guó)科技大學(xué)一隊(duì)贏得了亞軍。
參考文獻(xiàn)
1 曹志剛,錢(qián)亞生.通信原理.北京:清華大學(xué)出版社,2000
2 劉和平,王維俊,江渝,鄧力.TMS320LF240x DSP C語(yǔ)言開(kāi)發(fā)應(yīng)用.北京航空航天大學(xué)出版社,2003