張睿 陳辰



摘 要:高校機器人教學已經越來越普及。為鍛煉學生實踐操作能力,提升教學效果,設計并實現了一種實用的教學機器人移動底盤系統。系統機械結構采用三輪萬向結構和無刷電機驅動方案,底盤與上位機通信接口采用WiFi協議。設計了一個完整的控制交互協議,定義不同的控制和通信幀結構,完成對機器人底盤的移動控制和信息交互,便于學生操控和開發。經過實際測試和試用,功能可以滿足機器人教學和相關科創活動需求。
關鍵詞:機器人;底盤;實踐教學; 交互協議
DOI:10. 11907/rjdk. 192655 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)008-0169-04
Abstract:Robot teaching in universities has become more and more popular. In order to train students practical operation ability and improve teaching effect, a practical teaching robot mobile chassis system is designed and realized. The mechanical structure of the system uses a three-wheel universal structure and a brushless motor drive scheme, and the communication interface between the chassis and the host computer uses the WiFi protocol. A complete control interaction protocol is designed, which defines different control and communication frame structures to complete the mobile control and information interaction of the robot chassis, and it is convenient for students to control and develop. The testing and trial prove that the function can meet the needs of robot teaching and related scientific and technological innovation activities.
Key Words: robot; chassis; experimental teaching; interactive protocol
0 引言
隨著技術的發展,機器人應用越來越廣泛,逐漸從工業走入人們的日常生活,給人們帶來了越來越多的便利。機器人技術已經成為科技發展前沿方向之一,我國許多高校[1-4]甚至中小學都開設了機器人相關課程[5-6],在各種各樣的機器人平臺上進行操控和實踐。但由于機器人教學是一個全新領域,目前還沒有形成統一的機器人實驗平臺結構和操作規范,基本上都是各自為政,由任課教師自行選擇實驗平臺。有的文獻[7-9]采用虛擬仿真環境進行實驗,沒有真實的機器人平臺,要花費大量精力學習專門的機器人仿真軟件,教學效果不佳;有些機器人是用單片機或者ARM處理器[10]控制的,需要在專用嵌入式編程開發環境下操作,實驗平臺功能簡單,接口定義復雜,往往涉及到大量軟硬件參數配置和初始化工作[11],需要學生具有專業知識和實踐技能,降低了實踐教學效率。
筆者結合多年科研和教學經驗,對科研項目中研發的機器人平臺進行梳理和改進,設計并實現了一套適合高校教學實踐的機器人移動底盤系統。該系統包括硬件底盤平臺和相應軟件模塊,可以很方便地實現全向運動。為便于操控和升級,專門設計定義了一套網絡接口交互協議,能夠實現對機器人底盤上的傳感器信息的采集和運動控制。學生不需要額外學習專門的開發軟件或仿真工具,可以選擇自己擅長的編程工具,通過socks編程方式控制機器人。經過實際教學應用及多項科創活動檢驗,驗證了系統平臺的功能和可靠性,證明其適合高校機器人課程應用。
1 系統結構設計
底盤最重要的功能是運動,目前使用的機械運動結構主要有仿生足式、履帶式和輪式等。從實現復雜度和可靠性方面考慮,輪式結構具有結構簡單、容易實現、操控方便和成本低等優點,適合于教學應用。輪式結構又分為四輪驅動[10]、雙輪差分驅動+隨動輪、三輪全向驅動等,根據實際使用效果和功能分析,筆者選定三輪全向驅動方式進行移動底盤設計。其優點是:①三輪全向結構通過分別控制3個輪子的轉速和方向,可以驅動底盤向任意方向平移和旋轉,底盤運動方向和速度調整控制算法簡單,容易實現;②全向輪受地面影響較小,前后平移距離和旋轉角度控制比較準確,運動路線不容易偏移;③全向輪結構簡單,對加工精度要求不高,相對于另一種常用的麥克納姆輪[12]成本較低。
機器人底盤采用圓形結構,3個全向輪在底盤圓周均勻分布,編號依次為0~2,則底盤運動的前方就是與2號輪指向圓心方向。機械安裝如圖2所示。驅動電機選用無刷電機,每個電機驅動一個全向輪。電機選擇GMP28-TEC2847-1280-100[13],12V供電,功率為5W,內置安裝好的驅動器和減速器。全向機器人運動控制算法可以參考文獻[14]。
為提高機器人對外界環境的感知能力,必須增加必要的傳感器用來探測周圍障礙物等信息,然后根據實際情況制定運動路線和控制策略,以提高機器人智能程度。從功能和成本等方面綜合考慮,筆者選用常用的紅外和聲納兩種探測器進行底盤設計。其中紅外探測器探測范圍是10~50cm,探測距離固定,主要用于運動中的近距離障礙物探測,及時作出避障處理。而聲納的有效距離為20~1 000cm,用于較遠距離的物體探測,可以探測物體的具體距離,用來做地圖構建和路徑規劃等用途。
筆者設計的機器人底盤共安裝了8個紅外探障傳感器和4個聲納傳感器,結構如圖3所示。紅外傳感器沿著圓周均勻分布,按照順時針編號依次為0~7,其中0為正前方,各圓心角間隔為45度。聲納傳感器編號為A~D,分別對應前、右、后、左4個方向。這些傳感器能夠滿足大部分探障需求。
2 底盤系統軟硬件設計
教學用機器人的目的主要是面向教學實踐以及科創競賽,操作者一般都是學生和科創項目開發人員,經常會更改程序和進行平臺運動測試。程序代碼均在臺式機或筆記本上進行,傳統的軟件下載到機器人底盤往往需要連接專門的調試線(如網線、串口線或者JTAG調試線等),會帶來很多不便和安全隱患。筆者在前期教學實踐中就希望能有一款無線操控的機器人底盤,學生可以通過很簡單的API接口實現對機器人的控制。根據上述需求,本文設計了一款控制系統,包括硬件電路和軟件模塊,可用于課程實踐活動。
2.1 機器人底盤硬件結構
機器人底盤選用一片FPGA芯片(Altera公司的EP4CE6),用于傳感器信號采集和電機控制,主要功能有3個:①控制紅外信號發送和接收,結果存放在一個寄存器中,每個bit對應一路紅外傳感器,1表示有障礙物,0表示無障礙物;②控制聲納發送和接收,返回結果為障礙物距離,聲納探測結果存放在一個16bit的寄存器中;③根據命令產生電機控制信號,包括方向和PWM值,同時接收電機的編碼器反饋信號,通過閉環方式調整電機速度。
主控制器選用TI公司的MSP430F5438A[15]單片機芯片,主要進行整個系統的流程控制和數據通信。主要功能有:①通過UART接口外接WiFi模塊,能夠實現與上位機的無線數據交互,接收上位機命令或者向上位機傳遞反饋參數;②通過總線接口和GPIO接口與FPGA芯片連接,可以實現對各個模塊的初始化和控制,同時接收對應的傳感器信息或進行電機驅動。
硬件電路還預留了多個ADC、串口和GPIO接口,可以根據需求擴展外接設備,提升機器人底盤功能。
2.2 機器人底盤軟件結構
底盤系統軟件采用模塊化設計,作用是接收上位機控制命令,根據命令進行傳感器信息采集或電機驅動控制,同時把反饋信息發送給上位機。目前的標準配置包括紅外避障、聲納探障和電機驅動3個基本模塊,可滿足一般教學需求。對于高水平的教學和科創活動,另外開發了家電遙控、光效控制、環境探測、自身姿態定位探測和安防控制等模塊,可以酌情增減。
機器人底盤與上位機通信采用WiFi無線網絡方式。設計了一個統一的接口控制協議,在上位機實現簡易API接口,通過界面參數設置的方式操控機器人。允許學生直接根據協議自行選擇編程工具,通過socks編程方式進行自主功能開發。
3 控制接口協議設計
操控機器人底盤系統時,上位機與底盤之間必須進行有效的命令和信息傳遞,筆者采用數據幀的格式定義控制協議。數據幀形式不受上下位機軟件系統限制,開發人員可以選擇任意編程語言和開發工具實現需要的功能。
數據幀長度統一規定為10個字節,具體定義如圖6所示。
其中:Byte0~4:共5個字節,為幀同步序列,采用 “ROBOT”單詞的ASCII碼(0x52,0x4F,0x42,0x4F,0x54)作為數據幀的頭部識別標志;Byte5:為命令字,對應不同的操作控制;Byte6-9:為命令參數,根據具體命令字而定。
Byte5命令字決定一個數據幀具體功能,定義如圖7所示。
其中:Bit7-6:幀類型指示;
00:主動控制命令,不需要應答
01:主動控制命令,需要應答
10:應答幀
Byte5-2: 命令類別,對應不同的設備類型;
Byte1-0: 00表示讀,01表示寫,10表示特殊操作。
3.1 運動控制命令解析
運動控制命令數據幀的Byte5中,命令類別定義為二進制數值0001。操作類別取值不同,后續參數定義也不同。有3種情況:
(1)操作類別=00。表示對電機的單個配置寄存器進行讀操作, Byte6參數表示讀取地址。底盤接收到讀取命令(Byte5=0x04)后進行應答反饋,反饋幀Byte5=0x84(表示對電機讀取命令的應答);Byte6=讀取地址;Byte7=讀取到的數據。
(2)操作類別=01。表示對電機的單個配置寄存器進行寫操作,命令格式為Byte5=0x05,表示電機寫入;Byte6參數為寫入地址,Byte7為寫入數據。可以具體配置每個電機的參數,分別控制電機轉速和方向。
(3)操作類別=10。表示對底盤進行整體運動控制。命令格式為Byte5=0x06;Byte6為運動方向參數,有停止、平移(前、后、左、右等8個方向)、左轉、右轉等選擇;Byte7值為0~255,表示運動速度。
上述命令中,整體運動控制命令③的使用比較簡單,可以統一控制底盤運動狀態,適合初學者對底盤進行操控。而命令②可以對每個電機的速度和方向進行設置,從而實現一些復雜的運動控制,適合于層次較高的教學應用和科創競賽活動開發。
3.2 運動傳感器命令解析
紅外避障傳感器和聲納都屬于運動相關的傳感器,數據幀Byte5中命令類別定義為二進制數值0010。為統一管理,所有傳感器的控制參數和結果都存放在一個寄存器表中,可以對其中的每個寄存器(8bits)進行讀寫操作。具體安排如表1所示。
傳感器地址編號最多有256個,現在僅定義了上述幾種,其它編號可以用于后續改進擴展。
紅外避障信息采集步驟:①先打開紅外開關,發送命令字Byte5=0x09,Byte6=紅外開關地址0,Byte7=啟動參數;②讀取紅外結果,發送命令字Byte5=0x08,Byte6=紅外探測結果地址1;③得到應答幀,Byte5=0x88,Byte6=紅外探測結果地址1,Byte7=探測結果數據。如果紅外開關一直打開,可以直接讀取探測結果。