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