李漭研,胡紅明,徐健平,潘錫斌,王昊
基于云技術(shù)和SSH反向隧道技術(shù)的視頻監(jiān)控機(jī)器人設(shè)計(jì)*
李漭研,胡紅明,徐健平,潘錫斌,王昊
(武漢理工大學(xué) 自動化學(xué)院,湖北 武漢 430070)
以樹莓派為控制和通訊核心,融合云技術(shù)和嵌入式技術(shù),設(shè)計(jì)了一套基于互聯(lián)網(wǎng)的遠(yuǎn)程實(shí)時(shí)監(jiān)控機(jī)器人系統(tǒng)。系統(tǒng)使用云服務(wù)器作為中轉(zhuǎn),通過SSH反向隧道技術(shù),實(shí)現(xiàn)了移動端和監(jiān)控機(jī)器人的跨局域網(wǎng)通訊。設(shè)計(jì)中控制指令和視頻數(shù)據(jù)分別采用TCP和UDP協(xié)議進(jìn)行實(shí)時(shí)傳輸。經(jīng)測試,此系統(tǒng)能夠滿足用戶隨時(shí)隨地遠(yuǎn)程控制機(jī)器人,并觀看實(shí)時(shí)監(jiān)控視頻的需求,有較廣泛的應(yīng)用前景。
云服務(wù)器;SSH反向隧道;遠(yuǎn)程視頻傳輸;監(jiān)控機(jī)器人
為此,本文設(shè)計(jì)了一套基于互聯(lián)網(wǎng)遠(yuǎn)程視頻監(jiān)控的機(jī)器人系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程控制、視頻傳輸同智能手機(jī)的結(jié)合,使用戶無論身在何處,只要能夠聯(lián)網(wǎng),就可以通過手機(jī)實(shí)時(shí)獲取和觀看機(jī)器人采集的監(jiān)控視頻,并可向監(jiān)控機(jī)器人發(fā)送指令,自由操控其移動以隨心調(diào)節(jié)監(jiān)控視角。
為對監(jiān)控機(jī)器人實(shí)現(xiàn)跨局域網(wǎng)的運(yùn)動控制和實(shí)時(shí)視頻傳輸,本系統(tǒng)主要包括視頻采集模塊、運(yùn)動控制模塊、數(shù)據(jù)通訊網(wǎng)絡(luò)、云服務(wù)器和移動終端幾部分。
安裝在機(jī)器人上的運(yùn)動控制模塊以樹莓派為控制和通訊核心,攝像頭拍攝的視頻和傳感器采集的數(shù)據(jù),均上傳至樹莓派,通過互聯(lián)網(wǎng)傳輸至移動終端;移動端發(fā)來的指令也經(jīng)由樹莓派,下發(fā)至Arduino控制器,驅(qū)動機(jī)器人的電機(jī)以控制其移動。
移動端連接互聯(lián)網(wǎng)后,用戶通過APP可調(diào)取和查看監(jiān)控機(jī)器人發(fā)送來的實(shí)時(shí)視頻和各類監(jiān)測數(shù)據(jù),同時(shí)也可通過操縱屏幕上的虛擬搖桿,向機(jī)器人遠(yuǎn)程發(fā)送控制命令,使其向目標(biāo)位置移動,進(jìn)而調(diào)整監(jiān)控范圍。系統(tǒng)總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)示意圖
監(jiān)控機(jī)器人硬件系統(tǒng)主要由樹莓派控制板、Arduino控制器、攝像頭、L298N電機(jī)驅(qū)動模塊和移動主體模塊(含底盤、車輪、電機(jī)和電池組等)構(gòu)成。樹莓派控制板在其中起著核心作用,一方面通過配置的開源軟件motion控制視頻的采集和處理;另一方面主動建立與云服務(wù)器的遠(yuǎn)程連接,是通訊的橋梁。Arduino控制器分別連接電機(jī)驅(qū)動模塊、傳感器和云臺的步進(jìn)電機(jī),同時(shí)通過USB轉(zhuǎn)串口與樹莓派相連,將樹莓派傳送來的控制指令發(fā)送給電機(jī)驅(qū)動模塊和步進(jìn)電機(jī),并將傳感器檢測的數(shù)據(jù)發(fā)回樹莓派。系統(tǒng)硬件結(jié)構(gòu)組成如圖2所示。
圖2 監(jiān)控機(jī)器人硬件系統(tǒng)組成
本系統(tǒng)使用開源硬件Raspberry Pi 3B+作為數(shù)據(jù)處理和控制的核心平臺,其配備一枚Broadcom出產(chǎn)的ARM架構(gòu)1.4 GHz BCM2837B0處理器,1 GB內(nèi)存,使用SD卡作為存儲媒體,運(yùn)行基于Linux的Debian系統(tǒng),支持使用Python語言進(jìn)行軟件開發(fā),且擁有一個(gè)Ethernet、4個(gè)USB接口、HDMI(支持聲音輸出)和RCA端子輸出支持,具有運(yùn)行速度快、開放性高、小巧輕便和價(jià)格低廉的優(yōu)點(diǎn)。樹莓派控制板與其他硬件連接關(guān)系如圖3所示。
圖3 樹莓派與周圍硬件連接關(guān)系
本系統(tǒng)使用Arduino mega2560微控制器,其核心是ATmega2560,同時(shí)具有54路數(shù)字輸入/輸出口(其中16路可作為PWM輸出),16路模擬輸入,4路UART接口,1個(gè)16 MHz晶體振蕩器,1個(gè)USB口,1個(gè)電源插座,1個(gè)ICSP header和1個(gè)復(fù)位按鈕。
Arduino還能通過各種傳感器來感知環(huán)境,板子上的微控制器可通過Arduino的編程語言來編寫程序,編譯成二進(jìn)制文件,燒錄進(jìn)微控制器。對Arduino的編程是通過Arduino編程語言(基于Wiring)和Arduino開發(fā)環(huán)境(基于Processing)實(shí)現(xiàn)的。
房產(chǎn)測繪工作的技術(shù)性較高,具有效率快、質(zhì)量高等特點(diǎn),并且房產(chǎn)測繪過程主要依賴于強(qiáng)大的計(jì)算機(jī)系統(tǒng),并綜合其他科學(xué)技術(shù),形成完整的房產(chǎn)動態(tài)管理系統(tǒng),便于管理者對測繪數(shù)據(jù)進(jìn)行分類管理。
本系統(tǒng)選用免驅(qū)動USB網(wǎng)絡(luò)攝像頭Logitech C670i作為視頻采集模塊的主體,其支持Linux操作系統(tǒng),此外在攝像頭底部加裝由28BYJ-48減速步進(jìn)電機(jī)和限位裝置構(gòu)成的云臺,通過調(diào)節(jié)云臺可靈活改變拍攝視角。
本系統(tǒng)采用L298N模塊對4個(gè)直流電機(jī)進(jìn)行驅(qū)動,進(jìn)而實(shí)現(xiàn)機(jī)器人的運(yùn)動。L298N直流驅(qū)動器是一種雙H橋電路,采用15引腳封裝,供電電壓為5~35 V,可同時(shí)驅(qū)動多個(gè)直流電機(jī)。模塊上具有使能端EN和方向端IN1、IN2,通過改變使能端和方向端的邏輯電平,可以分別控制直流電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向。
系統(tǒng)的總體硬件實(shí)物如圖4所示。
如何實(shí)現(xiàn)遠(yuǎn)程移動端與機(jī)器人間的通訊是整個(gè)系統(tǒng)設(shè)計(jì)的難點(diǎn)。由于目前互聯(lián)網(wǎng)的IP地址劃分主要還是基于IPv4協(xié)議,IPv4中規(guī)定IP地址長度為32,但隨著互聯(lián)網(wǎng)的普及,IP地址已逐漸短缺。對于一般的局域網(wǎng)絡(luò),運(yùn)營商沒有足夠的公網(wǎng)IPv4地址分配,因此需使用NAT轉(zhuǎn)換技術(shù),將一個(gè)公網(wǎng)IPv4映射為多個(gè)私網(wǎng)IPv4,內(nèi)網(wǎng)設(shè)備分配到的并不是真正的公網(wǎng)IP地址,移動端也就無法通過IP地址直接與這些設(shè)備通訊。
圖4 系統(tǒng)的總體硬件實(shí)物
針對這種問題,本文提出一種以中繼服務(wù)器作為跳板,使雙方在沒有公網(wǎng)IP的條件下得以互聯(lián)通訊的方案。通訊方案如圖5所示。
圖5 系統(tǒng)通訊方案設(shè)計(jì)示意圖
由于監(jiān)控機(jī)器人處在局域網(wǎng)環(huán)境下,沒有公網(wǎng)IP,位于外網(wǎng)的移動端無法直接建立與監(jiān)控機(jī)器人的通訊連接。為此本系統(tǒng)配置了一臺位于公網(wǎng)的云服務(wù)器作為中轉(zhuǎn),讓監(jiān)控機(jī)器人主動連接云服務(wù)器,建立永久的SSH反向隧道以實(shí)現(xiàn)連接。搭建SSH反向隧道的關(guān)鍵技術(shù)是端口轉(zhuǎn)發(fā),通過這種技術(shù),云服務(wù)器可將外部移動端的請求轉(zhuǎn)發(fā)到局域網(wǎng)內(nèi)部IP地址上的一個(gè)端口,并可以將監(jiān)控機(jī)器人拍攝的視頻數(shù)據(jù)送回移動端。
樹莓派使用OpenSSH軟件登陸云服務(wù)器,之后將自身的PORT_2端口與云服務(wù)器的PORT_1端口綁定,用于監(jiān)聽本地端口。該過程涉及的指令在樹莓派上寫成腳本,只要系統(tǒng)通電,就自動建立起SSH反向隧道。接著通過端口轉(zhuǎn)發(fā),可將樹莓派上的某個(gè)端口A映射到云服務(wù)器上的端口B,此后發(fā)往端口B的所有數(shù)據(jù)能被云服務(wù)器轉(zhuǎn)發(fā)到端口A,這樣就實(shí)現(xiàn)了監(jiān)控機(jī)器人和云服務(wù)器之間的連接。
移動端發(fā)往樹莓派的控制指令由字符串形式組成,為確保指令頻繁傳送的可靠性,本系統(tǒng)采用TCP通信方式。而實(shí)現(xiàn)TCP通訊的前提是通過socket編程建立的客戶端和樹莓派之間的TCP連接。首先在樹莓派上部署TCP服務(wù)端,監(jiān)聽之前與云端遠(yuǎn)程綁定端口PORT_2;移動端加入socket客戶端,請求與云服務(wù)器的PORT_1端口建立連接;此后云服務(wù)器將全部流量轉(zhuǎn)發(fā)至樹莓派。這樣通過三次握手,移動端便與樹莓派建立了TCP連接。
連接一旦建立,移動端可直接向樹莓派發(fā)送指令,樹莓派接收到指令后通過echo命令將其寫入/dev/ttyUSB0或dev/ttyUSB1文件,運(yùn)動指令經(jīng)USB轉(zhuǎn)串口下發(fā)至Arduino控制器,驅(qū)動監(jiān)控機(jī)器人的電機(jī)。
為保證用戶能實(shí)時(shí)獲取和觀看監(jiān)控視頻,本系統(tǒng)采用基于無連接的UDP協(xié)議用于視頻傳輸,該方式優(yōu)點(diǎn)為數(shù)據(jù)傳輸?shù)男矢?、時(shí)延小。
部署在機(jī)器人上的攝像頭采集視頻,視頻數(shù)據(jù)經(jīng)USB傳輸給樹莓派,并以圖片形式暫存于系統(tǒng)的用戶目錄下。通過搭建本地服務(wù)器,將視頻以H264視頻流格式傳出,傳輸過程使用socat軟件,采用UDP協(xié)議將視頻流發(fā)送到云服務(wù)器的PORT_4端口;此外還需在移動端進(jìn)行遠(yuǎn)程端口轉(zhuǎn)發(fā)操作,將移動端的端口PORT_3和云服務(wù)器的端口PORT_4綁定。至此,移動端可隨時(shí)通過訪問相關(guān)網(wǎng)頁獲取監(jiān)控視頻,對其進(jìn)行解碼和播放。
給系統(tǒng)上電,待系統(tǒng)運(yùn)行穩(wěn)定后,啟動手機(jī)移動端APP進(jìn)入啟動頁面,1 s后自動進(jìn)入登錄界面,輸入用戶名密碼,系統(tǒng)進(jìn)行信息匹配,密碼正確才能進(jìn)入主界面。此后APP自動加載并顯示監(jiān)控視頻,點(diǎn)擊開關(guān)按鈕連接到服務(wù)器,撥動虛擬搖桿即可給機(jī)器人發(fā)送相應(yīng)的命令,遠(yuǎn)程操控機(jī)器人移動。移動端APP運(yùn)行主界面如圖6所示。
圖6 移動端APP運(yùn)行主界面
為了驗(yàn)證方案的可行性,分別在4G網(wǎng)絡(luò)和Wi-Fi環(huán)境下對視頻傳輸延遲進(jìn)行了測試。使用同一臺Android手機(jī)安裝APP,將機(jī)器人的攝像頭對準(zhǔn)秒表,監(jiān)控視頻傳輸至手機(jī),比對現(xiàn)實(shí)和視頻中的秒表讀數(shù)得出傳輸?shù)难舆t時(shí)間。
拍攝的視頻以320×240的分辨率存儲和傳輸,測得的數(shù)據(jù)如表1所示。
表1 監(jiān)控視頻傳輸時(shí)延測試數(shù)據(jù)
網(wǎng)絡(luò)環(huán)境測試次數(shù)延遲時(shí)間/ms平均值/ms 4G1395438 2462 3457 Wi-Fi1364367.7 2392 3347
測試結(jié)果表明,設(shè)計(jì)方案切實(shí)有效,成功實(shí)現(xiàn)了不同局域網(wǎng)內(nèi)設(shè)備間的互聯(lián)通訊,且監(jiān)控視頻流暢清晰,延遲在可接受的范圍內(nèi)。
使用云服務(wù)器作為中轉(zhuǎn),監(jiān)控機(jī)器人通過SSH反向隧道與云服務(wù)器連接,移動端通過互聯(lián)網(wǎng)與云服務(wù)器綁定,實(shí)現(xiàn)了移動端和監(jiān)控機(jī)器人的跨局域網(wǎng)遠(yuǎn)程通訊。機(jī)器人搭載的樹莓派為核心硬件平臺,起到控制視頻圖像采集和傳輸指令的作用。本系統(tǒng)滿足了外網(wǎng)或異局域網(wǎng)用戶遠(yuǎn)程控制機(jī)器人,觀看實(shí)時(shí)監(jiān)控視頻的需求,具有傳輸速度快、可靠性高、實(shí)時(shí)性強(qiáng)、成本低的優(yōu)點(diǎn),且可進(jìn)行二次開發(fā),在各領(lǐng)域有廣泛的運(yùn)用前景。
[1]孫志平.家用多功能機(jī)器人的研究與設(shè)計(jì)[D].長春:吉林大學(xué),2018.
[2]李天鳴,何月順.基于ExtJS技術(shù)與SSH框架的權(quán)限管理研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(5):165-167,205.
[3]李校林,劉利權(quán),張杰.基于RTP的H.264視頻流實(shí)時(shí)打包傳輸?shù)难芯浚跩].計(jì)算機(jī)工程與科學(xué),2012,34(5):168-171.
[4]孔曉東.智能視頻監(jiān)控技術(shù)研究[D].上海:上海交通大學(xué),2008.
[5]譚玉新.基于工業(yè)互聯(lián)網(wǎng)的煤礦井下機(jī)器人導(dǎo)航與無線視頻監(jiān)控技術(shù)研究[D].北京:北京交通大學(xué),2017.
TP242
A
10.15913/j.cnki.kjycx.2020.01.016
2095-6835(2020)01-0054-03
國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃資助(編號:201910497160)
李漭研(2000—),女,山西運(yùn)城人,本科在讀,研究方向?yàn)槲锫?lián)網(wǎng)。胡紅明(1978—),博士,副教授。
〔編輯:嚴(yán)麗琴〕