林勇 陳飛

關(guān)鍵詞:機(jī)器人;視頻;監(jiān)控;系統(tǒng)
早期的監(jiān)控系統(tǒng)以閉路電視為主,即模擬閉路電視監(jiān)控系統(tǒng)[1]。這類系統(tǒng)主要應(yīng)用于公安及安防領(lǐng)域,只適應(yīng)較小的地理范圍,應(yīng)用靈活性較差,不易擴(kuò)展功能,而且工程施工難度也較大,視頻、音頻及控制信號(hào)都需要線路鋪設(shè),工程量大。經(jīng)過幾年的發(fā)展,隨后出現(xiàn)數(shù)字化監(jiān)控系統(tǒng),把音視頻信號(hào)的采集與存儲(chǔ)定為數(shù)字形式存儲(chǔ)文件,質(zhì)量高,與系統(tǒng)之間交換數(shù)據(jù)方便可靠,但該系統(tǒng)同樣存在一些弊端,要實(shí)現(xiàn)遠(yuǎn)距離音視頻傳輸,兩端設(shè)備成本高,線路鋪設(shè)工序不可少,不易維護(hù)。近年來,隨著互聯(lián)網(wǎng)通信技術(shù)、數(shù)字圖像處理技術(shù)的發(fā)展,基于互聯(lián)網(wǎng)的視頻監(jiān)控系統(tǒng)出現(xiàn)便迅速普及,系統(tǒng)不再鋪設(shè)專用數(shù)據(jù)傳輸通道,音頻及視頻文件傳輸穩(wěn)定性、可靠性大大提高。視頻監(jiān)控應(yīng)用領(lǐng)域已經(jīng)從單一的安防方向擴(kuò)大到交通、教育、家庭、物業(yè)及金融等領(lǐng)域,人們安全生活得到保障。在信息化、數(shù)字化、智能化的當(dāng)今社會(huì),視頻監(jiān)控技術(shù)、物聯(lián)網(wǎng)等新技術(shù)之間開發(fā)創(chuàng)新必不可少,這一變化正一步步走近人們生活,可見人們生活方式和工作方式正在改變[2]。
1 監(jiān)控現(xiàn)狀分析
1.1 監(jiān)控現(xiàn)狀
無論是物業(yè)監(jiān)控,還是交通監(jiān)控,視頻監(jiān)控大多采用有線方式。一般將攝像頭采集到的圖像通過網(wǎng)線傳送到監(jiān)視器,工作人員坐在終端監(jiān)視器前查看監(jiān)視的結(jié)果。監(jiān)控人員被束縛在監(jiān)視前,視覺疲勞,另外攝像頭采集圖像的范圍區(qū)域也受到限制,只能監(jiān)控到特定的范圍,監(jiān)控區(qū)域受限,存在盲區(qū)。這些情況監(jiān)控人員需要到現(xiàn)場(chǎng)巡查,不能時(shí)刻現(xiàn)場(chǎng)蹲守,監(jiān)控區(qū)域的安全得不到保障。
1.2 存在問題與對(duì)策
前期的移動(dòng)機(jī)器人運(yùn)動(dòng)控制都是通過遙控器來完成,應(yīng)用距離受到局限,隨著移動(dòng)通信技術(shù)飛速發(fā)展,通信設(shè)備的功能也日益強(qiáng)大,Android手機(jī)不僅僅用來通話,越來越多地運(yùn)用來管理個(gè)人日常事務(wù)上。如果攝像頭安裝在活動(dòng)機(jī)器人或小車上,再通過手機(jī)連接網(wǎng)絡(luò)控制機(jī)器人,機(jī)器人載有攝像頭監(jiān)控物質(zhì)所處環(huán)境,這樣可以避免監(jiān)控盲區(qū)達(dá)到完美監(jiān)控效果。基于Android的移動(dòng)機(jī)器人監(jiān)控系統(tǒng)不僅克服了傳統(tǒng)監(jiān)控終端不能帶在身邊的缺點(diǎn),還能讓視頻監(jiān)控與運(yùn)動(dòng)機(jī)器人技術(shù)相結(jié)合,在運(yùn)動(dòng)過程中實(shí)現(xiàn)視頻監(jiān)控與數(shù)據(jù)傳輸。根據(jù)監(jiān)控環(huán)境,個(gè)人調(diào)整的機(jī)器人運(yùn)動(dòng)狀態(tài),克服固定終端視頻監(jiān)控覆蓋范圍小,不具備移動(dòng)性存在盲區(qū)等缺點(diǎn)。這樣的功能將給人們的生活、工作帶來更多便利。
2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
2.1 系統(tǒng)硬件模塊設(shè)計(jì)
移動(dòng)機(jī)器人監(jiān)控系統(tǒng)的外形選用小車結(jié)構(gòu),由幾部分硬件組成,分別是Wi-Fi模塊、STM32微控制器模塊、攝像頭、電機(jī)及履帶等控制器件組成。客戶端選用Android智能手機(jī)。其系統(tǒng)框圖如圖1。
Android 客戶端一般選用華為系列智能手機(jī)即可,比如P系列。Wi-Fi模塊采用TP-LINK類小型無線路由器如WR703N,為智能手機(jī)和移動(dòng)機(jī)器人提供通信的Wi-Fi通道,該無線路由器移植OpenWrt開源系統(tǒng),并安裝Mjpg-streamer和Ser2net軟件。對(duì)于移植在Wi-Fi內(nèi)的mjpg_streamer軟件目的是把從攝像頭采集的圖像,以數(shù)據(jù)流的形式,通過網(wǎng)絡(luò)IP地址傳輸?shù)娇蛻舳藶g覽器,這樣攝像頭數(shù)據(jù)通過Wi-Fi以流的形式傳給手機(jī)客戶端。Ser2net軟件是一個(gè)通用的Socket轉(zhuǎn)串口的軟件,能夠?qū)崿F(xiàn)TCP/IP格式的數(shù)據(jù)與串口數(shù)據(jù)互相之間轉(zhuǎn)換,方便與STM32模塊之間通信。USB攝像頭為數(shù)字?jǐn)z像頭。STM32F105芯片是微控制器,是移動(dòng)機(jī)器人的核心處理器,相當(dāng)于電腦的CPU,配備2200mAh 8A12V電池組提供電源。移動(dòng)機(jī)器人車輪用履帶結(jié)構(gòu)防止運(yùn)行中翻車,保持穩(wěn)定性。STM32F105中心處理器是32位微處理器,由意大利意法半導(dǎo)體公司研發(fā),芯片設(shè)計(jì)ARM Cortex-M3 內(nèi)核,工作頻率最高可達(dá)72MHZ,芯片內(nèi)集成有定時(shí)器、DMA控制器,外圍有USB接口、UART、CAN等多種功能接口,成本低,運(yùn)行功耗也較低,功能齊全的外設(shè)與接口,具有良好性能,在智能控制領(lǐng)域應(yīng)用較為廣泛。應(yīng)用Keil集成開發(fā)環(huán)境,Keil為STM32芯片提供了多種函數(shù)庫,方便選擇調(diào)用現(xiàn)有函數(shù)對(duì)芯片集成器、接口進(jìn)行配置,方便高效[2]。
2.2 系統(tǒng)開發(fā)軟件
系統(tǒng)軟件開發(fā)環(huán)境包括Android操作系統(tǒng)開發(fā)環(huán)境和移動(dòng)機(jī)器人驅(qū)動(dòng)開發(fā)調(diào)試環(huán)境Keil[3]。
2.2.1 Android 操作系統(tǒng)開發(fā)環(huán)境
Android操作系統(tǒng)是由谷歌公司和開放手機(jī)聯(lián)盟共同開發(fā),主要應(yīng)用于移動(dòng)設(shè)備,比如智能手機(jī)、平板等操作系統(tǒng)[4]。谷歌公司在Android系統(tǒng)上內(nèi)置了很多現(xiàn)有的應(yīng)用、通信功能及互聯(lián)網(wǎng)瀏覽器等。高效的Android系統(tǒng)是完全開源,方便研發(fā)者調(diào)用。綜合考慮系統(tǒng)采用Android Studio作為系統(tǒng)終端開發(fā)模擬環(huán)境。安裝過程分為兩個(gè)步驟:1) 安裝JDK;2) 安裝an?droind Studio。
2.2.2 移動(dòng)機(jī)器人控制開發(fā)環(huán)境
系統(tǒng)中移動(dòng)機(jī)器人控制運(yùn)用STM32處理芯片,這款芯片應(yīng)用Keil uVision 開發(fā)軟件下載仿真開發(fā)。Keil軟件開發(fā)平臺(tái)由德國(guó)Keil公司開發(fā),軟件包括C 編譯器、宏匯編、鏈接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等,功能強(qiáng)大。它將上述功能集成在一起,構(gòu)成方便易用的模擬開發(fā)環(huán)境和強(qiáng)大的軟件仿真調(diào)試工具,研究開發(fā)人員應(yīng)用廣泛。
安裝Keil 開發(fā)軟件后,打開軟件點(diǎn)擊:Projiet->New uVision Project……新建一個(gè)項(xiàng)目界面,指定路徑,便于管理,這樣不同功能程序放到不同名稱文件夾下,項(xiàng)目工程文件命名。從器件庫中選擇所有的芯片型號(hào),比如STM32F105芯片,進(jìn)行相關(guān)配置。在工程項(xiàng)目下我們可以新建代碼文件,寫源程序,然后編譯、連接調(diào)試、運(yùn)行、保存和下載。仿真器將目標(biāo)文件下載到STM32芯片處理器,進(jìn)行仿真調(diào)試等工作,例如J-Link仿真器支持Keil集成開發(fā)環(huán)境,支持STM32 處理器中的ARM Cortex-M3內(nèi)核[5],程序下載快,效率高,通過USB接口供電,即插即用,非常方便。
3 系統(tǒng)功能設(shè)計(jì)
基于Android操作系統(tǒng)的小型移動(dòng)機(jī)器人,以An?droid 客戶端為載體,通過Wifi 局域網(wǎng)連接控制端STM32F105芯片,控制移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài),同時(shí)將運(yùn)動(dòng)過程中拍攝的圖像數(shù)據(jù)實(shí)時(shí)通過Wifi傳送給An?droid客戶端。
3.1 移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)控制設(shè)計(jì)
客戶端怎樣發(fā)送或接收控制數(shù)據(jù),根據(jù)Android 平臺(tái)開發(fā)App對(duì)應(yīng)按鈕,應(yīng)用TCP協(xié)議,通信中雙工連接客戶端和服務(wù)器端。客戶端即手機(jī),服務(wù)器端即Wi-Fi模塊及運(yùn)動(dòng)機(jī)器人核心處理器。設(shè)計(jì)思想中運(yùn)用java.net.*包,包中提供了Socket和serverSocket類,輸入流使用getinputstream()和read()的方法讀取輸入流中數(shù)據(jù)。輸出流利用getoutputstream()和Write()方法獲得向輸出流中寫數(shù)據(jù),實(shí)現(xiàn)了雙向通信數(shù)據(jù)的交換,達(dá)到軟件控制移動(dòng)機(jī)器人目的,即客戶端手機(jī)控制了移動(dòng)機(jī)器人。
3.1.1 移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)控制方案
Wi-Fi模塊移植了串口透?jìng)鱏er2net軟件,ser2net 軟件是一個(gè)允許gensio接受器和gensio連接器之間連接的程序。ser2net的作用可以將Wi-Fi控制數(shù)據(jù)通過USB轉(zhuǎn)TTL連接線傳給STM32F105控制板,當(dāng)然可以將STM32F105控制板信息通過TTL轉(zhuǎn)USB傳輸給Wi-Fi模塊串口,既保證芯片供電又進(jìn)行數(shù)據(jù)傳輸通信。應(yīng)用Android 開發(fā)平臺(tái)設(shè)計(jì)客戶端手機(jī)App 按鈕,加套接字Socket進(jìn)行編程啟動(dòng)數(shù)據(jù)傳給Wi-Fi模塊,使用Wi-Fi模塊的2001端口通過串口透?jìng)鹘o服務(wù)器端控制主板,進(jìn)行移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)控制。
3.1.2 移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)控制軟件實(shí)現(xiàn)方法
控制移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)可以應(yīng)用通信協(xié)議中包頭和包尾起校驗(yàn)功能,校驗(yàn)控制指令均設(shè)為0Xff,類型位設(shè)置為0x00,表示運(yùn)動(dòng)狀態(tài)進(jìn)行控制,命名位表示移動(dòng)機(jī)器人處于不同運(yùn)動(dòng)狀態(tài),例如停止、前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)分別設(shè)置為0x00、0x01、0x02、0x03、0x04等。
按照通信協(xié)議向移動(dòng)機(jī)器人發(fā)出控制指令,例如安卓手機(jī)客戶端App可點(diǎn)擊后退按鈕,借助輸出流編程outputstream發(fā)出如下控制指令,達(dá)到控制目的。
Outputstream. write(new byte[] {(byte) 0xff, (byte)0x00, (byte) 0x02 (byte) 0x00, (byte) 0xff});
Outputstream.flush();
3.2 移動(dòng)機(jī)器人視頻監(jiān)控設(shè)計(jì)
安卓手機(jī)客戶端通過HTTP協(xié)議和URL通過端口映射從Wi-Fi模塊獲得視頻流,從而進(jìn)行視頻解析與顯示工作。在播放視頻過程中可以應(yīng)用安卓客戶端App對(duì)視頻任意一幀抓拍,通過安卓手機(jī)客戶端應(yīng)用程序按鈕查看通過USB數(shù)字?jǐn)z像頭采集經(jīng)過壓縮成MJPEG格式的視頻數(shù)據(jù)。
3.2.1 移動(dòng)機(jī)器人視頻監(jiān)控設(shè)計(jì)方案
安卓客戶端根據(jù)移動(dòng)機(jī)器人運(yùn)動(dòng)所處的環(huán)境,采集數(shù)據(jù)。視頻監(jiān)控系統(tǒng)有視頻采集模塊、視頻傳輸模塊、視頻接收模塊、視頻解析與顯示模塊等。Wi-Fi模塊內(nèi)移植mjpg-streamer軟件,mjpg-streamer是一個(gè)優(yōu)秀的視頻流服務(wù)器軟件,它可以通過HTTP的方式訪問系統(tǒng)上面的兼容攝像頭,做到遠(yuǎn)程視頻傳輸?shù)男ЧH粝氚袽JPEG格式的視頻流傳給Wi-Fi模塊,我們應(yīng)用數(shù)字?jǐn)z像頭采集動(dòng)態(tài)或靜態(tài)圖像,邊采集邊把輸入的數(shù)據(jù)以流的形式,通過網(wǎng)絡(luò)IP地址傳輸?shù)娇蛻魹g覽器端。Wi-Fi模塊通過USB接口與攝像頭相連,這樣給Wi-Fi模塊提供電源的同時(shí),采集到的數(shù)據(jù)將以MJPEG 格式的視頻流傳給 Wi-Fi 模塊。再通過移植的mjpg-streamer 視頻流服務(wù)器的輸入組件inputuvc和輸出組件output-http來實(shí)現(xiàn)視頻數(shù)據(jù)傳輸。流媒體采用流式傳輸技術(shù),發(fā)送方所要發(fā)送的視頻文件并不是事先錄制好存儲(chǔ)在服務(wù)器上,而是同時(shí)錄和發(fā),而接收客戶端采用同步下載同步解壓,在App端播放。
3.2.2 移動(dòng)機(jī)器人視頻監(jiān)控實(shí)現(xiàn)方法
Wi-Fi 模塊內(nèi)移植視頻流服務(wù)器mjpg-streamer,mjpg-streamer輸出組件output-http用HTTP協(xié)議進(jìn)行視頻數(shù)據(jù)傳輸。HTTP協(xié)議支持客戶/服務(wù)器模式,簡(jiǎn)單、快速、靈活的傳輸方式,最主要的是無連接也能傳輸,即客戶端接收視頻主要通過HTTP協(xié)議和URL來實(shí)現(xiàn)。一般URL有四個(gè)部分組成:<協(xié)議>://<主機(jī)>:< 端口>/<路徑>,安卓客戶端從Wi-Fi模塊獲取視頻數(shù)據(jù),通過端口映射技術(shù),根據(jù)Wi-Fi模塊服務(wù)器的IP 地址,例如192.168.5.10,那么URL 如下所示:http://192.168.5.10:8080/?action=stream,數(shù)字8080表示W(wǎng)i-Fi模塊服務(wù)器上用來進(jìn)行視頻傳輸?shù)亩丝冢縜ction=stream 表示視頻數(shù)據(jù)具體的名稱。若將http://192.168.5.10:8080/?action=snapshot,此時(shí)安卓客戶端按鈕獲取到的不是動(dòng)態(tài)連續(xù)的視頻,而是一幅幅靜態(tài)的圖像。
4 結(jié)束語
基于Android平臺(tái)的移動(dòng)開發(fā)系統(tǒng),具有開發(fā)周期短、開源效率高、操作方便及友好人機(jī)界面等優(yōu)點(diǎn),靈活的控制性能,可以彌補(bǔ)傳統(tǒng)機(jī)器人控制不靈活、便攜性差等缺點(diǎn),受到廣大研發(fā)者的好評(píng)。本文設(shè)計(jì)基于Android平臺(tái)的小型移動(dòng)機(jī)器人視頻監(jiān)控控制系統(tǒng),在客戶端用Android Studio設(shè)計(jì)客戶端應(yīng)用程序App,結(jié)合控制板STM32F105微處理器,在路由器內(nèi)植入串口透?jìng)鬈浖er2net,完成移動(dòng)機(jī)器人的運(yùn)動(dòng)方向的控制設(shè)計(jì)。在路由器內(nèi)植入Mjpg-Streamer視頻流服務(wù)器軟件,再應(yīng)用端口映射技術(shù)從而達(dá)到局域網(wǎng)內(nèi)控制移動(dòng)機(jī)器人運(yùn)動(dòng)和視頻監(jiān)控的設(shè)計(jì)目的。在此基礎(chǔ)上后期可以進(jìn)一步將控制對(duì)象的距離范圍擴(kuò)大,由局域網(wǎng)遷移到廣域網(wǎng),滿足更為廣泛應(yīng)用需求。