程昭勛 黎煒桁 吳 萌 馮譯萱 陳紫楊 張月霞
(北京信息科技大學(xué)信息與通信工程學(xué)院,北京 100101)
隨著移動通信技術(shù)的迅猛發(fā)展,智能手機也在人們的生活中逐漸普及。與此同時,人們對機器人等高科技產(chǎn)品的控制器要求也越來越高。傳統(tǒng)的機器人控制器,比如遙控器,其大小以及兼容性問題的存在導(dǎo)致其無法滿足人們對機器人控制的需求。目前,Android智能手機已經(jīng)成為人們最常用的通訊工具,如果能利用Android手機解決對機器人的遠程控制問題,將大大提高機器人控制的便利性并拓展其應(yīng)用范圍[1-4]。
目前,人們主要通過與機器人配套的遙控器來控制機器人,一些國外文獻所設(shè)計的機器人控制軟件中增加了視頻采集與傳輸[5]、機械臂控制[5]與模式切換[6]等功能。以上研究提出的實用性很高,都有現(xiàn)實意義。在國內(nèi),移動終端上也有一些控制機器人的APP軟件,如Robot Control、RoboSpace、黑盒機器人等。這類機器人種類繁多且功能強大。但國外軟件的一些功能與接口被刪減,數(shù)據(jù)更新不及時,并且這類APP代碼較為冗長,無法進行二次開發(fā),不便于軟件的改進。而國內(nèi)的軟件用戶操作形式比較單一,在對機器人的操控多為手動模式,APP中沒有提供給用戶更多的選擇。基于以上情況,本文做出了一些改進。
本文提出了基于物聯(lián)網(wǎng)的家居搬運機器人的全新理念并設(shè)計了基于Android的手機APP。該APP包括視頻傳輸、運動控制、模式切換、機械臂控制和參數(shù)設(shè)置等功能。經(jīng)過軟件測試,軟件可以實現(xiàn)對機器人進行控制,并且擁有易于使用、能夠?qū)τ谔囟ㄐ枨筮M行二次開發(fā)等優(yōu)勢,具有較大的應(yīng)用潛力。
該Android APP由包括視頻傳輸模塊,運動控制模塊,模式切換模塊,機械臂控制模塊,參數(shù)設(shè)置模塊組成。如圖1所示。
圖1 功能框圖
進入開始界面后,先對各項參數(shù)進行初始化,如視頻控制IP,視頻控制端口,并可以對機器人以及云臺的初始位置進行設(shè)定。
而后進入視頻采集及動作控制界面,此界面中包含模式切換選項,提供巡線尋跡,超聲波、紅外避障,跟隨主人功能。用戶做出指令,若需采集視頻則進入視頻采集模塊,并對采集好的視頻進行解析,顯示在視頻播放器中,同時用戶可以對機器人進行動作控制。若用戶不需采集視頻則可以直接對機器人進行動作控制。系統(tǒng)流程圖,如圖2所示。
使用java語言在eclipse編譯平臺上對Android APP進行開發(fā)、測試。
圖2 軟件流程圖
在APP對家居搬運機器人傳輸視頻的控制模塊中,代碼分別存放在以下三個不同文件中,即MyMainFrm.java、MyVideo.java和MySurface View.java。下面針對三個不同文件進行詳細說明。
MyMainFrm.java是主頁面,用戶在其中設(shè)置視頻控制地址以及控制端口。
MyVideo.java文件是用來顯示視頻的,是一個可見的界面文件。
MySurfaceView.java文件中的代碼可以用來解析從wifi模塊傳回的視頻,是一個播放器窗口。MySurfaceView.java文件嵌入到MyVideo.java文件之中,共同完成APP中對機器人傳回視頻的播放與控制功能,并在主頁面MyMainFrm.java中顯示。
具體地,在MyMainFrm.java中用變量videoUrl,control-Url和port獲取wifi機器人的控制界面中用戶在文本框中輸入的視頻地址,控制地址以及端口。并利用insert將剛剛獲取的數(shù)據(jù)作為新定義的intent的參數(shù)。wifi智能機器人中運行著一個視頻推流服務(wù)器mjpg-streamer,當(dāng)點擊開始按鈕,在MyVideo.java中啟動了線程,執(zhí)行HTTPURL.connection請求指令,wifi模塊就會開始采集usb攝像頭采集到的視頻,并通過HTTP端口號為8080反饋回Android控制端。
視頻的解碼部分,用read記錄傳回視頻流的長度并按位解碼。首先找到視頻流,返回的視頻流的開頭為Content-Length,用它作為判定條件按位解析找到視頻流。視頻格式為mjpeg,此格式一幀以0xFF 0xD8開頭,以0xFF 0xD9結(jié)尾,程序找到視頻的包頭和包尾并將之間的數(shù)據(jù)轉(zhuǎn)換成JPEG格式,也就是一幀的圖像。通過線程的循環(huán)不斷地獲取就能成為視頻流。
接著decodestream函數(shù)進行解碼產(chǎn)生bitmap bmp一幀的數(shù)據(jù)。最后進行顯示,用函數(shù)調(diào)整長寬高,將一幀的數(shù)據(jù)放進canvas畫布上并用unlockCanvasAndPost解鎖畫布并顯示出來[7]。
最終,不停地通過while循環(huán)獲取視頻流,一幀一幀的視頻流疊加在一起,對于人眼來說就是一個完整的視頻。
機器人的運動控制功能部分主要在MyVideo.java文件中。在這之前,先從MyMainFrm.java中獲取到機器人的控制端口與IP地址,通過button_go的按鈕跳轉(zhuǎn)到MyVideo.java文件,通過文件中的代碼對機器人進行前、后、左、右、停的運動控制。初始化中,在初始化定義的全局變量socket中設(shè)置機器人的IP和wifi這兩個端口,將此變量作為命令傳輸?shù)妮d體。接著利用MyVideo.java文件中定義的socketwriter輸出流函數(shù)發(fā)出指令。最后,利用OnClickListener函數(shù)進行單擊監(jiān)聽,即在APP中按下按鈕后轉(zhuǎn)到相應(yīng)代碼進行響應(yīng)。
下面以前進為例:當(dāng)用戶按下前進按鈕,socketWriter向機器人發(fā)出標準通信協(xié)議,用控制命令(byte)0xff,(byte)0x00,(by te)0x01,(byte)0x00,(byte)0xff}使機器人前進,執(zhí)行完畢后用 socketWriter.flush()函數(shù)清除緩存[9,10]。
考慮到通信可能存在異常情況無法正常使用,使用try和catch語句捕獲并處理異常[8]。
機器人內(nèi)置了“巡線遁跡”、“超聲波避障”、“紅外避障”、“跟隨主人”、“手動模式”等功能的切換菜單,其中“巡線遁跡”、“超聲波避障”、“紅外避障”、“跟隨主人”模式為自動模式,用戶在APP端發(fā)送指令后機器人端利用AR9331WIFI模塊接收指令,并調(diào)用各個傳感器與舵機聯(lián)動執(zhí)行。手動模式則可以切換至用戶自行控制。
針對可能遇見的較為復(fù)雜的環(huán)境,在設(shè)計此功能時,將其設(shè)計為手動模式優(yōu)先級最高,因此在自動模式下,用戶無需等待機器人的所有動作全部完成,即可切換至手動模式。提高了機器人控制時的穩(wěn)定性,也可避免用戶在對機器人添加更多傳感器,對各個自動功能進行二次開發(fā)時測試造成的麻煩。
機械臂控制功能與運動控制功能類似,wifi機器人中運行著ComToNet程序,它的目的在于把網(wǎng)口傳過來的數(shù)據(jù)發(fā)送給串口。由于程序默認開放的端口為2001,故控制端默認端口也為2001。
與運動控制相同,利用socket作為載體,用socketwrite來發(fā)送數(shù)據(jù)。而與運動控制不同的就是傳輸協(xié)議,如表1所示。
表1 傳輸協(xié)議代碼
對于視頻傳輸?shù)年P(guān)鍵參數(shù)、視頻地址、控制地址以及端口的設(shè)置部分,利用EditText窗口,由用戶自行輸入,而其他常量在constant.java中設(shè)置。
對于數(shù)據(jù)的輸入利用圖形化控件進行控制,如按鈕和滾動條等。而為了使其與軟件進行關(guān)聯(lián),利用監(jiān)聽函數(shù),使程序在用戶改變了控件參數(shù)后機器人能夠響應(yīng)[11]。
根據(jù)wifi智能機器人小車系統(tǒng)總體設(shè)計方案,利用Android平臺具體實現(xiàn)了各個模塊的功能。
進入APP后可以成功進入主界面,各控件能夠正常顯示,如圖3所示,并有軟件更新提示。
圖3 APP主頁面
進入主頁面后點擊開始按鈕,順利進入視頻采集顯示以及動作控制界面,并能夠使用搖桿對機器人的運動進行控制,360度有效,并能夠同時使用圖形化控件對機器人機械臂進行控制,如圖4所示。
圖4 視頻采集及運動控制界面
在視頻采集界面中進行模式切換,即可對機器人的控制模式進行切換,巡線尋跡功能,超聲波、紅外避障功能,跟隨主人功能以及手動控制功能均可實現(xiàn),且精度較高,如圖5所示。
圖5 模式切換界面
進入主界面后,點擊設(shè)置按鈕可對機器人的初始參數(shù)進行設(shè)置,如關(guān)鍵參數(shù)視頻控制IP,視頻控制端口,并可以對機器人初始位置以及云臺坐標進行設(shè)定,如圖6所示。
圖6 初值設(shè)置界面
本文實現(xiàn)了基于Android開發(fā)的應(yīng)用程序,整個系統(tǒng)專門用于對物聯(lián)網(wǎng)的家居搬運機器人進行控制。該家居搬運機器人通過單片機連接各個模塊,結(jié)合物聯(lián)網(wǎng)及手機APP對其進行控制。最終達到了預(yù)期設(shè)定的目標。經(jīng)過軟件測試,該APP可以對機器人進行控制,且易于使用,能夠?qū)τ谔囟ㄐ枨筮M行二次開發(fā),具有較大的應(yīng)用潛力。
[1]Fiawoo S Y,Sowah R A.Design and development of an Android application to process and display summarised corporate data[C]// IEEE,International Conference on Adaptive Science & Technology. IEEE,2012:86-91.
[2] Slavin R,Wang X,Hosseini M B,et al.Toward a framework for detecting privacy policy violations in android application code[J]. British Journal of Educational Technology,2016(03):25-36.
[3] Aligombe A,Ahmed I,Richard Iii G G,et al.AspectDroid:Android App Analysis System[J].Hepatology,2016(04):145-147.
[4] Moran K,Linaresvasquez M,Bernalcardenas C,et al.Automatically Discovering,Reporting and Reproducing Android Application Crashes[C]// IEEE.
[5] International Conference on Software Testing,Verification and Validation.IEEE,2016:33-44.
[6] Oster J,Behar J,Colloca R,et al.Open source Java-based ECG analysis software and Android app for Atrial Fibrillation screening[C]//IEEE International Conference on Software Testing,Verification and Validation.IEEE,2014(12):731-734.
[7] Roy S,Deloach J,Li Y,et al. Experimental Study with Realworld Data for Android App Security Analysis using Machine Learning[C]//Computer Security Applications Conference.2015:81-90.
[8]鄧知輝.基于A n d r o i d控制平臺的家居機器人設(shè)計與實現(xiàn)[J].信息通信,2015(10):64-65.
[9]劉鳳臣,姚赟峰,劉黎明,等.高速搬運機器人產(chǎn)業(yè)應(yīng)用及發(fā)展[J].輕工機械,2012(02):108-112.
[10]湯莉莉,王金勇,黃偉.物聯(lián)網(wǎng)智能機器人設(shè)計[J].現(xiàn)代電子技術(shù),2017(08):73-76.