国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的家居機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)

2018-01-22 01:48程昭勛黎煒桁馮譯萱陳紫楊張?jiān)孪?/span>
電腦與電信 2017年11期
關(guān)鍵詞:視頻流端口界面

程昭勛 黎煒桁 吳 萌 馮譯萱 陳紫楊 張?jiān)孪?/p>

(北京信息科技大學(xué)信息與通信工程學(xué)院,北京 100101)

1 引言

隨著移動(dòng)通信技術(shù)的迅猛發(fā)展,智能手機(jī)也在人們的生活中逐漸普及。與此同時(shí),人們對(duì)機(jī)器人等高科技產(chǎn)品的控制器要求也越來(lái)越高。傳統(tǒng)的機(jī)器人控制器,比如遙控器,其大小以及兼容性問(wèn)題的存在導(dǎo)致其無(wú)法滿(mǎn)足人們對(duì)機(jī)器人控制的需求。目前,Android智能手機(jī)已經(jīng)成為人們最常用的通訊工具,如果能利用Android手機(jī)解決對(duì)機(jī)器人的遠(yuǎn)程控制問(wèn)題,將大大提高機(jī)器人控制的便利性并拓展其應(yīng)用范圍[1-4]。

目前,人們主要通過(guò)與機(jī)器人配套的遙控器來(lái)控制機(jī)器人,一些國(guó)外文獻(xiàn)所設(shè)計(jì)的機(jī)器人控制軟件中增加了視頻采集與傳輸[5]、機(jī)械臂控制[5]與模式切換[6]等功能。以上研究提出的實(shí)用性很高,都有現(xiàn)實(shí)意義。在國(guó)內(nèi),移動(dòng)終端上也有一些控制機(jī)器人的APP軟件,如Robot Control、RoboSpace、黑盒機(jī)器人等。這類(lèi)機(jī)器人種類(lèi)繁多且功能強(qiáng)大。但國(guó)外軟件的一些功能與接口被刪減,數(shù)據(jù)更新不及時(shí),并且這類(lèi)APP代碼較為冗長(zhǎng),無(wú)法進(jìn)行二次開(kāi)發(fā),不便于軟件的改進(jìn)。而國(guó)內(nèi)的軟件用戶(hù)操作形式比較單一,在對(duì)機(jī)器人的操控多為手動(dòng)模式,APP中沒(méi)有提供給用戶(hù)更多的選擇?;谝陨锨闆r,本文做出了一些改進(jìn)。

本文提出了基于物聯(lián)網(wǎng)的家居搬運(yùn)機(jī)器人的全新理念并設(shè)計(jì)了基于Android的手機(jī)APP。該APP包括視頻傳輸、運(yùn)動(dòng)控制、模式切換、機(jī)械臂控制和參數(shù)設(shè)置等功能。經(jīng)過(guò)軟件測(cè)試,軟件可以實(shí)現(xiàn)對(duì)機(jī)器人進(jìn)行控制,并且擁有易于使用、能夠?qū)τ谔囟ㄐ枨筮M(jìn)行二次開(kāi)發(fā)等優(yōu)勢(shì),具有較大的應(yīng)用潛力。

2 系統(tǒng)總體設(shè)計(jì)

該Android APP由包括視頻傳輸模塊,運(yùn)動(dòng)控制模塊,模式切換模塊,機(jī)械臂控制模塊,參數(shù)設(shè)置模塊組成。如圖1所示。

圖1 功能框圖

進(jìn)入開(kāi)始界面后,先對(duì)各項(xiàng)參數(shù)進(jìn)行初始化,如視頻控制IP,視頻控制端口,并可以對(duì)機(jī)器人以及云臺(tái)的初始位置進(jìn)行設(shè)定。

而后進(jìn)入視頻采集及動(dòng)作控制界面,此界面中包含模式切換選項(xiàng),提供巡線尋跡,超聲波、紅外避障,跟隨主人功能。用戶(hù)做出指令,若需采集視頻則進(jìn)入視頻采集模塊,并對(duì)采集好的視頻進(jìn)行解析,顯示在視頻播放器中,同時(shí)用戶(hù)可以對(duì)機(jī)器人進(jìn)行動(dòng)作控制。若用戶(hù)不需采集視頻則可以直接對(duì)機(jī)器人進(jìn)行動(dòng)作控制。系統(tǒng)流程圖,如圖2所示。

使用java語(yǔ)言在eclipse編譯平臺(tái)上對(duì)Android APP進(jìn)行開(kāi)發(fā)、測(cè)試。

圖2 軟件流程圖

3 軟件設(shè)計(jì)

3.1 視頻功能

在APP對(duì)家居搬運(yùn)機(jī)器人傳輸視頻的控制模塊中,代碼分別存放在以下三個(gè)不同文件中,即MyMainFrm.java、MyVideo.java和MySurface View.java。下面針對(duì)三個(gè)不同文件進(jìn)行詳細(xì)說(shuō)明。

MyMainFrm.java是主頁(yè)面,用戶(hù)在其中設(shè)置視頻控制地址以及控制端口。

MyVideo.java文件是用來(lái)顯示視頻的,是一個(gè)可見(jiàn)的界面文件。

MySurfaceView.java文件中的代碼可以用來(lái)解析從wifi模塊傳回的視頻,是一個(gè)播放器窗口。MySurfaceView.java文件嵌入到MyVideo.java文件之中,共同完成APP中對(duì)機(jī)器人傳回視頻的播放與控制功能,并在主頁(yè)面MyMainFrm.java中顯示。

具體地,在MyMainFrm.java中用變量videoUrl,control-Url和port獲取wifi機(jī)器人的控制界面中用戶(hù)在文本框中輸入的視頻地址,控制地址以及端口。并利用insert將剛剛獲取的數(shù)據(jù)作為新定義的intent的參數(shù)。wifi智能機(jī)器人中運(yùn)行著一個(gè)視頻推流服務(wù)器mjpg-streamer,當(dāng)點(diǎn)擊開(kāi)始按鈕,在MyVideo.java中啟動(dòng)了線程,執(zhí)行HTTPURL.connection請(qǐng)求指令,wifi模塊就會(huì)開(kāi)始采集usb攝像頭采集到的視頻,并通過(guò)HTTP端口號(hào)為8080反饋回Android控制端。

視頻的解碼部分,用read記錄傳回視頻流的長(zhǎng)度并按位解碼。首先找到視頻流,返回的視頻流的開(kāi)頭為Content-Length,用它作為判定條件按位解析找到視頻流。視頻格式為mjpeg,此格式一幀以0xFF 0xD8開(kāi)頭,以0xFF 0xD9結(jié)尾,程序找到視頻的包頭和包尾并將之間的數(shù)據(jù)轉(zhuǎn)換成JPEG格式,也就是一幀的圖像。通過(guò)線程的循環(huán)不斷地獲取就能成為視頻流。

接著decodestream函數(shù)進(jìn)行解碼產(chǎn)生bitmap bmp一幀的數(shù)據(jù)。最后進(jìn)行顯示,用函數(shù)調(diào)整長(zhǎng)寬高,將一幀的數(shù)據(jù)放進(jìn)canvas畫(huà)布上并用unlockCanvasAndPost解鎖畫(huà)布并顯示出來(lái)[7]。

最終,不停地通過(guò)while循環(huán)獲取視頻流,一幀一幀的視頻流疊加在一起,對(duì)于人眼來(lái)說(shuō)就是一個(gè)完整的視頻。

3.2 運(yùn)動(dòng)控制功能

機(jī)器人的運(yùn)動(dòng)控制功能部分主要在MyVideo.java文件中。在這之前,先從MyMainFrm.java中獲取到機(jī)器人的控制端口與IP地址,通過(guò)button_go的按鈕跳轉(zhuǎn)到MyVideo.java文件,通過(guò)文件中的代碼對(duì)機(jī)器人進(jìn)行前、后、左、右、停的運(yùn)動(dòng)控制。初始化中,在初始化定義的全局變量socket中設(shè)置機(jī)器人的IP和wifi這兩個(gè)端口,將此變量作為命令傳輸?shù)妮d體。接著利用MyVideo.java文件中定義的socketwriter輸出流函數(shù)發(fā)出指令。最后,利用OnClickListener函數(shù)進(jìn)行單擊監(jiān)聽(tīng),即在APP中按下按鈕后轉(zhuǎn)到相應(yīng)代碼進(jìn)行響應(yīng)。

下面以前進(jìn)為例:當(dāng)用戶(hù)按下前進(jìn)按鈕,socketWriter向機(jī)器人發(fā)出標(biāo)準(zhǔn)通信協(xié)議,用控制命令(byte)0xff,(byte)0x00,(by te)0x01,(byte)0x00,(byte)0xff}使機(jī)器人前進(jìn),執(zhí)行完畢后用 socketWriter.flush()函數(shù)清除緩存[9,10]。

考慮到通信可能存在異常情況無(wú)法正常使用,使用try和catch語(yǔ)句捕獲并處理異常[8]。

3.3 模式切換功能

機(jī)器人內(nèi)置了“巡線遁跡”、“超聲波避障”、“紅外避障”、“跟隨主人”、“手動(dòng)模式”等功能的切換菜單,其中“巡線遁跡”、“超聲波避障”、“紅外避障”、“跟隨主人”模式為自動(dòng)模式,用戶(hù)在APP端發(fā)送指令后機(jī)器人端利用AR9331WIFI模塊接收指令,并調(diào)用各個(gè)傳感器與舵機(jī)聯(lián)動(dòng)執(zhí)行。手動(dòng)模式則可以切換至用戶(hù)自行控制。

針對(duì)可能遇見(jiàn)的較為復(fù)雜的環(huán)境,在設(shè)計(jì)此功能時(shí),將其設(shè)計(jì)為手動(dòng)模式優(yōu)先級(jí)最高,因此在自動(dòng)模式下,用戶(hù)無(wú)需等待機(jī)器人的所有動(dòng)作全部完成,即可切換至手動(dòng)模式。提高了機(jī)器人控制時(shí)的穩(wěn)定性,也可避免用戶(hù)在對(duì)機(jī)器人添加更多傳感器,對(duì)各個(gè)自動(dòng)功能進(jìn)行二次開(kāi)發(fā)時(shí)測(cè)試造成的麻煩。

3.4 機(jī)械臂控制功能

機(jī)械臂控制功能與運(yùn)動(dòng)控制功能類(lèi)似,wifi機(jī)器人中運(yùn)行著ComToNet程序,它的目的在于把網(wǎng)口傳過(guò)來(lái)的數(shù)據(jù)發(fā)送給串口。由于程序默認(rèn)開(kāi)放的端口為2001,故控制端默認(rèn)端口也為2001。

與運(yùn)動(dòng)控制相同,利用socket作為載體,用socketwrite來(lái)發(fā)送數(shù)據(jù)。而與運(yùn)動(dòng)控制不同的就是傳輸協(xié)議,如表1所示。

表1 傳輸協(xié)議代碼

3.5 參數(shù)設(shè)置功能

對(duì)于視頻傳輸?shù)年P(guān)鍵參數(shù)、視頻地址、控制地址以及端口的設(shè)置部分,利用EditText窗口,由用戶(hù)自行輸入,而其他常量在constant.java中設(shè)置。

對(duì)于數(shù)據(jù)的輸入利用圖形化控件進(jìn)行控制,如按鈕和滾動(dòng)條等。而為了使其與軟件進(jìn)行關(guān)聯(lián),利用監(jiān)聽(tīng)函數(shù),使程序在用戶(hù)改變了控件參數(shù)后機(jī)器人能夠響應(yīng)[11]。

4 軟件測(cè)試

根據(jù)wifi智能機(jī)器人小車(chē)系統(tǒng)總體設(shè)計(jì)方案,利用Android平臺(tái)具體實(shí)現(xiàn)了各個(gè)模塊的功能。

4.1 主界面測(cè)試

進(jìn)入APP后可以成功進(jìn)入主界面,各控件能夠正常顯示,如圖3所示,并有軟件更新提示。

圖3 APP主頁(yè)面

4.2 視頻采集顯示以及動(dòng)作控制測(cè)試

進(jìn)入主頁(yè)面后點(diǎn)擊開(kāi)始按鈕,順利進(jìn)入視頻采集顯示以及動(dòng)作控制界面,并能夠使用搖桿對(duì)機(jī)器人的運(yùn)動(dòng)進(jìn)行控制,360度有效,并能夠同時(shí)使用圖形化控件對(duì)機(jī)器人機(jī)械臂進(jìn)行控制,如圖4所示。

圖4 視頻采集及運(yùn)動(dòng)控制界面

4.3 模式切換界面測(cè)試

在視頻采集界面中進(jìn)行模式切換,即可對(duì)機(jī)器人的控制模式進(jìn)行切換,巡線尋跡功能,超聲波、紅外避障功能,跟隨主人功能以及手動(dòng)控制功能均可實(shí)現(xiàn),且精度較高,如圖5所示。

圖5 模式切換界面

4.4 參數(shù)設(shè)置測(cè)試

進(jìn)入主界面后,點(diǎn)擊設(shè)置按鈕可對(duì)機(jī)器人的初始參數(shù)進(jìn)行設(shè)置,如關(guān)鍵參數(shù)視頻控制IP,視頻控制端口,并可以對(duì)機(jī)器人初始位置以及云臺(tái)坐標(biāo)進(jìn)行設(shè)定,如圖6所示。

圖6 初值設(shè)置界面

5 總結(jié)

本文實(shí)現(xiàn)了基于Android開(kāi)發(fā)的應(yīng)用程序,整個(gè)系統(tǒng)專(zhuān)門(mén)用于對(duì)物聯(lián)網(wǎng)的家居搬運(yùn)機(jī)器人進(jìn)行控制。該家居搬運(yùn)機(jī)器人通過(guò)單片機(jī)連接各個(gè)模塊,結(jié)合物聯(lián)網(wǎng)及手機(jī)APP對(duì)其進(jìn)行控制。最終達(dá)到了預(yù)期設(shè)定的目標(biāo)。經(jīng)過(guò)軟件測(cè)試,該APP可以對(duì)機(jī)器人進(jìn)行控制,且易于使用,能夠?qū)τ谔囟ㄐ枨筮M(jìn)行二次開(kāi)發(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控制平臺(tái)的家居機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)[J].信息通信,2015(10):64-65.

[9]劉鳳臣,姚赟峰,劉黎明,等.高速搬運(yùn)機(jī)器人產(chǎn)業(yè)應(yīng)用及發(fā)展[J].輕工機(jī)械,2012(02):108-112.

[10]湯莉莉,王金勇,黃偉.物聯(lián)網(wǎng)智能機(jī)器人設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2017(08):73-76.

猜你喜歡
視頻流端口界面
邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
一種端口故障的解決方案
基于視頻流傳輸中的擁塞控制研究
國(guó)企黨委前置研究的“四個(gè)界面”
交換機(jī)生成樹(shù)安全
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
端口阻塞與優(yōu)先級(jí)
鐵路貨場(chǎng)智能大門(mén)集裝箱全景圖像采集方法研究
電子顯微打開(kāi)材料界面世界之門(mén)
美國(guó)視頻流市場(chǎng)首現(xiàn)飽和征兆