鐘海興,許倫輝,郭雅婷
(華南理工大學(xué) 土木與交通學(xué)院,廣州 510641)
目前,我國市場已連續(xù)2年成為世界第一大機器人市場,伴隨著“十三五”《機器人產(chǎn)業(yè)發(fā)展規(guī)劃(2016—2020 年)》《中國制造 2025》的相繼發(fā)布,我國機器人領(lǐng)域正在蓬勃發(fā)展。在滿目琳瑯的機器人種類中,其中工業(yè)機器人和服務(wù)機器人被普遍認(rèn)為是實現(xiàn)創(chuàng)新發(fā)展、推動我國經(jīng)濟(jì)轉(zhuǎn)型的重點對象。但隨著技術(shù)需求的不斷提高,移動機器人領(lǐng)域的不足之處顯現(xiàn)的越發(fā)明顯。
經(jīng)過調(diào)研,在實際工廠環(huán)境中,大多數(shù)搬運機器人采用電磁導(dǎo)航、磁帶導(dǎo)航和慣性導(dǎo)航等方式,這些導(dǎo)航系統(tǒng)都存在著靈活性差,易受干擾等缺點。而激光導(dǎo)航作為近幾年新興的移動機器人導(dǎo)航技術(shù),其因其高度靈活性,精度高,移動速度快等優(yōu)點而成為工業(yè)移動機器人領(lǐng)域的重要研究方向[1-3]。
當(dāng)前國內(nèi)在激光導(dǎo)航下控制系統(tǒng)研究相對不多。在此,基于Firefly的RK-3399六核64位高性能開源平臺,開發(fā)基于機器人操作系統(tǒng)ROS的激光導(dǎo)航移動機器人控制系統(tǒng),以實現(xiàn)移動機器人的無線通訊、激光無軌導(dǎo)航等功能。
激光導(dǎo)航移動機器人控制系統(tǒng)的硬件總體框圖如圖1所示。
該控制系統(tǒng)采用Firefly-RK3399開發(fā)板作為核心控制板。RK3299核心為六核64位“服務(wù)器級”Cortex-A72處理器,該芯片使用了雙“服務(wù)器級”核Cortex-A72+四核Cortex-A53的大小核架構(gòu),頻率高達(dá)2.0 GHz,新的內(nèi)核相比以前的Cortex-A15/A17/A57核心設(shè)計可以提供高達(dá)100%的性能提升。該開發(fā)板還支持 2.4 GHz/5 GHz雙頻 Wi-Fi,Bluetooth 4.1和千兆以太網(wǎng),為機器人網(wǎng)絡(luò)通訊提供通訊基礎(chǔ)。
圖1 硬件總體框圖Fig.1 Hardware block diagram
機器人平臺利用現(xiàn)有的自動導(dǎo)引運輸車AGV(automated guided vehicle)平臺作為移動機器人的基礎(chǔ)。該AGV具有2個驅(qū)動輪,電機為驅(qū)動一體式電機,通過給定模擬信號可以驅(qū)動電機運轉(zhuǎn),讀取電機返回的脈沖信號,可以計算出電機的轉(zhuǎn)速和里程。AGV配備STM32驅(qū)動控制板驅(qū)動電機、紅外障礙物傳感器等裝置。AGV通過STM32驅(qū)動控制板的233串口接口與RK3399開發(fā)板進(jìn)行通訊。AGV搬運機器人平臺如圖2所示。
圖2 AGV搬運機器人平臺實物Fig.2 AGV transport robot platform
所用激光雷達(dá)選用上海思嵐的RPLIDAR A2激光雷達(dá)(如圖3所示)。該雷達(dá)可以實時對周圍環(huán)境360°全方位掃描測距檢測,獲取周圍環(huán)境的環(huán)境信息;測量半徑為18 m,最大測量頻率為8000 Hz。該雷達(dá)通過232串口通訊與RK3399開發(fā)板進(jìn)行通訊,接收來自開發(fā)板的啟動信號,以及采集激光信號轉(zhuǎn)換成數(shù)據(jù)信息傳輸?shù)絉K3399開發(fā)板上。
圖3 RPLIDAR A2激光雷達(dá)實物Fig.3 RPLIDAR A2 laser radar
采用ROS構(gòu)建軟件系統(tǒng),如圖4所示。所構(gòu)建的軟件系統(tǒng)根據(jù)功能劃分,包括底盤驅(qū)動、遠(yuǎn)程控制、局部導(dǎo)航以及全局導(dǎo)航等4個部分。
圖4 軟件系統(tǒng)Fig.4 Software system
1.2.1 底盤驅(qū)動
底盤驅(qū)動控制節(jié)點是機器人軟件系統(tǒng)的底層驅(qū)動部分,也是機器人移動的基礎(chǔ)。
在此,由于機器人的結(jié)構(gòu)為前驅(qū)式結(jié)構(gòu),機器人接收導(dǎo)航控制節(jié)點下發(fā)的速度命令,然后把速度分解為左右電機的速度,STM32電機驅(qū)動控制器,接收到給定左右電機的速度信息后,經(jīng)過信號的線性變換得到給定電機的DA信號,從而控制電機的速度。而機器人的行進(jìn)方向則由電機的差速給定進(jìn)行控制。電機轉(zhuǎn)動返回電機運轉(zhuǎn)的脈沖信號,由于電機旋轉(zhuǎn)一周所得到的脈沖數(shù)固定,并且可以測量底盤車輪直徑,則機器人前進(jìn)1 m的脈沖數(shù)數(shù)學(xué)表達(dá)式為
式中:Ne為機器人前進(jìn)1 m所得的電機脈沖數(shù);n為電機旋轉(zhuǎn)一周的固定脈沖數(shù);d為車輪直徑。
通過檢測信號幀之間的脈沖差Δi,信號幀之間的時間為Δt,Δt時間內(nèi)機器人行進(jìn)的距離為Δi/Ne,則t時間內(nèi)機器人行進(jìn)的距離為
計算出的里程計數(shù)據(jù)通過ROS發(fā)布后,rviz可視化界面上可以觀察到機器人的移動。
1.2.2 局部導(dǎo)航
此機器人的局部導(dǎo)航控制主要采用DWA(dynamic window approach)算法實現(xiàn)平面上移動機器人的局部導(dǎo)航,WA算法原理是:在速度空間(v,w)中采樣多組速度,并模擬這些速度在一定時間內(nèi)的運動軌跡,再通過一個評價函數(shù)對這些軌跡打分,最優(yōu)的速度被選擇出來發(fā)送到底盤驅(qū)動節(jié)點。
導(dǎo)航的模塊流程如下:①初始化 為DWA算法做準(zhǔn)備,加載參數(shù)和實例化對象等;②采樣速度樣本 計算出需要評價的速度樣本;③樣本評分對計算出的速度樣本進(jìn)行逐一評分,記錄下評價最高的樣本;④發(fā)布路徑 發(fā)布得到的最佳路徑策略。
1.2.3 全局導(dǎo)航
ROS系統(tǒng)平臺得到廣泛應(yīng)用的一個重要原因,是它的代碼復(fù)用性高,對很多驅(qū)動代碼都具有良好的支持,并且統(tǒng)一了機器人數(shù)據(jù)傳輸?shù)母袷?,可以讓開發(fā)者復(fù)用官方或者他人的代碼或者修改他人代碼進(jìn)行自身的調(diào)試。因此,在驅(qū)動激光雷達(dá)運行的時候,無需開發(fā)者自身重新開發(fā)或者移植驅(qū)動,只需復(fù)用驅(qū)動代碼即可,使得開發(fā)者能夠在短時間內(nèi)搭建出可用的并且性能良好的激光雷達(dá)檢測模塊。
全局導(dǎo)航是實現(xiàn)機器人自主導(dǎo)航的重要組成部分,通過激光雷達(dá)實時檢測周圍環(huán)境的數(shù)據(jù),結(jié)合已生成的室內(nèi)激光地圖,采用A*算法規(guī)劃出全局通行規(guī)劃路徑。A*算法是一種啟發(fā)式全局規(guī)劃算法,根據(jù)估價函數(shù)來搜尋較優(yōu)路徑,既參考了從起點到當(dāng)前節(jié)點的代價值,又參考了當(dāng)前節(jié)點到目標(biāo)節(jié)點的啟發(fā)值[1]。
A*算法的核心在于選擇合適的估價函數(shù),估價函數(shù)為
式中:f(k)為節(jié)點 k 的估價函數(shù);g(k)為從初始節(jié)點到k節(jié)點的實際代價;h(k)為啟發(fā)函數(shù),為節(jié)點k到目標(biāo)節(jié)點最短路徑的估計代價。
在機器人學(xué)中,常使用曼哈頓距離、歐幾里得距離和切比雪夫距離來估計啟發(fā)函。經(jīng)過試驗對
A*算法的運算流程如下:
A*算法首先定義2個鏈表,OPEN表 (簡稱O表)和CLOSE表(簡稱C表)。O表內(nèi)存放等待考察的節(jié)點;C表內(nèi)存放已評估過的節(jié)點。在算法開始時,O表內(nèi)只包含起點一個節(jié)點;C表只包含障礙物的節(jié)點。
步驟1 讀取移動機器人的起始點以及地圖內(nèi)障礙點,設(shè)定機器人運動的目標(biāo)點;
步驟2 初始化O表和C表,并定義為空;
步驟3 將起始點賦值給O表,障礙點賦值給C表;
步驟4 尋找父節(jié)點(剛開始為起始點)周圍可以到達(dá)的點,將它們放入O表,并鏈接父節(jié)點(如起始點);
步驟5 把父節(jié)點從O表中刪除后放入C表;
步驟6 計算O表中各點估價函數(shù)的值,選取f(k)值最小的點,將該點作為路徑規(guī)劃的下一個點,從O表中刪除并放入C表中;
步驟7 計算該點周圍可以到達(dá)的點,如這些點不在O表內(nèi),則將它們加入O表,并鏈接父節(jié)點;如果某點已經(jīng)在O表內(nèi),檢查用新路徑到達(dá)該點,是否g(k)的值更低,更低則更換路徑,否則不做改動;
步驟8 算法重復(fù)運行步驟6和步驟7,直至找到目標(biāo)點或O表為空,算法結(jié)束運算。
使用A*算法進(jìn)行路徑規(guī)劃的示例,如圖5所示。比,在此選取歐幾里得距離作為啟發(fā)函數(shù)h(k)。歐幾里得距離為
圖5 A*算法全局導(dǎo)航規(guī)劃示例Fig.5 Example of A*global navigation planning algorithm
在AGV平臺上采用該系統(tǒng)并進(jìn)行試驗。試驗平臺整體如圖6所示。
圖6 AGV試驗平臺實物Fig.6 AGV experimental platform
該移動機器人放置于室內(nèi),并利用激光雷達(dá)事先對室內(nèi)環(huán)境進(jìn)行激光掃描,構(gòu)建室內(nèi)的激光掃描地圖,上位機通過局域網(wǎng)通訊,實時觀測移動機器人的地圖構(gòu)建過程,并且向AGV機器人發(fā)送控制命令控制AGV機器人的移動,以便掃描整個室內(nèi)場地。掃描所得的室內(nèi)激光掃描地圖如圖7所示。
圖7 室內(nèi)環(huán)境總體激光掃描地圖Fig.7 Indoor environment overall laser scanning map
場景與掃描地圖進(jìn)行對比。試驗場景和相對應(yīng)的激光掃描地圖如圖8所示。
圖8 試驗場景以及相對應(yīng)的激光掃描地圖Fig.8 Experimental scene and corresponding laser scanning map
試驗場地為70 m×10 m的室內(nèi)環(huán)境,通過腳本設(shè)定多個目標(biāo)點,使移動機器人按既定計劃到規(guī)定目標(biāo)點打卡,到達(dá)目標(biāo)點時停止1 min記錄數(shù)據(jù)后,繼續(xù)前進(jìn)至下一目標(biāo)點,直到到達(dá)最終目的地。在移動機器人行走過程中,記錄下到達(dá)每個目標(biāo)點的位置偏差和航向角偏差,測量數(shù)據(jù)見表1。
表1 室內(nèi)行駛試驗的測量數(shù)據(jù)Tab.1 Measurement data of indoor running experiment
由表可知,目標(biāo)點1~6分布在左側(cè)的直線走廊上,但是由于走廊路口場景的相似性,移動機器人的定位算法適應(yīng)性較差,在走廊場景下只利用了里程計進(jìn)行定位和行駛,但由于里程計存在的客觀誤差,導(dǎo)致位置偏差不斷累積,但是航向角基本上沒有太大的偏差;目標(biāo)點7~9分布在轉(zhuǎn)彎過道處,此時由于移動機器人移動時可利用的環(huán)境特征增多,定位算法工作良好,位置誤差在不斷修正,但由于行駛時轉(zhuǎn)彎角度的關(guān)系,航向角偏差增大;目標(biāo)點10~12的數(shù)據(jù)結(jié)果也與1~6的試驗數(shù)據(jù)結(jié)果相似,由于走廊路口場景的相似,地圖定位特征減少,定位算法工作不佳,里程計的客觀誤差導(dǎo)致位置偏差不斷累積,航向角無太大偏差。
文中提出并設(shè)計了一種激光導(dǎo)航移動機器人控制系統(tǒng),并進(jìn)行了室內(nèi)大范圍場景下的試驗。試驗結(jié)果表明,該系統(tǒng)可以實現(xiàn)室內(nèi)場景下的激光無軌導(dǎo)航,并通過局域網(wǎng)連接上位機實時監(jiān)控AGV搬運機器人的實時位置,可通過設(shè)定任務(wù)腳本提前設(shè)定搬運機器人的搬運任務(wù),以達(dá)到自動搬運的目的。該系統(tǒng)可以適用于工廠內(nèi)搬運AGV機器人系統(tǒng)改造和移植,有較好的實用性和經(jīng)濟(jì)價值。