馬瓊雄 邱育波 文宗明
1.華南理工大學(xué)廣州學(xué)院工程研究院機(jī)器人應(yīng)用研究所,廣東省廣州市 510800
2.華南理工大學(xué)廣州學(xué)院機(jī)械工程學(xué)院,廣東省廣州市 510800
Android系統(tǒng)是目前移動(dòng)設(shè)備市場占有率最高的操作系統(tǒng),由于其為開源系統(tǒng),所以各大移動(dòng)設(shè)備廠商都對它情有獨(dú)鐘。
文中所述移動(dòng)機(jī)器人開發(fā)方案,采用WIFI通訊方式,使用現(xiàn)有的Android設(shè)備作為主控處理器,運(yùn)用Socket協(xié)議、HTTP協(xié)議對信號(hào)進(jìn)行處理,不需計(jì)算機(jī)即可現(xiàn)實(shí)通訊,降低移動(dòng)機(jī)器人的復(fù)雜度和成本,操作簡單,實(shí)用性高。
文章第二部分介紹系統(tǒng)整體結(jié)構(gòu);第三部分是對系統(tǒng)各部分進(jìn)行詳細(xì)介紹;第四部分展示利用系統(tǒng)進(jìn)行實(shí)驗(yàn)的效果;最后是總結(jié)。
本系統(tǒng)由Android客戶端及機(jī)器人兩大部分組成,兩者間以WIFI信號(hào)的形式進(jìn)行通信。整體結(jié)構(gòu)如圖1整體結(jié)構(gòu)圖所示,硬件部分主要由機(jī)器人本體、WIFI模塊、單片機(jī)系統(tǒng)、電源模塊組成。軟件部分包含程序的編寫通訊模塊及界面設(shè)計(jì),本系統(tǒng)文所提出的方案適用于任何一款使用Android系統(tǒng)且?guī)IFI收發(fā)功能的移動(dòng)設(shè)備。
圖1 整體結(jié)構(gòu)圖
Android客戶端主要使用Java語言作為編程語言,通過Socket協(xié)議和Http協(xié)議實(shí)現(xiàn)與機(jī)器人的通訊,其中分為兩大部分,一是視頻采集部分,二是機(jī)器人控制部分,其中視頻部分采用的是Http協(xié)議,而控制部分采用的則是Socket協(xié)議,將兩部分開實(shí)現(xiàn),避免了數(shù)據(jù)交換時(shí)產(chǎn)生互相干涉的情況,有利于數(shù)據(jù)的處理和功能的實(shí)現(xiàn)。
圖2為客戶端使用界面,左邊是控制區(qū)域,右邊是視頻區(qū)域。
圖2 客戶端使用界面
2.1.1 視頻區(qū)域
視頻區(qū)域主要使用的是HTTP協(xié)議,連接作為服務(wù)器端的WIFI模塊,獲取所掛載攝像頭的數(shù)據(jù)流并轉(zhuǎn)換成圖片,然后建立一個(gè)線程在SurfaceView中頻繁刷新,形成視頻流。
圖3 視頻區(qū)域程序流程圖
2.1.2 控制區(qū)域
圖4為控制區(qū)域所實(shí)現(xiàn)的程序流程圖,控制部分主要使用是的Socket協(xié)議通信,通過與WIFI模塊進(jìn)行連接,連接之后根據(jù)相應(yīng)的按鈕發(fā)送不同的控制指令。
本系統(tǒng)采用80C51單片機(jī)作為下位機(jī),其主要作用是負(fù)責(zé)控制機(jī)器人的移動(dòng),即控制驅(qū)動(dòng)橋。
圖4 控制區(qū)域程序流程圖
因?yàn)閱巫址麛?shù)據(jù)位太少,很容易受到外圍信號(hào)的干擾,因此我們自定義了通訊協(xié)議,格式如下:
包頭標(biāo)志位+字節(jié)控制指令+包尾標(biāo)志位
采用以上自定義的數(shù)據(jù)包形式,可以很好地解決數(shù)據(jù)的干擾問題。
圖6 實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)圖
本項(xiàng)目的移動(dòng)機(jī)器人主要組成結(jié)構(gòu)為:WIFI模塊:703N 無線路由;下位機(jī):STC89C52單片機(jī)最小系統(tǒng);驅(qū)動(dòng)模塊:L298N電機(jī)驅(qū)動(dòng)板1塊,可以同時(shí)驅(qū)動(dòng)兩個(gè)電機(jī);通信方式:無線WIFI通信、TTL電平通信;底盤:履帶式移動(dòng),自帶2個(gè)電機(jī)(7.2V,傳動(dòng)比86.8:1,1km/hr);電源:1個(gè)5V蓄電池,1個(gè)12V 3s 鋰電池。
圖6為實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)圖。
WIFI模塊系統(tǒng)采用改造后的路由作為WIFI模塊。它可將從客戶端接受到的控制指令完整地轉(zhuǎn)發(fā)給下位機(jī),進(jìn)而通過下位機(jī)控制機(jī)器人的移動(dòng)。
圖7為改造后的WIFI模塊。
圖7 WIFI模塊
機(jī)器人實(shí)際運(yùn)行效果如圖8。
圖中可見圖像反饋清晰;實(shí)際操作中,機(jī)器人響應(yīng)速度快,圖像傳輸流暢。
圖8 運(yùn)行效果圖
綜上所述,本機(jī)器人使用現(xiàn)有的Android設(shè)備作為主控處理器,降低移動(dòng)機(jī)器人的復(fù)雜度和成本。通過Socket協(xié)議和Http協(xié)議實(shí)現(xiàn)Android設(shè)與機(jī)器人之間的通信;下位機(jī)控制和視頻流傳輸兩部分開實(shí)現(xiàn),避免了數(shù)據(jù)交換時(shí)產(chǎn)生相互干擾的情況,有利于數(shù)據(jù)的處理和功能的實(shí)現(xiàn)。使用數(shù)據(jù)包傳輸?shù)姆绞酱蟠蠼档土送鈬盘?hào)的干擾,使機(jī)器人運(yùn)行更加穩(wěn)定。
[1](美)塞若,Head First Java[M].中國電力出版社,2007
[2]Mark L Murphy. Beginning Android 2[M].人民郵電出版社,2008
[3]David Gourley. HTTP The Definitive Guide[M] O'Reilly Media出版社,2002
[4](美)卡爾弗特,(美)多納霍. Java TCP/IP Socket編程[M].機(jī)械工業(yè)出版社,2009