張華健,錢 鈞
ZHANG Hua-jian,QIAN Jun
(合肥工業(yè)大學(xué),合肥 230009)
在機器人和互聯(lián)網(wǎng)的高速發(fā)展中,遠程呈現(xiàn)技術(shù)[1]正在不斷改變我們的生活方式,廣泛應(yīng)用于安防、醫(yī)療、教育、實時監(jiān)控、遠程會議等領(lǐng)域。遠程呈現(xiàn)移動機器人[2]是一個集成了視頻通信和遙控功能的移動的機器人,用戶可以通過視頻通信功能與他人通信,并通過遙控功能控制機器人的行走和其他動作,來達到替代人物虛擬出場的目的。在眾多的移動機器人的研究中,如Cambridge公司推出的VGO機器人[3]、上海交大醫(yī)學(xué)院的艾菲仕醫(yī)療服務(wù)機器人[4]等,雖然這些機器人功能強大,但價格昂貴,在代碼的復(fù)用性和移植性方面表現(xiàn)得比較差,不利于二次開發(fā)和維護。
針對這些不足,本研究以機器人操作系統(tǒng)(ROS)[5]為軟件平臺,搭建一款低成本、高性能、開源的遠程呈現(xiàn)移動機器人平臺,并實現(xiàn)其軟、硬件系統(tǒng)設(shè)計。
為了便于設(shè)計、安裝和維護,結(jié)合模塊化設(shè)計思想,移動機器人采用三輪機構(gòu),其中,前輪為主動輪,采用獨立驅(qū)動和轉(zhuǎn)向機構(gòu)于一體的結(jié)構(gòu)方式,后輪使用兩個固定從動輪。主動輪集成了獨立驅(qū)動、轉(zhuǎn)向和減震的功能。同時,通過2個增量式編碼器可實時測得驅(qū)動輪的驅(qū)動速度和轉(zhuǎn)向角度。下位機為Beaglebone Black開源控制器;上位機包括裝有ROS和Ubuntu系統(tǒng)的工控機和作為遠程控制平臺的可聯(lián)網(wǎng)PC機和遙桿,可實現(xiàn)遠程呈現(xiàn)和控制。機器人系統(tǒng)組成如圖1所示。
圖1 移動機器人系統(tǒng)組成
本研究的移動機器人運動學(xué)模型如圖2所示。
圖2 運動學(xué)模型
以移動機器人的兩后輪中心連線的中點O1作為參考點,結(jié)合文獻[6]和文獻[7]可將運動學(xué)模型描述為:
由此可知,只要知道移動機器人的初始位姿,就可通過遞推求得任意時刻移動機器人的位姿。
移動機器人的硬件系統(tǒng)主要由上位機和下位機兩部分組成,其硬件系統(tǒng)框圖如圖3所示。
圖3 硬件系統(tǒng)框圖
上位機使用工控機和PC機,工控機裝有Ubuntu操作系統(tǒng)和機器人操作系統(tǒng)(ROS),負責(zé)人機交互,便于進行傳感器數(shù)據(jù)采集與處理、機器人控制和軟件集成,同時,通過Kinect[8]視覺傳感器和單目攝像頭實現(xiàn)環(huán)境感知能力;PC機主要實現(xiàn)遠程控制和獲取機器人的臨場環(huán)境,采用任意可聯(lián)網(wǎng)的筆記本電腦即可。下位機主要由主控制器、驅(qū)動模塊、傳感器模塊和電源模塊組成。主控制器采用基于ARM-Cortex A8內(nèi)核的嵌入式處理器BeagleBone Black[9],主要負責(zé)控制指令的執(zhí)行和部分傳感器數(shù)據(jù)的采集;驅(qū)動模塊由MAXON RE40直流伺服電機和ELMO的SimplIQ系列的驅(qū)動器組成;傳感器模塊由安裝在同步帶輪的增量式旋轉(zhuǎn)編碼器和倍加福的 UB4000-F42-U-V15系列的超聲波傳感器組成。
移動機器人平臺軟件系統(tǒng)設(shè)計的好壞關(guān)系到移動機器人能否正常實現(xiàn)其功能,以及運行的穩(wěn)定性、實時性和魯棒性等[10]。如圖4所示,整個軟件系統(tǒng)可分為上位機和下位機。上位機軟件系統(tǒng)包括PC和工控機,其中工控機軟件系統(tǒng)是在Ubuntu環(huán)境下,基于ROS框架搭建,具有運動決策、圖像處理、數(shù)據(jù)處理等功能,PC作遠程呈現(xiàn)和控制;下位機通過SOCKET與上位機通信,主要接收運動指令和發(fā)送相關(guān)傳感器數(shù)據(jù),包括電機驅(qū)動、超聲波和編碼器數(shù)據(jù)獲取和傳輸。
圖4 軟件系統(tǒng)框圖
上位機中主要由PC機和工控機組成。工控機主要用于運動決策、圖像處理、數(shù)據(jù)處理;PC機與工控機通信后獲取圖像信息,用于遠程呈現(xiàn)和控制。軟件設(shè)計框架如圖5所示。
在運動決策中,考慮到移動機器人安全問題,初步采用2個超聲波傳感器進行避障,由于超聲波的采樣頻率比較低,當(dāng)速度超過0.4m/s時,就無法進行實時的避障,結(jié)合Kinect攝像頭的深度信息和超聲波數(shù)據(jù),進行分級減速,即可達到避障目的。其設(shè)計流程如圖6所示。
圖5 上位機軟件框架
圖6 避障流程圖
下位機主要用來接收運動指令和傳遞編碼器、超聲波數(shù)據(jù)。BeagleBone Black(BBB)控制器具有ADC、UART、I2C、SPI、PWM、GPIO等接口,這得BBB在機器人控制方面有很大優(yōu)勢,擬采用BBB作為下位機控制電機和傳感器數(shù)據(jù)采集的設(shè)備。由于BBB內(nèi)部裝有Debian系統(tǒng),為了合理利用資源、程序的可擴展性和減少數(shù)據(jù)傳輸?shù)难訒r誤差,采用線程的方式進行軟件設(shè)計。主線程主要運行套接字通訊程序,發(fā)送和接收相關(guān)數(shù)據(jù)、指令;4個子線程主要用作超聲波數(shù)據(jù)的采集和發(fā)送、編碼器數(shù)據(jù)的采集和發(fā)送、轉(zhuǎn)向電機控制和驅(qū)動電機控制。
由于本文設(shè)計的模塊化車輪結(jié)構(gòu)上具有耦合,當(dāng)存在轉(zhuǎn)向時,需要進行速度補償來消除這種耦合現(xiàn)象,其公式如式(3)所示。本研究采用脈沖控制方式,占空比始終為50%,其中b為轉(zhuǎn)向指令,DP為驅(qū)動脈沖周期,TP為轉(zhuǎn)向脈沖周期,DP'為速度補償后的驅(qū)動脈沖周期。
遠程圖像傳輸與控制是遠程呈現(xiàn)移動機器人的一項基本功能[11]。簡單的方法是采用雙ROS之間的通信機制來實現(xiàn)PC與工控機之間通信,該方法只需簡單的配置即可實現(xiàn)通信,但該方法局限于兩臺電腦都要裝有ROS和Linux系統(tǒng),且需在同一局域網(wǎng)內(nèi)才能實現(xiàn)通信。針對這類局限性,本文采用蒲公英VPN第三方軟件構(gòu)建異地虛擬局域網(wǎng),實現(xiàn)不同局域網(wǎng)內(nèi)移動機器人的遠程呈現(xiàn)和控制。
在圖像傳輸和運動指令收發(fā)中,采用C/S通信模式。服務(wù)器端和遠程客戶端均采用線程方式發(fā)送和接收數(shù)據(jù)。在圖像傳輸中,自定義傳輸類型,包括校驗碼、每秒幀數(shù)、圖像分辨率、圖像質(zhì)量等,這樣可避免圖像接收過程中的數(shù)據(jù)發(fā)生紊亂。
服務(wù)器端程序設(shè)計如圖7所示,其中,圖像傳輸線程主要通過OpenCV模塊進行攝像頭數(shù)據(jù)采集,以每秒24幀、分辨率調(diào)到640×480,則攝像頭傳輸視頻所需要的速率為1.2Mbps,為減小數(shù)據(jù)傳輸量,將壓縮成JPEG格式[12],然后按照自定義的傳輸類型進行打包編碼傳輸;指令收發(fā)線程接收運動指令,在ROS中轉(zhuǎn)化為自定義消息類型,然后利用“話題”的方式發(fā)布出去。遠程客戶端程序和服務(wù)器端類似,圖像傳輸線程主要接收圖像信息,解包、解碼后利用OpenCV播放;指令發(fā)送線程利用Pygame模塊獲取搖桿數(shù)據(jù),經(jīng)處理后發(fā)送給服務(wù)器端。
圖7 服務(wù)器端程序設(shè)計流程圖
本文設(shè)計的移動機器人主要實現(xiàn)其遠程呈現(xiàn)和控制。將工控機和Beaglebone Black控制器連接同一個局域網(wǎng),PC機連接4G網(wǎng)(保證PC與工控機在不同局域網(wǎng)內(nèi)),工控機和PC機上分別運行同一賬號的蒲公英VPN軟件后,在Beaglebone Black控制器運行下位機程序,工控機中通過ROS啟動所有節(jié)點和服務(wù)器端程序,PC機中運行遠程客戶端程序,即可實現(xiàn)遠程呈現(xiàn)和控制。
在進行移動機器人避障實驗中,采用Kinect的深度攝像頭,如圖8所示,對深度信息進行圖像處理后,當(dāng)檢測到1m范圍內(nèi)有障礙物信息并且障礙物面積達到給定值后,通過ROS生成一個指令消息并發(fā)送出去,在基于ROS的運動決策程序中,結(jié)合Kinect深度信息和超聲波數(shù)據(jù)實現(xiàn)相應(yīng)的避障決策。實驗測得,結(jié)合Kinect和超聲波基本可實現(xiàn)實時避障。
圖8 深度攝像頭測得障礙物輪廓
本研究中的一個運動指令包括轉(zhuǎn)向、驅(qū)動和運動觸發(fā)3個參數(shù),這3個參數(shù)由遙桿的兩個軸和一個按鈕組成。當(dāng)一個運動指令從遙桿發(fā)送出去時,各參數(shù)從發(fā)布到底層控制器接收所需要的時間主要包括遠程PC機與工控機以及工控機與底層控制器(BBB)之間指令傳輸時間。利用時間戳的方式,編寫一段測試程序,測出20次這兩段時間內(nèi)一個指令發(fā)布的延時時間,結(jié)果如圖9所示。由于在數(shù)據(jù)傳輸過程中網(wǎng)絡(luò)具有較大的波動,圖中顯示數(shù)據(jù)傳輸延時時高時低,可知一個指令發(fā)布最多需要53ms時間,基本滿足要求。
圖9 指令發(fā)布延時
本研究的圖像傳輸產(chǎn)生延時的環(huán)節(jié)包括:視頻采集與編碼、發(fā)送給遠程客戶端的傳輸、遠程客戶端的播放。其中,延時消耗最大的是視頻采集與編碼和遠程客戶端播放2個環(huán)節(jié),它們都涉及到編碼、解碼部分;至于發(fā)送給給遠程客戶端的傳輸過程屬于網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)與傳輸部分,耗時比較小,主要與網(wǎng)絡(luò)質(zhì)量和程序有關(guān),可采用TCP丟幀的方式減少長期的延時。采用精確到毫秒的計時器,測量在局域網(wǎng)內(nèi)圖像傳輸過程中的延時問題。結(jié)果如圖10所示。由于網(wǎng)絡(luò)波動影響,圖像傳輸延時在100ms~600ms之間,滿足視頻傳輸要求,能進行基本的雙向互動。不同局域網(wǎng)內(nèi),由于網(wǎng)絡(luò)帶寬和波動影響,測得圖像傳輸延時約為2s,僅適合單向觀看。
圖10 圖像傳輸延時
本研究結(jié)合Linux系統(tǒng)和開源機器人操作系統(tǒng)ROS,設(shè)計了一個低成本、可擴展、高性能的開源移動機器人。該移動機器人在同一局域網(wǎng)內(nèi)可實現(xiàn)低延時的遠程圖像傳輸和控制,同時結(jié)合超聲波傳感器和Kinect深度信息實現(xiàn)實時的避障。后續(xù)將在不同局域網(wǎng)內(nèi),針對降低圖像傳輸延時問題進行深一步的研究。