劉博,楊斌
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,成都610031)
遠(yuǎn)程可視化遙控偵察定位機(jī)器人系統(tǒng)設(shè)計
劉博,楊斌
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,成都610031)
遠(yuǎn)程可視化遙控偵察定位機(jī)器人系統(tǒng)共由兩部分構(gòu)成。第一部分為機(jī)器人,與PC遠(yuǎn)程控制終端建立網(wǎng)絡(luò)連接,獲取控制命令,解析命令后控制機(jī)器人的運(yùn)動電機(jī)、轉(zhuǎn)向舵機(jī)和立體視頻云臺。機(jī)器人將自己的GPS位置信息和環(huán)境圖像傳輸?shù)絇C控制終端。第二部分為PC遠(yuǎn)程控制終端,獲取北通遙控手柄的命令數(shù)據(jù)并打包后,通過網(wǎng)絡(luò)傳輸給機(jī)器人,實(shí)現(xiàn)機(jī)器人運(yùn)動狀態(tài)控制。PC遠(yuǎn)程控制終端通過網(wǎng)絡(luò)獲取機(jī)器人的GPS位置數(shù)據(jù)和視頻數(shù)據(jù),將數(shù)據(jù)解析后分別顯示到圖像監(jiān)控窗口和地圖定位窗口。
遙控機(jī)器人;PandaBoard;圖像壓縮;GPS定位
科學(xué)技術(shù)的飛速發(fā)展推動了機(jī)器人技術(shù)的不斷發(fā)展和廣泛應(yīng)用。在現(xiàn)代社會生活中復(fù)雜的應(yīng)用需求越來越多,如軍事偵查、高危環(huán)境巡邏、特殊環(huán)境拍攝等。遠(yuǎn)程遙控偵察定位機(jī)器人系統(tǒng)可以勝任特殊環(huán)境中的特殊需求。本系統(tǒng)以PandaBoard開發(fā)板作為機(jī)器人的控制核心,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)通信、機(jī)器人姿態(tài)控制、機(jī)器人位置信息處理。遠(yuǎn)程遙控終端由PC機(jī)和北通阿修羅遙控手柄構(gòu)成,PC機(jī)獲取遙控手柄的遙控數(shù)據(jù)并打包,通過網(wǎng)絡(luò)發(fā)送給機(jī)器人,并且獲取視頻圖像數(shù)據(jù)和機(jī)器人地理位置信息,實(shí)現(xiàn)機(jī)器人的控制、視頻監(jiān)控和地理位置監(jiān)視。
系統(tǒng)硬件部分主要由PandaBoard開發(fā)板、GPS定位開發(fā)板、立體視頻監(jiān)控云臺、PC機(jī)構(gòu)成。
1.1 機(jī)器人整體結(jié)構(gòu)
機(jī)器人整體由機(jī)器人車體、攝像頭云臺、電源控制板、電機(jī)驅(qū)動控制板、PandaBoard核心控制板5部分組成。機(jī)器人車體為飛思卡爾智能車競賽指定車模。攝像頭云臺有兩組MG946R舵機(jī)構(gòu)成,可以實(shí)現(xiàn)上下左右四維角度調(diào)節(jié)。攝像頭為奧尼ANC網(wǎng)絡(luò)攝像頭,可以采集YUV和RGB格式的圖像數(shù)據(jù)。電源模塊主要完成將8 V電池電壓降為5 V和6 V電壓,分別供給PandaBoard開發(fā)板和MG946R舵機(jī)。電機(jī)驅(qū)動模塊用BTS7960電機(jī)驅(qū)動芯片設(shè)計。機(jī)器人整體結(jié)構(gòu)如圖1所示。
1.2 PandaBoard開發(fā)板
PandaBoard開發(fā)板是TI公司的SoC開發(fā)板,其內(nèi)部主要包括4個處理引擎,包括基于ARMv7I指令集的SMP Cortex-A9 1 GHz雙核處理器、可編程多媒體硬件加速引擎IVA-HD及協(xié)處理器 Cortex-M3、圖像顯卡 Power SGX540及提供圖像視頻并行計算的ISP。其中IVA-HD多媒體加速引擎內(nèi)部有7個針對各種視頻編解碼而設(shè)計的加速引擎,能夠?qū)崿F(xiàn)對720P視頻的實(shí)時編解碼,并且擁有1 GB的RAM,可以流暢運(yùn)行Ubuntu開源操作系統(tǒng)。PandaBoard開發(fā)板如圖2所示。
圖2 PandaBoard開發(fā)板
1.3 北通神鷹阿修羅遙控手柄
北通神鷹阿修羅遙控手柄用來控制機(jī)器人的運(yùn)動狀態(tài),可以前進(jìn)、后退、加速、減速,還可控制攝像頭云臺的角度控制,如搖擺頭、點(diǎn)頭、抬頭。北通神鷹阿修羅遙控手柄如圖3所示。
圖3 北通神鷹阿修羅遙控手柄
1.4 系統(tǒng)硬件架構(gòu)圖
系統(tǒng)硬件架構(gòu)圖如圖4所示,游戲手柄通過USB接口同PC連接,PC通過無線熱點(diǎn)與遙控機(jī)器人建立通信連接。PC機(jī)將游戲手柄的數(shù)據(jù)打包后通過網(wǎng)絡(luò)發(fā)送給移動機(jī)器人,這樣就可以控制機(jī)器人的運(yùn)動行為。機(jī)器人獲取的GPS地圖數(shù)據(jù)和攝像頭數(shù)據(jù)打包壓縮后通過無線網(wǎng)絡(luò)傳送到PC控制終端,這樣PC就可以獲得機(jī)器人當(dāng)前環(huán)境狀況和地理位置信息。
圖4 系統(tǒng)硬件架構(gòu)圖
系統(tǒng)軟件設(shè)計包括PC控制服務(wù)程序和PandaBoard開發(fā)板應(yīng)用程序。PC控制服務(wù)程序包括視頻數(shù)據(jù)處理軟件設(shè)計、GPS地理位置信息處理軟件設(shè)計和遙控移動手柄軟件設(shè)計。PandaBoard開發(fā)板應(yīng)用程序,包括視頻服務(wù)軟件設(shè)計、機(jī)器人運(yùn)動狀態(tài)控制軟件設(shè)計和GPS地理位置信息服務(wù)軟件設(shè)計。系統(tǒng)軟件架構(gòu)如圖5所示。
圖5 系統(tǒng)軟件架構(gòu)
PC視頻數(shù)據(jù)處理軟件將實(shí)時接收機(jī)器人通過網(wǎng)絡(luò)傳輸過來的mjpeg視頻數(shù)據(jù),通過ffmpeg解壓縮成為位圖后繪制到屏幕上。GPS地理位置信息處理軟件將實(shí)時接收機(jī)器人的GPS數(shù)據(jù),解析之后在開源網(wǎng)絡(luò)地圖中進(jìn)行標(biāo)定。遙控移動手柄軟件主要負(fù)責(zé)接收北通神鷹手柄的命令信息,并且將機(jī)器人控制命令和攝像頭云臺控制命令通過網(wǎng)絡(luò)傳輸?shù)綑C(jī)器人并控制機(jī)器人。
機(jī)器人核心控制板搭載Ubuntu系統(tǒng)。視頻服務(wù)軟件采集USB攝像頭YUV422數(shù)據(jù),壓縮成mjpeg通過無線網(wǎng)絡(luò)傳輸?shù)絇C控制終端。機(jī)器人運(yùn)動狀態(tài)控制通過Panda-Board開發(fā)板中的5路PWM端口分別控制機(jī)器人的前進(jìn)、后退、方向舵機(jī)控制、攝像頭云臺的左右搖頭控制和攝像頭云臺的點(diǎn)頭抬頭控制。GPS地理位置信息服務(wù)通過串口獲取GPS地理位置信息,分析打包后傳輸?shù)絇C控制終端。
2.1 PC控制終端軟件設(shè)計
2.1.1 北通神鷹手柄按鍵處理
對于遙控手柄數(shù)據(jù)采集處理,在Linux下的編程框架為JoyStick。JoyStick可以直接采集北通手柄事件,將手柄的事件值賦予特定的命令含義后就可以控制機(jī)器人的運(yùn)動狀態(tài)。將北通手柄接入PC后,在Linux系統(tǒng)下就成生了/dev/input/js0設(shè)備,js0就是遙控手柄設(shè)備,為了操作js設(shè)備,編寫設(shè)計了tagJoyStickEvent結(jié)構(gòu)體,這個結(jié)構(gòu)體中擁有手柄按鍵發(fā)生時間、鍵值、按鍵類型、按鍵號碼4個成員結(jié)構(gòu),如下所示:
typedef struct tagJoyStickEvent{
unsigned int time; /*發(fā)生時間毫秒級*/
short value; /*鍵值*/
unsigned char type; /*鍵值類型*/
unsigned char number; /*鍵位Num*/
tagJoyStickEvent&operator=(const tagJoyStickEvent& JseTemp){
this->time=JseTemp.time;
this->value=JseTemp.value;
this->type=JseTemp.type;
this->number=JseTemp.number;
return*this;
}
}stJoyStickEvent;
北通神鷹手柄按鍵類型一共有兩種,Type=1和Type =2,共14個按鍵。一共需要4個按鍵來控制機(jī)器人的前進(jìn)、后退、轉(zhuǎn)向、攝像頭云臺擺動。同Linux下其他設(shè)備一樣,首先打開js設(shè)備文件,建立按鍵設(shè)備監(jiān)聽函數(shù),當(dāng)手柄按鍵按下后,觸發(fā)設(shè)備監(jiān)聽函數(shù),讀取stJoyStickEvent結(jié)構(gòu)體,解析按鍵結(jié)構(gòu)體并通過網(wǎng)絡(luò)發(fā)送給機(jī)器人。
2.1.2 mjpeg視頻數(shù)據(jù)處理
ffmpeg是一個開源免費(fèi)跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)選擇的組件),提供了解碼、編碼、錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。mjpeg圖像解碼過程:讀入mjpeg圖像→解碼→逆量化→反離散余弦變換→原圖像。ffmpeg解碼過程如下:
①調(diào)用avcodec_init(),這個庫函數(shù)只需調(diào)用一次。avcodec_init主要包括dsp_static_init函數(shù),負(fù)責(zé)靜態(tài)查找表結(jié)構(gòu)的初始化。
②avcodec_register_all(),注冊所有的編碼器,使它們處于工作狀態(tài)。
③avcodec_find_decoder()函數(shù)用于查找一個與codec ID相匹配的已注冊的解碼器。
④avcodec_alloc_context()函數(shù)用于分配一個AVCodecContext并設(shè)置默認(rèn)值,如果失敗返回NULL,并可用av _free()進(jìn)行釋放。
⑤avcodec_alloc_frame()函數(shù)用于分配一個AVFrame并設(shè)置默認(rèn)值,如果失敗返回NULL,并可用av_free()進(jìn)行釋放。
⑥avcodec_open()函數(shù)用給定的AVCodec來初始化AVCodecContext。
⑦video_decode_video2()函數(shù)用于視頻解碼,所有的解碼工作都在該函數(shù)內(nèi)完成。
解碼完成之后形成位圖,即可直接顯示在計算機(jī)屏幕上。
2.1.3 GPS數(shù)據(jù)處理
在QT下QWebView類提供了一個可以展現(xiàn)和編輯網(wǎng)頁文檔的widget。QWebView是QtWebKit網(wǎng)頁瀏覽模塊的一個主要widget組件,可以用它來展現(xiàn)互聯(lián)網(wǎng)網(wǎng)頁。在Qt Designer中創(chuàng)建一個QWebView,可以使用QWebView 的load()方法來加載一個網(wǎng)站,如 load(QUrl(" googlemap.html")),和其他所有QT的widget一樣,需要調(diào)用show()方法才會顯示出QWebView。QWebView除了用load()方法設(shè)定網(wǎng)頁路徑外,也可以使用setHtml()方法加載HTML格式的網(wǎng)頁,如setUrl(QUrl("baidumap.html"))。網(wǎng)頁文件加載之后,開啟QWebView的JS功能,就可以同網(wǎng)頁文件進(jìn)行JS交互應(yīng)用了。機(jī)器人通過網(wǎng)絡(luò)將GPS地理位置數(shù)據(jù)傳輸?shù)絇C控制終端,解析GPS數(shù)據(jù)包后,在地圖中標(biāo)定機(jī)器人的位置信息。
2.2 機(jī)器人軟件設(shè)計
2.2.1 機(jī)器人運(yùn)動狀態(tài)控制
機(jī)器人運(yùn)動狀態(tài)控制包括前進(jìn)、后退、轉(zhuǎn)向、攝像頭云臺轉(zhuǎn)動。而這些動作的共同之處在于都需要應(yīng)用PWM信號進(jìn)行控制。脈寬調(diào)制(PWM)是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種技術(shù),廣泛應(yīng)用在測量、通信、功率控制與變換等許多領(lǐng)域中。舵機(jī)主要由外殼、電路板、無核心馬達(dá)、齒輪與位置檢測器構(gòu)成。其工作原理是接收機(jī)發(fā)出信號給舵機(jī),經(jīng)由電路板上的IC判斷轉(zhuǎn)動方向,再驅(qū)動無核心馬達(dá)開始轉(zhuǎn)動,通過減速齒輪將動力傳至擺臂,同時由位置檢測器送回信號,判斷是否已經(jīng)到達(dá)定位。整個機(jī)器人一共有3個舵機(jī),其中兩個舵機(jī)作為攝像頭云臺,第3個舵機(jī)控制機(jī)器人的轉(zhuǎn)向。機(jī)器人的前后運(yùn)動由電機(jī)提供動力,電機(jī)的驅(qū)動由電機(jī)驅(qū)動電路管理控制,電機(jī)驅(qū)動電路需要PWM控制信號來控制電機(jī)的前后轉(zhuǎn)動。配置PandaBoard開發(fā)板PWM信號驅(qū)動功能,利用Linux設(shè)備樹技術(shù)將相應(yīng)的設(shè)備引腳配置成PWM功能,使設(shè)備引腳在 Linux中形成設(shè)備文件,這樣操作PWM設(shè)備文件就可以產(chǎn)生PWM輸出信號。
2.2.2 視頻圖像獲取
視頻圖像獲取需要借助V4L2編程框架,應(yīng)用ffmpeg壓縮成mjpeg圖像,通過WiFi網(wǎng)絡(luò)傳輸?shù)絇C控制終端,V4L2設(shè)置過程如下:
①打開設(shè)備文件int fd=open(”/dev/video0″,O_RDWR);
②取得設(shè)備的capability,看看設(shè)備具有哪些功能,比如是否具有視頻輸入,或者音頻輸入輸出等,VIDIOC_ QUERYCAP,struct v4l2_capability;
③設(shè)置視頻的制式和幀格式,制式包括PAL、NTSC,幀的格式包括寬度和高度等,VIDIOC_S_STD,VIDIOC_S_ FMT,struct v4l2_std_id,struct v4l2_format;
④向驅(qū)動申請幀緩沖,一般不超過5個;
⑤將申請到的幀緩沖映射到用戶空間,就可以直接操作采集到的幀了,而不必去復(fù)制;
⑥將申請到的幀緩沖全部入隊列,以便存放采集到的數(shù)據(jù);
⑦開始視頻采集;
⑧出隊列以取得已采集數(shù)據(jù)的幀緩沖,取得原始采集數(shù)據(jù);
⑨將緩沖重新入隊列尾,這樣可以循環(huán)采集;
⑩停止視頻的采集;
?關(guān)閉視頻設(shè)備。
2.2.3 GPS地圖數(shù)據(jù)獲取
打開串口,讀取SIM908開發(fā)板的GPS數(shù)據(jù)并解析,獲取有用的GPS經(jīng)度緯度數(shù)據(jù),通過無線網(wǎng)絡(luò)發(fā)送給PC控制終端。
實(shí)驗證明,遠(yuǎn)程遙控巡邏偵察機(jī)器人系統(tǒng)可以將實(shí)時視頻圖像和GPS地理位置數(shù)據(jù)流暢地傳輸?shù)絇C遠(yuǎn)程控制終端,而PC遠(yuǎn)程控制終端將控制命令發(fā)送給機(jī)器人以靈活控制機(jī)器人的運(yùn)動,達(dá)到了設(shè)計要求。PC控制終端運(yùn)行效果如圖6所示。
圖6 PC控制終端運(yùn)行效果圖
遠(yuǎn)程遙控巡邏偵察機(jī)器人系統(tǒng)使用WiFi作為網(wǎng)絡(luò)通信手段,將視頻、GPS地理位置信息傳輸?shù)絇C遠(yuǎn)程控制終端。PC遠(yuǎn)程控制終端可以實(shí)時監(jiān)控機(jī)器人所處的環(huán)境和地理位置信息。實(shí)驗證明,應(yīng)用遙控手柄控制,操作簡單方便,機(jī)器人系統(tǒng)工作穩(wěn)定,能夠完成巡邏偵察任務(wù)。
[1]李懷勇.一種新型全方位移動機(jī)器人的運(yùn)動特性分析[D].沈陽:沈陽航空航天大學(xué),2012.
[2]趙冬斌,易建強(qiáng),鄧旭玥.全方位移動機(jī)器人結(jié)構(gòu)和運(yùn)動分析[J].機(jī)器人,2003(5).
[3]賈茜,王興松,周婧.基于多種控制方式的全方位移動機(jī)器人研制[J].電子機(jī)械工程,2010(4).
[4]秦志斌,錢徽,朱淼良.自主移動機(jī)器人混合式體系結(jié)構(gòu)的一種Multi-agent實(shí)現(xiàn)方法[J].機(jī)器人,2006(5).
[5]李志鵬.服務(wù)機(jī)器人室內(nèi)未知環(huán)境主動探索與特征地圖構(gòu)建[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[6]賈官帥.基于Mecanum輪全方位移動平臺的理論和應(yīng)用研究[D].杭州:浙江大學(xué),2012.
[7]邵杰.基于學(xué)習(xí)分類器的多機(jī)器人路徑規(guī)劃關(guān)鍵技術(shù)研究[D].南京:南京理工大學(xué),2011.
[8]楊世強(qiáng),傅衛(wèi)平,張鵬飛.四輪全方位輪式移動機(jī)器人的運(yùn)動學(xué)模型研究[J].機(jī)械科學(xué)與技術(shù),2009(3).
劉博(碩士研究生),主要研究方向為嵌入式開發(fā)與應(yīng)用;楊斌(教授),主要研究方向為嵌入式系統(tǒng)應(yīng)用開發(fā)、實(shí)時與分布式系統(tǒng)。
Design of Remote Visual Control Reconnaissance Location Robot System
Liu Bo,Yang Bin
(School of Information Science&Technology,Southwest Jiaotong University,Chengdu 610031,China)
Remote visual control reconnaissance location robot system consists of two parts.The first part is the robot which establishes a network connection with the remote PC terminal,accesses control command,and controls the robot,steering engine,and stereo video head after analyzing command motion motor.At last the robot sends GPS position information and environmental image to the PC control terminal.The second part is the PC remote control terminal which gets command data from North remote control handle and packages it,then transmits to the robot through the network,finally achieves control of the robot's movement.PC remote control terminal obtains robot GPS position data and the video data through the network,and displays in image video monitor window and map location window after interpreted.
remote control robot;PandaBoard;image compress;GPS location
TP242
A
薛士然
2014-10-17)