一種基于Robocup F-180小型組足球機器人的無(wú)線(xiàn)通信系統
摘要:介紹了一種用于Robocup F-180小型組足球機器人比賽的無(wú)線(xiàn)通信系統的設計。包括發(fā)送端和接收端系統的硬件設計和實(shí)現及其軟件設計。給出了一種適應于這套系統的通信協(xié)議,包括物理層的編碼設計、糾錯編碼設計和幀結構設計。
本文引用地址:http://dyxdggzs.com/article/256063.htm關(guān)鍵詞:串行通信 無(wú)線(xiàn)通信 機器人
足球機器人是一個(gè)極富挑戰性的高技術(shù)密集 密集型項目,融小車(chē)機械、機器人學(xué)、機電一體化、單片機、數據融合、精密儀器、實(shí)時(shí)數字信號處理、圖像處理與圖像識別、知識工程與專(zhuān)家系統、決策、軌跡規劃、自組織與自學(xué)習理論、多智能體協(xié)調以及無(wú)線(xiàn)通信等理論和技術(shù)于一體,既是一個(gè)典型的智能機器人系統,又為研究發(fā)展多智能體系統、多機器人之間的合作與對抗提供了生動(dòng)的研究模型。它通過(guò)提供一個(gè)標準任務(wù),使研究人員利用各種技術(shù)獲得更好的解決方案,從而有效促進(jìn)各個(gè)領(lǐng)域的發(fā)展。其聽(tīng)理論與技術(shù)可應用于工業(yè)生產(chǎn)、自動(dòng)化流水線(xiàn)、救援、教育等實(shí)踐領(lǐng)域,從而有效推動(dòng)國家科技經(jīng)濟等方面的發(fā)展。機器人足球 從一個(gè)側面反映了一個(gè)國家信息與自動(dòng)化領(lǐng)域的基礎研究和高技術(shù)發(fā)展水平。
目前,國際上有機器人足球比賽分為兩大系列——FIRA和Robocup。本文所要論述的系統所應用的F-180小型足球機器人比賽就是RoboCup系列中應用較廣泛的一種。 F-180小型足球機器人足球比賽的示意圖如圖1所示,比賽雙方各有5名機器人小車(chē)在場(chǎng)上。足球機器人系統在硬件設備方面包括機器人小車(chē)、攝像裝置、計算機主機和無(wú)線(xiàn)發(fā)射裝置;從功能上分,它包括機器人小車(chē)、視覺(jué)、決策和無(wú)線(xiàn)通信四個(gè)子系統。

其中無(wú)線(xiàn)通信系統是銜接主機和底層機器人不可缺少的一環(huán),它必須保證從主機端到機器人底層之間的數據傳送是可靠的,從而使得機器人比較能夠順利流暢進(jìn)行。由于比賽雙方都有多個(gè)機器人同時(shí)在場(chǎng)地上跑動(dòng),要求無(wú)線(xiàn)通信有一定的抗干擾性。無(wú)線(xiàn)通信系統的性能相當程度上直接影響著(zhù)機器人的場(chǎng)上表現。
1 系統的設計及實(shí)現
比賽中從攝像頭來(lái)的視頻信號經(jīng)過(guò)計算機處理之后得到控制小車(chē)用的數據信息,而無(wú)線(xiàn)通信系統的就是將這些數據信息及時(shí)準確地送達場(chǎng)上的每一個(gè)機器人小車(chē),系統采用廣播方式,各機器人根據特定標志識別發(fā)給自己的有用數據,從而進(jìn)行決策與行動(dòng)。整個(gè)系統的框圖如圖2所示。
1.1 發(fā)送端的硬件設計
發(fā)送端主要用PIC16F877單片機實(shí)現編碼和對發(fā)射機的控制,計算機通過(guò)串行口發(fā)送數據,經(jīng)過(guò)PIC16F877編碼后再通過(guò)PTR3000無(wú)線(xiàn)通信模塊將數據發(fā)送出去。

所采用的PIC16F877單處機是MICROCHIP公司推出的8位單片機。采用RISC指令系統和哈佛總線(xiàn)結構,最高運行的時(shí)鐘頻率可達20MHz,因而指令運行速度快。它有很寬的工作電壓范圍,可直接與3.3V的PTR3000無(wú)線(xiàn)通信模塊配合使用。 TR3000無(wú)線(xiàn)數據收發(fā)模塊是一種半雙工收發(fā)器,采用NORDIC公司的nrf903無(wú)線(xiàn)收發(fā)芯片,工作頻率采用國際通用的數傳頻段ISM,頻段 915MHz,工作頻率可以在902MHz~928MHz可變。采用GMSK調制,抗干擾能力強,特別適合工業(yè)控制。靈敏度高,達到-100dBm,最大發(fā)射功率+10dBm,工作電壓為2.7V~3.3V。它最多有169個(gè)頻道,可滿(mǎn)足需要多頻道的場(chǎng)合,最高數據速率可達76.8kbps。因而完全可以滿(mǎn)足小型組機器人通信的數傳速率與距離的需要。 本系統中PIC16F877就是采用20MHz的時(shí)鐘信號,能夠滿(mǎn)足即時(shí)收發(fā)數據以及編碼的需要。整個(gè)系統中包含兩種電源,無(wú)線(xiàn)通信模塊的電源為 3.3V,而MAX232又需要+5電源。信號線(xiàn)的連接也要考慮兩種電平的匹配問(wèn)題,在必要的地方要加上電平轉換電路。 首先單片機要接收來(lái)自計算機端的數據,計算機串口輸出的信號經(jīng)過(guò)MAX232由232電平轉換為T(mén)TL電平。但是由于單片機采用3.3V電平,因而 MAX232輸出的信號需經(jīng)過(guò)電平轉換才能輸入單片機,電平轉換可以采用TI公司提供的典型電平匹配電路(見(jiàn)圖3),也可采用74LVCXX系列邏輯門(mén)來(lái)轉換。 由于PIC16F877只有一個(gè)異步串行口,因而要通過(guò)16C550通用同步異步收發(fā)器(USART)芯片來(lái)擴展一個(gè)異步串行口。這樣就可以保證從計算機串口輸出的數據與無(wú)線(xiàn)通信的數據速率不同,從而使原始數據經(jīng)過(guò)通信編碼及打包數據量增加之后也能及時(shí)傳送,并且在必要時(shí)也能將接收數據送回計算機端,實(shí)現半雙工通道。系統的電路圖如圖4。從圖4可以看出PIC單片機采用并口對16C550進(jìn)行初始化配置。由于16C550共有10個(gè)寄存器,且占用了8個(gè)地址,因而PIC單片機用RA0、RA1、RA2三個(gè)通用I/O口做地址線(xiàn)選擇16C550的各個(gè)寄存器。單片機可以不斷通過(guò)RB1、RB2引腳檢測 TXRDY、RXRDY信號獲知ST16C550是否接收到數據,還是已經(jīng)發(fā)送了數據。還可以通過(guò)把16C550設置成中斷方式使每接收到一個(gè)字節數據便產(chǎn)生一次中斷使INT信號有效,單片機進(jìn)入中斷處理程序,從而使單片機的執行效率更高。

單片機通過(guò)自帶的異步串行口輸出數據到PTR3000通信模塊。由于nrf903芯片接收和發(fā)送數據共用一個(gè)引腳,因而需要其他電路來(lái)解復用。最簡(jiǎn)單的方法就是在單片機的TX引腳先接一個(gè)10kΩ的隔離電阻,再與RX和PTR3000的DATA引腳相連。但是這種方法有兩個(gè)缺點(diǎn),它會(huì )造成發(fā)送的數據串入到單片機的接收引腳中,另外發(fā)送信號的驅動(dòng)能力受到了極大的限制。因此,本系統采用了74HC244三態(tài)緩沖器作為隔離(見(jiàn)圖4中虛線(xiàn)框內所示),并且通過(guò)單片機的RB4控制收發(fā)狀態(tài),因而在半雙工方式下發(fā)送信號與接收信號可以互不干擾地傳送。 對于通信模塊工作狀態(tài)的控制主要包含表1所列的這幾個(gè)信號,通過(guò)單片機的普通I/O口即可控制。 表1 PTR3000工作工作模式配置表 PTR3000工作模式 STBY PWR-DWN TXEN CS 正常工作:接收 0 0 0 0 正常工作:發(fā)射 0 0 1 0 掉電模式 0 1 X X 待機模式 1 0 X X
1.2 發(fā)送端的軟件設計
當系統復位時(shí),單片機首先要對PTR3000無(wú)線(xiàn)通信模塊和16C550的寄存器進(jìn)行編程初始化。PTR3000的初始化編程是通過(guò)同步串行信號進(jìn)行的,總共有三個(gè)信號CFG_CLK、CS和CFG_DATA,分別連接到單片機RC3、RB7、RC5引腳。PIC16F877單片機本身就有同步串行口功能模塊,但是由于PTR3000的同步串行數據位為14位,并非整數字節,而且14位數據必須一次初始化完成,因此實(shí)際通過(guò)普通的I/O口編程來(lái)實(shí)現這14 位的同步串行信號更方便一些。在整個(gè)初始化期間CS信號必須一直為高電平。這14位初始化字的定義見(jiàn)表2。在初始化同步串行信號輸出時(shí)最高有效位在先。在對PTR3000編程前先其狀態(tài)為接收狀態(tài)以免在其他頻率造成無(wú)線(xiàn)干擾,編程完成后就可以將狀態(tài)改為發(fā)射狀態(tài)了。 表2 PTR3000初始化控制字各位定義 Bit 參數名稱(chēng)符 號 參 數 位 數 0~1 頻段 FB 必須為了10(表示為選擇頻段915%26;#177;13MHz) 2 2~9 頻點(diǎn) CH f=902.1696+CH%26;#183;0.1536(MHz) 10~11 輸出功率 POUT 發(fā)射功率≈-8dBm+6dBm%26;#183;POUT 2 12~13 時(shí)鐘分頻輸出 Fup "00"=>Fup=fxtal "01"=>Fup=fxtal/2 "10"=>Fup=fxtal/4 "11"=>Fup=fxtal/8 2 接下來(lái)對16C550的初始化設置。由于PIC16F877自身的并行口對16C550進(jìn)行初始化編程設置各個(gè)寄存器,需要注意的只是在輸出每一個(gè)字節之前先要通過(guò)RA0~RA2輸出相應字節的地址信號。在初始化設置時(shí)將16C550的波特率設置低于76.8kbps,以保證接收的數據能夠通過(guò) PTR3000即時(shí)發(fā)送。
1.3 接收端的硬件設計
接收端裝在每個(gè)機器人小車(chē)上,由于機器人小車(chē)的控制采用DSP控制器,因而在接收端PTR3000無(wú)線(xiàn)通信模塊就采用 TMS320LF2407來(lái)控制。通過(guò)PTR3000接收的數據直接輸入DSP,由DSP進(jìn)行解碼,從而做出決策和發(fā)出控制信號。因而無(wú)線(xiàn)通信系統的接收端電路相對發(fā)送端要簡(jiǎn)單得多,只需用TMS320LF2407代替發(fā)送電路中的單片機與PTR3000模塊相連接即可。PTR3000的初始化編程也就由 2407的普通I/O口來(lái)實(shí)現,只不過(guò)在初始化編程之后依舊保持PTR3000處在接收狀態(tài)。
2 協(xié)議的設計
2.1 物理層的編碼設計
物理層的編碼設計要根據所采用的物理器件和物理信道的特性來(lái)決定。本系統采用PTR3000無(wú)線(xiàn)通信模塊在接收模塊中為了獲得0直流電平就需要在所傳輸的數據中邏輯“0”和邏輯“1”的數量相等。只有滿(mǎn)足上述條件接收部分才會(huì )獲得很高的接收正確率。長(cháng)時(shí)間空閑也會(huì )導致接收部分的0直流電平漂移,因為長(cháng)時(shí)間的空閑實(shí)際上一直發(fā)送的是邏輯“1”。 由于PTR3000的這些特性,很自然就想到采用曼徹斯特編碼(Manchester)(也稱(chēng)為數字雙向碼(Digital Biphase)或分相碼(Biphase,Split-phase)。它采用一個(gè)周期的方波表示“1”,而且它的反向波形表示“0”。由于方波的正負周期各占一半,因而信號中不存在直流分量。在異步串行通信中有一個(gè)起始位“0”,因此將停止位“1”長(cháng)度也設為一位,這樣在一個(gè)字節共10位信號中也就不存在直流分量了。只是加了曼徹 斯特編碼之后原來(lái)一個(gè)字節的數據現在要兩個(gè)字節才能傳送。 圖4 有一些數字節,不會(huì )在進(jìn)行曼徹斯特編碼之后的數據串口出現,但是在一個(gè)字節中也具有0直流分量的特性,也有很高的接收正確率。這類(lèi)數據字節如:0xF0、 0x0F、0xCC、0x33等。從碼型看來(lái)其中0xF0碼型定時(shí)性能是最好的(其碼型見(jiàn)圖5),它很容易使異步接收器達到同步并且不會(huì )發(fā)生錯誤。由于 0xF0的這種特性就可以用它做同步碼元,在空閑的時(shí)間內通信系統就通過(guò)一直發(fā)送同步碼元,使接收端保持同步,而且也可以保持接收模塊的0直流電平狀態(tài)。
2.2 糾錯編碼設計
為了在有一定外界干擾的情況下,保證主要與機器人之間的無(wú)線(xiàn)通信依然穩定可靠,必須采取一定的抗干擾措施,這可以采用糾錯編碼來(lái)實(shí)現??梢赃x擇糾錯編碼方案有(14,8)分組碼、(7,4)分組碼和循環(huán)碼,需要使用兩字節的長(cháng)度發(fā)送一字節的有效信息;(5,2)分組碼和循環(huán)碼,交錯碼、(21,8)分組碼和縮短循環(huán)碼、(21,9)BCH碼、(21,12)BCH碼,需要使用三字節的長(cháng)度發(fā)送一字節的有效信息。 系統中使用了(7,4)分組碼,并在實(shí)際中取得了較好的效果。它的構成方式如下: 假定不做任何處理的原碼格式為:

其高四位的監督碼為: A2 A1 A0 其低四位的監督碼為: B2 B1 B0 則編碼后成為兩個(gè)byte長(cháng)度: 1 X7 X6 X5 X4 A2 A1 A0 0 X3 X2 X1 X0 B2 B1 B0 其中每個(gè)字節的最高位作為標志位,用于表示高四位和低四位,高四位用“1”做標志,低四位用“0”做標志。接收端通過(guò)檢測標志進(jìn)行重組和解碼。對于譯碼基本方法有維特比譯碼和使用監督矩陣譯碼,可根據具體的編碼方案靈活選用。
2.3 幀格式設計
一般數據幀包括幀頭、機器人標識、數據、數據校驗、保留字節等內容,通常按照下面的格式排列: 幀頭機器人標識數據保留字數據校驗為了保證幀能夠準確接收,幀頭的設計至關(guān)重要。一般幀頭需要兩個(gè)或兩個(gè)以上的字節,并且應該選擇數據中出現幾率較低的數值和組合。在這個(gè)系統中可以采用一般數據中根本不會(huì )出現的數據字節如0xF0、0xCC作為數據幀頭。而其它類(lèi)型的幀(如開(kāi)球或暫停等命令幀),則可以選擇在0xF0之后加上其它的字 0x33、0xC3、0x3C、0x0F等構成。這種幀頭組合在一般的數據中是不會(huì )出現的,因而可保證幀同步不會(huì )出錯。場(chǎng)上的每個(gè)機器人通過(guò)數據幀中的機器人標識來(lái)識別屬于自己的數據,由于場(chǎng)上只有5個(gè)機器人,因而機器人標識只占用一個(gè)字節。 這套通信系統采用了PTR3000無(wú)線(xiàn)通信模塊進(jìn)行無(wú)線(xiàn)傳輸,并運用了單處機的編解碼使這套系統工作更加穩定可靠,使數據通信及時(shí)正確地傳送到場(chǎng)上的每個(gè)機器人,完全滿(mǎn)足小型組足球機器人比賽的通信速率和正確率要求。

這套小型組機器人通信系統已應用于中國科技大學(xué)的F-180 Robocup小型足球 機器人系統中。2003年7月在意大利舉行的Robocup小型機器人足球比賽中,這套通信系統在存在各種通信干擾的情況下依然表現出了較高的可靠性。 2003年8月在北京舉辦的全國機器人大賽F-180 Robocup小型組的比賽中,這套通信系統中中國科技大學(xué)一隊贏(yíng)得了亞軍。
通信相關(guān)文章:通信原理
攝像頭相關(guān)文章:攝像頭原理
評論