張紅陽(yáng),肖宇峰,劉 冉
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng) 621010; 2.西南科技大學(xué) 特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 綿陽(yáng) 621010)
網(wǎng)絡(luò)技術(shù)的飛速發(fā)展給人們生活和工作帶來(lái)了極大的便利性[1]。近十年來(lái),遠(yuǎn)程機(jī)器人同時(shí)定位與地圖創(chuàng)建(Simultaneous Localization and Mapping,SLAM)技術(shù)得到很快的發(fā)展。傳統(tǒng)的方法利用本地計(jì)算機(jī)遠(yuǎn)程登錄到遠(yuǎn)端主機(jī),然后將遠(yuǎn)端主機(jī)的桌面窗口通過(guò)網(wǎng)絡(luò)傳遞到本地進(jìn)程,從而將創(chuàng)建的地圖在本地主機(jī)呈現(xiàn)。這種方式雖然可以使用戶(hù)直觀地看到建圖的整個(gè)過(guò)程,但其對(duì)網(wǎng)絡(luò)帶寬要求高,雖然現(xiàn)有技術(shù)在帶寬為56 Kb/s時(shí)可進(jìn)行遠(yuǎn)程登錄連接,但這種情況下遠(yuǎn)程桌面的顯示效果、響應(yīng)速度將會(huì)受到很大影響,想要更加流暢的體驗(yàn)度則需要占用較多的帶寬資源[1]。文獻(xiàn)[2]提出通過(guò)語(yǔ)音與機(jī)器人交互進(jìn)行地圖構(gòu)建,然后將機(jī)器人的位置返回到客戶(hù)端并記錄下來(lái)。這種方式傳輸數(shù)據(jù)少,滿(mǎn)足低帶寬條件下傳輸數(shù)據(jù)的要求,但其不能直觀地反映機(jī)器人在整個(gè)環(huán)境中的位置。
針對(duì)無(wú)線(xiàn)低帶寬條件下大面積探索地圖高效傳輸問(wèn)題,本文將創(chuàng)建好的地圖數(shù)據(jù)進(jìn)行壓縮,采用C/S的設(shè)計(jì)模式并且自主設(shè)計(jì)地圖交互協(xié)議,使得遠(yuǎn)端主機(jī)上創(chuàng)建好的地圖數(shù)據(jù)準(zhǔn)確、高效地進(jìn)行傳輸。
該系統(tǒng)分為機(jī)器人端和APP端。機(jī)器人端通過(guò)局域網(wǎng)接收APP端下發(fā)的控制指令控制機(jī)器人移動(dòng),在移動(dòng)時(shí)通過(guò)SLAM模塊進(jìn)行柵格地圖的構(gòu)建。無(wú)線(xiàn)局域網(wǎng)帶寬較低,并且探索地圖的生成是一個(gè)動(dòng)態(tài)過(guò)程:隨著探索范圍擴(kuò)大,生成的地圖不斷擴(kuò)大。如果進(jìn)行遠(yuǎn)程傳輸,直接傳輸?shù)膸捯髸?huì)越來(lái)越大。所以通過(guò)地圖壓縮模塊對(duì)地圖數(shù)據(jù)進(jìn)行壓縮,減少傳輸數(shù)據(jù)量。然后通過(guò)地圖發(fā)送模塊將地圖數(shù)據(jù)發(fā)送到APP端。APP端通過(guò)地圖接收模塊接收到地圖數(shù)據(jù)后,通過(guò)地圖顯示模塊將接收到的地圖數(shù)據(jù)進(jìn)行整合并顯示出來(lái)。探索地圖的傳輸方案框圖如圖1所示。
圖1 移動(dòng)機(jī)器人探索地圖的傳輸方案
在概率意義上網(wǎng)格占據(jù)Fast-SLAM算法估計(jì)關(guān)于機(jī)器人位姿x1:t和地圖m的聯(lián)合后驗(yàn)概率p(x1:t,m|z1:t,u1:t-1)。利用條件獨(dú)立性,該估計(jì)可被分解為:
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)
柵格地圖由代表機(jī)器人工作空間的許多網(wǎng)格單元組成,每個(gè)網(wǎng)格單元都具有被占據(jù)的概率值,如圖2所示。
圖2 柵格地圖創(chuàng)建
通過(guò)下式更新每個(gè)柵格的狀態(tài):
(3)
(4)
接下來(lái)要將這些數(shù)據(jù)以PGM文件格式(portable graymap file format)進(jìn)行保存。PGM格式圖像由文件頭部分和數(shù)據(jù)部分組成。PGM文件的數(shù)據(jù)部分通過(guò)如下公式進(jìn)行保存:
(5)
機(jī)器人端的主要任務(wù)是根據(jù)APP端的速度指令控制機(jī)器人進(jìn)行地圖構(gòu)建,并將地圖數(shù)據(jù)發(fā)送到APP端進(jìn)行顯示。機(jī)器人端設(shè)計(jì)流程如圖3所示。
圖3 機(jī)器人端設(shè)計(jì)流程圖
首先創(chuàng)建Socket套接字,然后機(jī)器人端一直處于監(jiān)聽(tīng)APP端模式。當(dāng)APP端請(qǐng)求連接時(shí),機(jī)器人端接受連接并處理該APP端的請(qǐng)求。子線(xiàn)程1接收到請(qǐng)求地圖的指令后,通知子線(xiàn)程2對(duì)地圖數(shù)據(jù)進(jìn)行壓縮。首先循環(huán)讀取第2節(jié)生成的PGM格式的柵格地圖數(shù)據(jù),然后將地圖數(shù)據(jù)通過(guò)PGM文件壓縮算法[5-6]經(jīng)過(guò)分塊預(yù)處理、量化、編碼轉(zhuǎn)換成數(shù)據(jù)量較小的JPEG格式的數(shù)據(jù),再將轉(zhuǎn)換后的地圖數(shù)據(jù)發(fā)送到APP端,確保探索地圖的實(shí)時(shí)顯示??紤]到在地圖傳輸過(guò)程中存在網(wǎng)絡(luò)不穩(wěn)定的情況,傳輸可能中斷,則關(guān)閉子線(xiàn)程2并通知子線(xiàn)程1繼續(xù)等待接收APP端指令,當(dāng)建立連接后重新傳輸?shù)貓D數(shù)據(jù)。
APP端基于Android平臺(tái)進(jìn)行開(kāi)發(fā),使用Java語(yǔ)言進(jìn)行程序設(shè)計(jì)。其主要功能是發(fā)送機(jī)器人速度指令和接收地圖數(shù)據(jù)并顯示。APP端設(shè)計(jì)流程如圖4所示。
圖4 APP端設(shè)計(jì)流程圖
APP端啟動(dòng)后創(chuàng)建一個(gè)Socket類(lèi)對(duì)象,綁定機(jī)器人端的IP地址和端口號(hào),并請(qǐng)求連接機(jī)器人端。建立連接成功后,分別創(chuàng)建發(fā)送數(shù)據(jù)線(xiàn)程和接收數(shù)據(jù)線(xiàn)程,根據(jù)雙方約定好的協(xié)議進(jìn)行收發(fā)數(shù)據(jù)。發(fā)送數(shù)據(jù)線(xiàn)程用來(lái)向機(jī)器人端發(fā)送地圖請(qǐng)求指令和速度指令。接收數(shù)據(jù)線(xiàn)程用來(lái)循環(huán)接收地圖數(shù)據(jù),當(dāng)一張地圖數(shù)據(jù)沒(méi)有接收完,則循環(huán)接收地圖數(shù)據(jù),直到接收整張地圖數(shù)據(jù)。當(dāng)完整一張地圖數(shù)據(jù)接收完畢后將讀入的網(wǎng)絡(luò)字符流數(shù)據(jù)轉(zhuǎn)化為Bitmap格式數(shù)據(jù),然后將地圖繪制在移動(dòng)設(shè)備上顯示,接著再等待接收機(jī)器人端發(fā)送的下張地圖數(shù)據(jù)。當(dāng)斷開(kāi)連接后關(guān)閉線(xiàn)程,關(guān)閉套接字,釋放資源。
考慮到系統(tǒng)的規(guī)范性和可擴(kuò)展性,必須設(shè)計(jì)一套規(guī)范的交互協(xié)議來(lái)進(jìn)行APP端和機(jī)器人端之間的通信。由于TCP協(xié)議具有較高的可靠性,因此本文的傳輸協(xié)議選擇TCP,用于機(jī)器人端與APP端交互的應(yīng)用層協(xié)議則利用TCP套接字實(shí)現(xiàn)。
上面提到的應(yīng)用層協(xié)議也就是用于地圖數(shù)據(jù)交互的協(xié)議,如表1所示。當(dāng)APP端接收到數(shù)據(jù)后,如果校驗(yàn)和無(wú)誤則判斷包頭。包頭無(wú)誤則提取包實(shí)體部分。提取出包實(shí)體后查看當(dāng)前包數(shù)Cur_P,若此值與等待的包序號(hào)i相同,則提取總包數(shù)Tol_P,根據(jù)此值來(lái)計(jì)算接收數(shù)據(jù)包的個(gè)數(shù),總包數(shù)收完,則進(jìn)行數(shù)據(jù)包的重組并顯示。若Cur_P值大于等待包序號(hào),則認(rèn)為當(dāng)前等待的數(shù)據(jù)包可能丟失,則放棄該包數(shù)據(jù),重新初始化接收參數(shù),開(kāi)始接收新的數(shù)據(jù)包。若Cur_P值小于等待包序號(hào),則為無(wú)效的數(shù)據(jù)包,不做任何處理,繼續(xù)等待下一包的數(shù)據(jù)。
表1 地圖交互協(xié)議
實(shí)驗(yàn)平臺(tái)是自主研制的搭載北陽(yáng)Hokuyo UTM-30LX激光掃描儀的三輪全向移動(dòng)機(jī)器人,工控機(jī)裝有Ubuntu 12.04的Linux系統(tǒng),Linux系統(tǒng)中裝載了Hydro版本的ROS(Robot Operating System)次級(jí)操作系統(tǒng)。三輪全向移動(dòng)機(jī)器人如圖5所示。
圖5 三輪全向移動(dòng)機(jī)器人
實(shí)驗(yàn)環(huán)境為西南科技大學(xué)東七樓走廊,其面積約為460 m2,走廊寬度為3.31 m。分別進(jìn)行有效性和高效性測(cè)試。
(1)有效性測(cè)試
①APP端地圖顯示效果。經(jīng)過(guò)圖6和圖7對(duì)比,APP端和機(jī)器人端顯示的地圖完全吻合。
②機(jī)器人端與APP端關(guān)于機(jī)器人定位效果對(duì)比。
圖6 機(jī)器人端SLAM過(guò)程圖
圖7 APP端探索地圖顯示效果圖
圖6中左上角三角形所在的位置為機(jī)器人端機(jī)器人的位置,圖7中左上角的圓形為機(jī)器人在APP端顯示的位置,兩者相對(duì)比可以看出在APP端正確顯示了機(jī)器人的位置。地圖的分辨率為0.05 m/pixel,通過(guò)比較機(jī)器人端和APP端6個(gè)機(jī)器人位置的定位坐標(biāo),如表2所示,可得坐標(biāo)誤差在±10 cm的誤差范圍內(nèi),相對(duì)誤差在1%以?xún)?nèi),滿(mǎn)足定位精度的要求。
表2 機(jī)器人端與APP端關(guān)于機(jī)器人定位坐標(biāo)對(duì)比
(2)高效性測(cè)試
地圖壓縮前后及傳輸時(shí)間對(duì)比。整個(gè)實(shí)驗(yàn)在JCG JHR-N835R路由器搭建的無(wú)線(xiàn)局域網(wǎng)內(nèi)測(cè)試,其無(wú)線(xiàn)傳輸速率理論值為300 Mb/s。在APP端距離路由器50 m時(shí)帶寬已衰減為25 Kb/s,此時(shí)設(shè)為機(jī)器人已進(jìn)入低帶寬環(huán)境下。分別做了低帶寬環(huán)境和不是低帶寬環(huán)境的8次實(shí)驗(yàn)。地圖傳輸時(shí)間及文件大小比較如表3所示。
由表3可以看出,經(jīng)PGM文件壓縮算法,探索地圖數(shù)據(jù)得到大幅度壓縮。不同帶寬條件下,傳輸時(shí)間隨著帶寬的增加而減少。在同樣低帶寬條件下,壓縮后的傳輸時(shí)間約為壓縮前的1/27.5,滿(mǎn)足低帶寬條件下大面積地圖傳輸?shù)囊蟆?/p>
表3 傳輸時(shí)間及文件大小比較
本文設(shè)計(jì)并實(shí)現(xiàn)了大范圍探索地圖遠(yuǎn)程傳輸系統(tǒng)。實(shí)驗(yàn)結(jié)果表明該系統(tǒng)可以解決無(wú)線(xiàn)低帶寬條件下大面積機(jī)器人探索地圖高效傳輸問(wèn)題,并且為移動(dòng)機(jī)器人的遠(yuǎn)程數(shù)據(jù)訪(fǎng)問(wèn)和控制提供了技術(shù)支持。
[1] 高巖,黃曉濤,肖來(lái)元.面向低帶寬網(wǎng)絡(luò)的遠(yuǎn)程圖形終端設(shè)計(jì)[J].軟件導(dǎo)刊,2015,14(9):83-86.
[2] 佘元博. 基于ROS的交互型自主導(dǎo)航機(jī)器人平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 南京:南京大學(xué), 2015.
[3] 張建偉.開(kāi)源機(jī)器人操作系統(tǒng)[M].北京:科學(xué)出版社,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ìn)及其應(yīng)用[J]. 計(jì)算工程與應(yīng)用, 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.