侯 操 ,孫小平
(遼寧石油化工大學 計算機與通信工程學院,遼寧 撫順 113001)
移動機器人,是一個集環境感知、動態決策與規劃、行為控制與執行等多功能于一體的綜合系統。它集中了傳感器技術、信息處理、電子工程、計算機工程、自動化控制工程以及人工智能等多學科的研究成果,代表機電一體化的最高成就,是目前科學技術發展最活躍的領域之一。隨著機器人性能不斷地完善,移動機器人的應用范圍大為擴展,不僅在工業、農業、醫療、服務等行業中得到廣泛的應用,而且在城市安全、國防和空間探測領域等有害與危險場合得到很好的應用。因此,移動機器人技術已經得到世界各國的普遍關注。
本次設計一款既具備智能終端控制也可通過上位機進行實時視頻監控的視頻監控小車。在本次開發的系統中,通過使用無線路由器和無線網卡組建局域網,在智能車架設mjpgstreamer網絡視頻服務器,同時通過無線網卡使智能車接入組建好的局域網中,既可以在PC機上使用客戶端進行實時監控控制,也可以使用手機等智能終端通過無線網卡來對智能車進行控制和實時監控。
本次開發的系統是采用雙架構結合的工作模式,內置智能車控制服務器和網絡視頻服務器。其中智能車內置的控制服務器,利用socket網絡通信技術(UDP協議),接受客戶端發送的控制請求,并執行相應操作,如智能車的行駛命令、聲頻播放命令、舵機轉動命令、溫度獲取命令等操作。而智能車內置mjpgstreamer網絡視頻服務器,它從監控攝像頭獲取視頻流,并利用網絡(TCP協議)將視頻流以JPEG格式發送到客戶端。另外內置網頁服務器(web server),用戶可以通過瀏覽器直接訪問頁面服務器,并獲取視頻流,從而達到視頻實時監控。又由于網絡視頻服務器同時和智能車控制服務器建立了連接,所以也可以使用智能終端通過游覽器間接訪問控制智能車控制服務器。智能車系統整體框架圖如圖1(a)所示。
智能車視頻監控系統的無線控制結構如圖2所示,本次方案由wifi通信系統、下位機控制系統、上位機控制系統3部分組成。Wi-Fi通信系統實現上位機客戶端系統與下位機ARM控制系統的數據傳輸。上位機客戶端系統通過wifi模塊接受下位機ARM控制系統發送數據進行存儲、分析、提取以及顯示,同時也可以對下位機發送控制命令。同樣下位機ARM控制系統也可以通過wifi模塊收到上位機系統發送的命令并進行相應的操作,將傳感器和攝像頭采集的數據進行整合和發送。

圖1 智能車無線視頻監控系統的總體架構Fig.1 The overall architecture of intelligent vehicle video monitor system

圖2 視頻監控系統框架圖Fig.2 Video monitoring system frame
由圖1(b)可知下位機主要組成部分,智能車視頻監控系統以天嵌科技Cortex-A8 X210開發板作為開發平臺,其處理器采用的三星S5pv210芯片,S5PV210采用了ARM CortexTM-A8內核,ARM V7指令集,主頻可達1 GHZ,64/32位內部總線結構,32/32kB的數據/指令一級緩存,512 kB的二級緩存,可以實現2000DMIPS(每秒運算20億條指令集)的高性能運算能力。其中wifi模塊完成主要完成下位機與上位機的組網和遠程控制功能;同時開發板上還配有檢測溫度和有害氣體的傳感器,因此可以對探測環境進行危險評估及預警。
智能車視頻監控系統采用的Linux開發平臺,它是一個多用戶和多任務操作系統,具有良好的的開放性,遵循世界標準規范,特別是遵循開放系統的互連國際標準。具有完善的內置網絡linux在通信和網絡功能方面均優于其他操作系統。系統圖像采集是通過ARM-Linux調度V4L2驅動程序來進行視頻捕獲。V4L2是linux影像系統與嵌入式影像的基礎,是linux內核里支持影像設備的一組API,linux在多媒體上的應用是目前非常熱門的研究領域,其中最關鍵的技術就是Linux的V4L2。傳統的基于ARM的遠程視頻監控大部分通過集成在CPU內部的MFC模塊對V4L2接口采集的數據進行硬件壓縮和解碼,硬件解碼需要硬件有硬件解碼模塊、相關的驅動配合、合適的播放軟件以及對播放軟件正確的設置,缺一而不能開啟硬件解碼功能。由于以上問題,所以本文采用一款開源軟件mjpeg-stream網絡視頻服務器代替MFC。mjpg_streamer是一款開源網絡視頻服務器,需要很少的CPU和內存資源就可以工作,大部分編碼工作都是攝像頭完成的,非常適合嵌入式環境使用。
2.1.1 網絡視頻服務器mjpeg-stream的移植
從v4l2接口采集的數據的壓縮與解碼我們選擇了網絡視頻服務器mjpeg-stream,我之所以不選擇集成在cpu內部的MFC模塊還有一個原因是因為本次設計的智能車遠程無線視頻監控系統要支持遠程的web界面的訪問操作,如果選擇MFC就要移植類似Boa等的嵌入式web服務器才能進行遠程訪問同MFC模塊采集的視頻流還需要在pc端采用開源的軟件和函數庫才能實現視頻的播放,而mjpeg-stream網絡視頻服務器卻可以省掉這些步驟,因為mjpeg-stream支持實現遠程的web訪問。這樣就降低了開發的工作量和復雜性,其下為mjpeg-strean移植編譯。圖3為mjpeg-stream對數據采集與發送的流程。
#tar xf mjpg-streamer-r63.tar.gz#cd mjpg-streamer-r63
vi README vi Makefile CC=gcc
修改為
CC=arm-linux-gcc
還要修改plugins/xxx/Makefile中的
CC=arm-linux-gcc
修改方法:
#find./-name"Makefile"-exec sed-i"s/CC=gcc/CC=arm-linux-gcc/g"{};
#make

圖3 mjpeg-stream工作流程Fig.3 Mjpeg-stream workflow
2.1.2 智能車視頻監控系統數據接收與顯示模塊的設計
由圖2(a)和圖 3可知mjpeg-stream網絡視頻服務器內部有兩個服務器,http服務器和視頻幀抓取服務器。http服務器將視頻幀抓取服務器采集的圖像幀以Http協議數據幀的形式發給客戶端。所以要完成的編程工作有兩部分:一是從http服務器讀取Http協議數據幀(Http協議數據幀由http協議相關的頭信息和圖像數據幀(jpeg格式)),二是將Http協議數據幀中的圖像數據幀提取出來。本文的GUI界面采用Qt進行設計實現C/S、B/S架構的客戶端和web客戶端。智能車監控系統視屏界面的顯示有兩個部分組成:一是通過Tcp協議將傳輸的數據接收(socket編程實現),二是客戶端的視頻圖像的顯示。客戶端軟件的設計流程圖如圖4所示。

圖4 圖像顯示設計流程Fig.4 The image shows the design process
由于我們通過編程把Http協議數據幀中的圖像數據幀提取了出來并顯示在客戶端從而實現了視頻實時監控,所以可以在主函數再起一個線程完成圖像的抓取功能即拍照功能。這樣在智能車對未知空間的探索進行分析提供了數據依據。
本次開發的智能車無線視頻監控系統的另一核心就是wifi模塊的開發。構成無線網絡的最基本的兩個要素是:一是一臺AP(Access Point),二是無線網卡。以上兩點便可以構成一個簡單的無線網絡。因為我們要通過智能終端和pc機上的客戶端對智能車遠程進行控制,所以如何將智能車變成一個可移動的wifi熱點是我們本次設計的重點。
嵌入式開發的一個核心的內容是在有限的硬件資源上如何使用各種開源軟件完成我們需要的功能。所以將智能車變成可移動的wifi熱點需要以下步驟:
1)下載安裝rtl8188eu無線芯片的驅動;2)使用hostapd開源軟件,使無線網卡切換為master模式,模擬AP(路由器)功能;3)使用dnsmasq開源軟件動態分配IP給客戶端
在開發板上主要步驟實現過程如下所示:

通過對以上開源軟件的移植開發便可以將智能車生成一個可移動的wifi熱點,通過手機等智能終端便可以對智能車無線視頻監控系統進行控制。圖5展示了連網成功后智能車無線視頻監控系統的工作狀態。

圖5 組網成功后的智能車視頻監控系統Fig.5 After the success of the network of intelligent vehicle video monitor system
本文實現了以s5pv210為核心處理的智能車無線視頻監控系統。本系統既可以使用智能終端通過wifi對智能車無線視頻監控系統的控制,也可以通過有線連接的方式進行控制。智能車即可以實時的視頻監控和拍照也可以通過開發板的上溫度傳感器和有害氣體傳感器進行周圍環境的探測,因此可以在城市安全、國防和空間探測領域等有害與危險場合得到一定的應用。對于今后智能車的開發也有一定研究價值。
[1]賈玉雷,靳伍銀,李鵬勃,等.基于 Zig Bee技術的智能車無線控制系統開發[J].傳感器與微系統,2013,32(5):135-141.
[2]陳勇,張虎,張開碧,等.嵌入式視頻監控系統的設計與實現[J].半導體光電,2013,34(5):849-851.
[3]王寶珠,程杰.基于ARM11的視頻監控系統設計[J].電子設計工程,2013,21(3):79-81.
[4]邵建松.基于嵌入式Linux的網絡視頻監控系統設計[D].石家莊:河北科技大學,2013.
[5]徐霖.基于ARM11的嵌入式無線視頻監控系統的研究與實現[D].武漢:武漢科技大學,2012.
[6]高熊.基于ARM11的嵌入式視頻監控系統設計[D].武漢:華中科技大學,2012.