張紅陽,肖宇峰,劉 冉
(1.西南科技大學 信息工程學院,四川 綿陽 621010; 2.西南科技大學 特殊環境機器人技術四川省重點實驗室,四川 綿陽 621010)
網絡技術的飛速發展給人們生活和工作帶來了極大的便利性[1]。近十年來,遠程機器人同時定位與地圖創建(Simultaneous Localization and Mapping,SLAM)技術得到很快的發展。傳統的方法利用本地計算機遠程登錄到遠端主機,然后將遠端主機的桌面窗口通過網絡傳遞到本地進程,從而將創建的地圖在本地主機呈現。這種方式雖然可以使用戶直觀地看到建圖的整個過程,但其對網絡帶寬要求高,雖然現有技術在帶寬為56 Kb/s時可進行遠程登錄連接,但這種情況下遠程桌面的顯示效果、響應速度將會受到很大影響,想要更加流暢的體驗度則需要占用較多的帶寬資源[1]。文獻[2]提出通過語音與機器人交互進行地圖構建,然后將機器人的位置返回到客戶端并記錄下來。這種方式傳輸數據少,滿足低帶寬條件下傳輸數據的要求,但其不能直觀地反映機器人在整個環境中的位置。
針對無線低帶寬條件下大面積探索地圖高效傳輸問題,本文將創建好的地圖數據進行壓縮,采用C/S的設計模式并且自主設計地圖交互協議,使得遠端主機上創建好的地圖數據準確、高效地進行傳輸。
該系統分為機器人端和APP端。機器人端通過局域網接收APP端下發的控制指令控制機器人移動,在移動時通過SLAM模塊進行柵格地圖的構建。無線局域網帶寬較低,并且探索地圖的生成是一個動態過程:隨著探索范圍擴大,生成的地圖不斷擴大。如果進行遠程傳輸,直接傳輸的帶寬要求會越來越大。所以通過地圖壓縮模塊對地圖數據進行壓縮,減少傳輸數據量。然后通過地圖發送模塊將地圖數據發送到APP端。APP端通過地圖接收模塊接收到地圖數據后,通過地圖顯示模塊將接收到的地圖數據進行整合并顯示出來。探索地圖的傳輸方案框圖如圖1所示。

圖1 移動機器人探索地圖的傳輸方案
在概率意義上網格占據Fast-SLAM算法估計關于機器人位姿x1:t和地圖m的聯合后驗概率p(x1:t,m|z1:t,u1:t-1)。利用條件獨立性,該估計可被分解為:
p(x1:t,m|z1:t,u1:t-1)=p(m|x1:t,z1:t)p(x1:t|z1:t,u1:t-1)
(1)

(2)

柵格地圖由代表機器人工作空間的許多網格單元組成,每個網格單元都具有被占據的概率值,如圖2所示。

圖2 柵格地圖創建
通過下式更新每個柵格的狀態:
(3)

(4)
接下來要將這些數據以PGM文件格式(portable graymap file format)進行保存。PGM格式圖像由文件頭部分和數據部分組成。PGM文件的數據部分通過如下公式進行保存:
(5)
機器人端的主要任務是根據APP端的速度指令控制機器人進行地圖構建,并將地圖數據發送到APP端進行顯示。機器人端設計流程如圖3所示。

圖3 機器人端設計流程圖
首先創建Socket套接字,然后機器人端一直處于監聽APP端模式。當APP端請求連接時,機器人端接受連接并處理該APP端的請求。子線程1接收到請求地圖的指令后,通知子線程2對地圖數據進行壓縮。首先循環讀取第2節生成的PGM格式的柵格地圖數據,然后將地圖數據通過PGM文件壓縮算法[5-6]經過分塊預處理、量化、編碼轉換成數據量較小的JPEG格式的數據,再將轉換后的地圖數據發送到APP端,確保探索地圖的實時顯示??紤]到在地圖傳輸過程中存在網絡不穩定的情況,傳輸可能中斷,則關閉子線程2并通知子線程1繼續等待接收APP端指令,當建立連接后重新傳輸地圖數據。
APP端基于Android平臺進行開發,使用Java語言進行程序設計。其主要功能是發送機器人速度指令和接收地圖數據并顯示。APP端設計流程如圖4所示。

圖4 APP端設計流程圖
APP端啟動后創建一個Socket類對象,綁定機器人端的IP地址和端口號,并請求連接機器人端。建立連接成功后,分別創建發送數據線程和接收數據線程,根據雙方約定好的協議進行收發數據。發送數據線程用來向機器人端發送地圖請求指令和速度指令。接收數據線程用來循環接收地圖數據,當一張地圖數據沒有接收完,則循環接收地圖數據,直到接收整張地圖數據。當完整一張地圖數據接收完畢后將讀入的網絡字符流數據轉化為Bitmap格式數據,然后將地圖繪制在移動設備上顯示,接著再等待接收機器人端發送的下張地圖數據。當斷開連接后關閉線程,關閉套接字,釋放資源。
考慮到系統的規范性和可擴展性,必須設計一套規范的交互協議來進行APP端和機器人端之間的通信。由于TCP協議具有較高的可靠性,因此本文的傳輸協議選擇TCP,用于機器人端與APP端交互的應用層協議則利用TCP套接字實現。
上面提到的應用層協議也就是用于地圖數據交互的協議,如表1所示。當APP端接收到數據后,如果校驗和無誤則判斷包頭。包頭無誤則提取包實體部分。提取出包實體后查看當前包數Cur_P,若此值與等待的包序號i相同,則提取總包數Tol_P,根據此值來計算接收數據包的個數,總包數收完,則進行數據包的重組并顯示。若Cur_P值大于等待包序號,則認為當前等待的數據包可能丟失,則放棄該包數據,重新初始化接收參數,開始接收新的數據包。若Cur_P值小于等待包序號,則為無效的數據包,不做任何處理,繼續等待下一包的數據。

表1 地圖交互協議
實驗平臺是自主研制的搭載北陽Hokuyo UTM-30LX激光掃描儀的三輪全向移動機器人,工控機裝有Ubuntu 12.04的Linux系統,Linux系統中裝載了Hydro版本的ROS(Robot Operating System)次級操作系統。三輪全向移動機器人如圖5所示。

圖5 三輪全向移動機器人
實驗環境為西南科技大學東七樓走廊,其面積約為460 m2,走廊寬度為3.31 m。分別進行有效性和高效性測試。
(1)有效性測試
①APP端地圖顯示效果。經過圖6和圖7對比,APP端和機器人端顯示的地圖完全吻合。
②機器人端與APP端關于機器人定位效果對比。

圖6 機器人端SLAM過程圖

圖7 APP端探索地圖顯示效果圖
圖6中左上角三角形所在的位置為機器人端機器人的位置,圖7中左上角的圓形為機器人在APP端顯示的位置,兩者相對比可以看出在APP端正確顯示了機器人的位置。地圖的分辨率為0.05 m/pixel,通過比較機器人端和APP端6個機器人位置的定位坐標,如表2所示,可得坐標誤差在±10 cm的誤差范圍內,相對誤差在1%以內,滿足定位精度的要求。

表2 機器人端與APP端關于機器人定位坐標對比
(2)高效性測試
地圖壓縮前后及傳輸時間對比。整個實驗在JCG JHR-N835R路由器搭建的無線局域網內測試,其無線傳輸速率理論值為300 Mb/s。在APP端距離路由器50 m時帶寬已衰減為25 Kb/s,此時設為機器人已進入低帶寬環境下。分別做了低帶寬環境和不是低帶寬環境的8次實驗。地圖傳輸時間及文件大小比較如表3所示。
由表3可以看出,經PGM文件壓縮算法,探索地圖數據得到大幅度壓縮。不同帶寬條件下,傳輸時間隨著帶寬的增加而減少。在同樣低帶寬條件下,壓縮后的傳輸時間約為壓縮前的1/27.5,滿足低帶寬條件下大面積地圖傳輸的要求。

表3 傳輸時間及文件大小比較
本文設計并實現了大范圍探索地圖遠程傳輸系統。實驗結果表明該系統可以解決無線低帶寬條件下大面積機器人探索地圖高效傳輸問題,并且為移動機器人的遠程數據訪問和控制提供了技術支持。
[1] 高巖,黃曉濤,肖來元.面向低帶寬網絡的遠程圖形終端設計[J].軟件導刊,2015,14(9):83-86.
[2] 佘元博. 基于ROS的交互型自主導航機器人平臺的設計與實現[D]. 南京:南京大學, 2015.
[3] 張建偉.開源機器人操作系統[M].北京:科學出版社,2012.
[4] BERNTORP K, NORDH J. Rao-blackwellized particle smoothing for occupancy-grid based SLAM using low-cost sensors[J]. IFAC Proceedings Volumes, 2014, 47(3): 101-103.
[5] 叢爽, 蒲亞坤, 王軍南. DCT圖像壓縮方法的改進及其應用[J]. 計算工程與應用, 2010,46(18):160-163.
[6] ERNAWAN F, ABU N A, SURYANA N. An adaptive JPEG image compression using psychovisual model[J]. Advanced Science Letters, 2014, 20(1): 26-31.