李漭研,胡紅明,徐健平,潘錫斌,王昊
基于云技術和SSH反向隧道技術的視頻監控機器人設計*
李漭研,胡紅明,徐健平,潘錫斌,王昊
(武漢理工大學 自動化學院,湖北 武漢 430070)
以樹莓派為控制和通訊核心,融合云技術和嵌入式技術,設計了一套基于互聯網的遠程實時監控機器人系統。系統使用云服務器作為中轉,通過SSH反向隧道技術,實現了移動端和監控機器人的跨局域網通訊。設計中控制指令和視頻數據分別采用TCP和UDP協議進行實時傳輸。經測試,此系統能夠滿足用戶隨時隨地遠程控制機器人,并觀看實時監控視頻的需求,有較廣泛的應用前景。
云服務器;SSH反向隧道;遠程視頻傳輸;監控機器人
為此,本文設計了一套基于互聯網遠程視頻監控的機器人系統,實現了遠程控制、視頻傳輸同智能手機的結合,使用戶無論身在何處,只要能夠聯網,就可以通過手機實時獲取和觀看機器人采集的監控視頻,并可向監控機器人發送指令,自由操控其移動以隨心調節監控視角。
為對監控機器人實現跨局域網的運動控制和實時視頻傳輸,本系統主要包括視頻采集模塊、運動控制模塊、數據通訊網絡、云服務器和移動終端幾部分。
安裝在機器人上的運動控制模塊以樹莓派為控制和通訊核心,攝像頭拍攝的視頻和傳感器采集的數據,均上傳至樹莓派,通過互聯網傳輸至移動終端;移動端發來的指令也經由樹莓派,下發至Arduino控制器,驅動機器人的電機以控制其移動。
移動端連接互聯網后,用戶通過APP可調取和查看監控機器人發送來的實時視頻和各類監測數據,同時也可通過操縱屏幕上的虛擬搖桿,向機器人遠程發送控制命令,使其向目標位置移動,進而調整監控范圍。系統總體設計如圖1所示。

圖1 系統總體設計示意圖
監控機器人硬件系統主要由樹莓派控制板、Arduino控制器、攝像頭、L298N電機驅動模塊和移動主體模塊(含底盤、車輪、電機和電池組等)構成。樹莓派控制板在其中起著核心作用,一方面通過配置的開源軟件motion控制視頻的采集和處理;另一方面主動建立與云服務器的遠程連接,是通訊的橋梁。Arduino控制器分別連接電機驅動模塊、傳感器和云臺的步進電機,同時通過USB轉串口與樹莓派相連,將樹莓派傳送來的控制指令發送給電機驅動模塊和步進電機,并將傳感器檢測的數據發回樹莓派。系統硬件結構組成如圖2所示。

圖2 監控機器人硬件系統組成
本系統使用開源硬件Raspberry Pi 3B+作為數據處理和控制的核心平臺,其配備一枚Broadcom出產的ARM架構1.4 GHz BCM2837B0處理器,1 GB內存,使用SD卡作為存儲媒體,運行基于Linux的Debian系統,支持使用Python語言進行軟件開發,且擁有一個Ethernet、4個USB接口、HDMI(支持聲音輸出)和RCA端子輸出支持,具有運行速度快、開放性高、小巧輕便和價格低廉的優點。樹莓派控制板與其他硬件連接關系如圖3所示。

圖3 樹莓派與周圍硬件連接關系
本系統使用Arduino mega2560微控制器,其核心是ATmega2560,同時具有54路數字輸入/輸出口(其中16路可作為PWM輸出),16路模擬輸入,4路UART接口,1個16 MHz晶體振蕩器,1個USB口,1個電源插座,1個ICSP header和1個復位按鈕。
Arduino還能通過各種傳感器來感知環境,板子上的微控制器可通過Arduino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。對Arduino的編程是通過Arduino編程語言(基于Wiring)和Arduino開發環境(基于Processing)實現的。
房產測繪工作的技術性較高,具有效率快、質量高等特點,并且房產測繪過程主要依賴于強大的計算機系統,并綜合其他科學技術,形成完整的房產動態管理系統,便于管理者對測繪數據進行分類管理。
本系統選用免驅動USB網絡攝像頭Logitech C670i作為視頻采集模塊的主體,其支持Linux操作系統,此外在攝像頭底部加裝由28BYJ-48減速步進電機和限位裝置構成的云臺,通過調節云臺可靈活改變拍攝視角。
本系統采用L298N模塊對4個直流電機進行驅動,進而實現機器人的運動。L298N直流驅動器是一種雙H橋電路,采用15引腳封裝,供電電壓為5~35 V,可同時驅動多個直流電機。模塊上具有使能端EN和方向端IN1、IN2,通過改變使能端和方向端的邏輯電平,可以分別控制直流電機的轉速和轉向。
系統的總體硬件實物如圖4所示。
如何實現遠程移動端與機器人間的通訊是整個系統設計的難點。由于目前互聯網的IP地址劃分主要還是基于IPv4協議,IPv4中規定IP地址長度為32,但隨著互聯網的普及,IP地址已逐漸短缺。對于一般的局域網絡,運營商沒有足夠的公網IPv4地址分配,因此需使用NAT轉換技術,將一個公網IPv4映射為多個私網IPv4,內網設備分配到的并不是真正的公網IP地址,移動端也就無法通過IP地址直接與這些設備通訊。

圖4 系統的總體硬件實物
針對這種問題,本文提出一種以中繼服務器作為跳板,使雙方在沒有公網IP的條件下得以互聯通訊的方案。通訊方案如圖5所示。

圖5 系統通訊方案設計示意圖
由于監控機器人處在局域網環境下,沒有公網IP,位于外網的移動端無法直接建立與監控機器人的通訊連接。為此本系統配置了一臺位于公網的云服務器作為中轉,讓監控機器人主動連接云服務器,建立永久的SSH反向隧道以實現連接。搭建SSH反向隧道的關鍵技術是端口轉發,通過這種技術,云服務器可將外部移動端的請求轉發到局域網內部IP地址上的一個端口,并可以將監控機器人拍攝的視頻數據送回移動端。
樹莓派使用OpenSSH軟件登陸云服務器,之后將自身的PORT_2端口與云服務器的PORT_1端口綁定,用于監聽本地端口。該過程涉及的指令在樹莓派上寫成腳本,只要系統通電,就自動建立起SSH反向隧道。接著通過端口轉發,可將樹莓派上的某個端口A映射到云服務器上的端口B,此后發往端口B的所有數據能被云服務器轉發到端口A,這樣就實現了監控機器人和云服務器之間的連接。
移動端發往樹莓派的控制指令由字符串形式組成,為確保指令頻繁傳送的可靠性,本系統采用TCP通信方式。而實現TCP通訊的前提是通過socket編程建立的客戶端和樹莓派之間的TCP連接。首先在樹莓派上部署TCP服務端,監聽之前與云端遠程綁定端口PORT_2;移動端加入socket客戶端,請求與云服務器的PORT_1端口建立連接;此后云服務器將全部流量轉發至樹莓派。這樣通過三次握手,移動端便與樹莓派建立了TCP連接。
連接一旦建立,移動端可直接向樹莓派發送指令,樹莓派接收到指令后通過echo命令將其寫入/dev/ttyUSB0或dev/ttyUSB1文件,運動指令經USB轉串口下發至Arduino控制器,驅動監控機器人的電機。
為保證用戶能實時獲取和觀看監控視頻,本系統采用基于無連接的UDP協議用于視頻傳輸,該方式優點為數據傳輸的效率高、時延小。
部署在機器人上的攝像頭采集視頻,視頻數據經USB傳輸給樹莓派,并以圖片形式暫存于系統的用戶目錄下。通過搭建本地服務器,將視頻以H264視頻流格式傳出,傳輸過程使用socat軟件,采用UDP協議將視頻流發送到云服務器的PORT_4端口;此外還需在移動端進行遠程端口轉發操作,將移動端的端口PORT_3和云服務器的端口PORT_4綁定。至此,移動端可隨時通過訪問相關網頁獲取監控視頻,對其進行解碼和播放。
給系統上電,待系統運行穩定后,啟動手機移動端APP進入啟動頁面,1 s后自動進入登錄界面,輸入用戶名密碼,系統進行信息匹配,密碼正確才能進入主界面。此后APP自動加載并顯示監控視頻,點擊開關按鈕連接到服務器,撥動虛擬搖桿即可給機器人發送相應的命令,遠程操控機器人移動。移動端APP運行主界面如圖6所示。

圖6 移動端APP運行主界面
為了驗證方案的可行性,分別在4G網絡和Wi-Fi環境下對視頻傳輸延遲進行了測試。使用同一臺Android手機安裝APP,將機器人的攝像頭對準秒表,監控視頻傳輸至手機,比對現實和視頻中的秒表讀數得出傳輸的延遲時間。
拍攝的視頻以320×240的分辨率存儲和傳輸,測得的數據如表1所示。
表1 監控視頻傳輸時延測試數據
網絡環境測試次數延遲時間/ms平均值/ms 4G1395438 2462 3457 Wi-Fi1364367.7 2392 3347
測試結果表明,設計方案切實有效,成功實現了不同局域網內設備間的互聯通訊,且監控視頻流暢清晰,延遲在可接受的范圍內。
使用云服務器作為中轉,監控機器人通過SSH反向隧道與云服務器連接,移動端通過互聯網與云服務器綁定,實現了移動端和監控機器人的跨局域網遠程通訊。機器人搭載的樹莓派為核心硬件平臺,起到控制視頻圖像采集和傳輸指令的作用。本系統滿足了外網或異局域網用戶遠程控制機器人,觀看實時監控視頻的需求,具有傳輸速度快、可靠性高、實時性強、成本低的優點,且可進行二次開發,在各領域有廣泛的運用前景。
[1]孫志平.家用多功能機器人的研究與設計[D].長春:吉林大學,2018.
[2]李天鳴,何月順.基于ExtJS技術與SSH框架的權限管理研究[J].計算機應用與軟件,2011,28(5):165-167,205.
[3]李校林,劉利權,張杰.基于RTP的H.264視頻流實時打包傳輸的研究[J].計算機工程與科學,2012,34(5):168-171.
[4]孔曉東.智能視頻監控技術研究[D].上海:上海交通大學,2008.
[5]譚玉新.基于工業互聯網的煤礦井下機器人導航與無線視頻監控技術研究[D].北京:北京交通大學,2017.
TP242
A
10.15913/j.cnki.kjycx.2020.01.016
2095-6835(2020)01-0054-03
國家級大學生創新創業訓練計劃資助(編號:201910497160)
李漭研(2000—),女,山西運城人,本科在讀,研究方向為物聯網。胡紅明(1978—),博士,副教授。
〔編輯:嚴麗琴〕