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