摘要:介紹了一種用于Robocup F-180小型組足球機(jī)器人比賽的無(wú)線通信系統(tǒng)的設(shè)計(jì)。包括發(fā)送端和接收端系統(tǒng)的硬件設(shè)計(jì)和實(shí)現(xiàn)及其軟件設(shè)計(jì)。給出了一種適應(yīng)于這套系統(tǒng)的通信協(xié)議,包括物理層的編碼設(shè)計(jì)、糾錯(cuò)編碼設(shè)計(jì)和幀結(jié)構(gòu)設(shè)計(jì)。
足球機(jī)器人是一個(gè)極富挑戰(zhàn)性的高技術(shù)密集 密集型項(xiàng)目,融小車(chē)機(jī)械、機(jī)器人學(xué)、機(jī)電一體化、單片機(jī)、數(shù)據(jù)融合、精密儀器、實(shí)時(shí)數(shù)字信號(hào)處理、圖像處理與圖像識(shí)別、知識(shí)工程與專家系統(tǒng)、決策、軌跡規(guī)劃、自組織與自學(xué)習(xí)理論、多智能體協(xié)調(diào)以及無(wú)線通信等理論和技術(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ā)展。其聽(tīng)理論與技術(shù)可應(yīng)用于工業(yè)生產(chǎn)、自動(dòng)化流水線、救援、教育等實(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ú)線發(fā)射裝置;從功能上分,它包括機(jī)器人小車(chē)、視覺(jué)、決策和無(wú)線通信四個(gè)子系統(tǒng)。
其中無(wú)線通信系統(tǒng)是銜接主機(jī)和底層機(jī)器人不可缺少的一環(huán),它必須保證從主機(jī)端到機(jī)器人底層之間的數(shù)據(jù)傳送是可靠的,從而使得機(jī)器人比較能夠順利流暢進(jìn)行。由于比賽雙方都有多個(gè)機(jī)器人同時(shí)在場(chǎng)地上跑動(dòng),要求無(wú)線通信有一定的抗干擾性。無(wú)線通信系統(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ú)線通信系統(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ú)線通信模塊將數(shù)據(jù)發(fā)送出去。
所采用的PIC16F877單片機(jī)是Microchip公司推出的8位單片機(jī)。采用RISC指令系統(tǒng)和哈佛總線結(jié)構(gòu),最高運(yùn)行的時(shí)鐘頻率可達(dá)20MHz,因而指令運(yùn)行速度快。它有很寬的工作電壓范圍,可直接與3.3V的PTR3000無(wú)線通信模塊配合使用。
TR3000無(wú)線數(shù)據(jù)收發(fā)模塊是一種半雙工收發(fā)器,采用NORDIC公司的nrf903無(wú)線收發(fā)芯片,工作頻率采用國(guó)際通用的數(shù)傳頻段ISM,頻段915MHz,工作頻率可以在902MHz~928MHz可變。采用GMSK調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制。靈敏度高,達(dá)到-100dBm,最大發(fā)射功率+10dBm,工作電壓為2.7V~3.3V。它最多有169個(gè)頻道,可滿足需要多頻道的場(chǎng)合,最高數(shù)據(jù)速率可達(dá)76.8kbps。因而完全可以滿足小型組機(jī)器人通信的數(shù)傳速率與距離的需要。
本系統(tǒng)中PIC16F877就是采用20MHz的時(shí)鐘信號(hào),能夠滿足即時(shí)收發(fā)數(shù)據(jù)以及編碼的需要。整個(gè)系統(tǒng)中包含兩種電源,無(wú)線通信模塊的電源為3.3V,而MAX232又需要+5電源。信號(hào)線的連接也要考慮兩種電平的匹配問(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ú)線通信的數(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口做地址線選擇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中虛線框內(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 PTR3000工作工作模式配置表
PTR3000工作模式 | STBY | PWR-DWN | TXEN | CS |
正常工作:接收 | 0 | 0 | 0 | 0 |
正常工作:發(fā)射 | 0 | 0 | 1 | 0 |
掉電模式 | 0 | 1 | X | X |
待機(jī)模式 | 1 | 0 | X | X |
1.2 發(fā)送端的軟件設(shè)計(jì)
當(dāng)系統(tǒng)復(fù)位時(shí),單片機(jī)首先要對(duì)PTR3000無(wú)線通信模塊和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編程前先其狀態(tài)為接收狀態(tài)以免在其他頻率造成無(wú)線干擾,編程完成后就可以將狀態(tài)改為發(fā)射狀態(tài)了。
表2 PTR3000初始化控制字各位定義
Bit | 參數(shù)名稱 | 符 號(hào) |
參 數(shù) |
位 數(shù) |
0~1 | 頻段 | FB | 必須為了10(表示為選擇頻段915±13MHz) | 2 |
2~9 | 頻點(diǎn) | CH | f=902.1696+CH·0.1536(MHz) | |
10~11 | 輸出功率 | POUT | 發(fā)射功率≈-8dBm+6dBm·POUT | 2 |
12~13 | 時(shí)鐘分頻輸出 | Fup |
"00"=>Fup=fxtal "01"=>Fup=fxtal/2 "10"=>Fup=fxtal/4 "11"=>Fup=fxtal/8 |
2 |
接下來(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ú)線通信模塊就采用TMS320LF2407來(lái)控制。通過(guò)PTR3000接收的數(shù)據(jù)直接輸入DSP,由DSP進(jìn)行解碼,從而做出決策和發(fā)出控制信號(hào)。因而無(wú)線通信系統(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ú)線通信模塊在接收模塊中為了獲得0直流電平就需要在所傳輸?shù)臄?shù)據(jù)中邏輯“0”和邏輯“1”的數(shù)量相等。只有滿足上述條件接收部分才會(huì)獲得很高的接收正確率。長(zhǎng)時(shí)間空閑也會(huì)導(dǎo)致接收部分的0直流電平漂移,因?yàn)殚L(zhǎng)時(shí)間的空閑實(shí)際上一直發(fā)送的是邏輯“1”。
由于PTR3000的這些特性,很自然就想到采用曼徹斯特編碼(Manchester)(也稱為數(shù)字雙向碼(Digital Biphase)或分相碼(Biphase,Split-phase)。它采用一個(gè)周期的方波表示“1”,而且它的反向波形表示“0”。由于方波的正負(fù)周期各占一半,因而信號(hào)中不存在直流分量。在異步串行通信中有一個(gè)起始位“0”,因此將停止位“1”長(zhǎng)度也設(shè)為一位,這樣在一個(gè)字節(jié)共10位信號(hào)中也就不存在直流分量了。只是加了曼徹 斯特編碼之后原來(lái)一個(gè)字節(jié)的數(shù)據(jù)現(xiàn)在要兩個(gè)字節(jié)才能傳送。
圖4
有一些數(shù)字節(jié),不會(huì)在進(jìn)行曼徹斯特編碼之后的數(shù)據(jù)串口出現(xiàn),但是在一個(gè)字節(jié)中也具有0直流分量的特性,也有很高的接收正確率。這類數(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ī)器人之間的無(wú)線通信依然穩(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)成方式如下:
假定不做任何處理的原碼格式為:
其高四位的監(jiān)督碼為:
A2 | A1 | A0 |
其低四位的監(jiān)督碼為:
B2 | B1 | B0 |
則編碼后成為兩個(gè)byte長(zhǎng)度:
1 | X7 | X6 | X5 | X4 | A2 | A1 | A0 |
0 | X3 | X2 | X1 | X0 | B2 | B1 | B0 |
其中每個(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)容,通常按照下面的格式排列:
幀頭 | 機(jī)器人標(biāo)識(shí) | 數(shù)據(jù) | 保留字 | 數(shù)據(jù)校驗(yàn) |
為了保證幀能夠準(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ù)幀頭。而其它類型的幀(如開(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ú)線通信模塊進(jìn)行無(wú)線傳輸,并運(yùn)用了單處機(jī)的編解碼使這套系統(tǒng)工作更加穩(wěn)定可靠,使數(shù)據(jù)通信及時(shí)正確地傳送到場(chǎng)上的每個(gè)機(jī)器人,完全滿足小型組足球機(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ì)贏得了亞軍。
評(píng)論
查看更多