趙連強(qiáng) 柳國良 李鵬遠(yuǎn)
關(guān)鍵詞:AGV;路徑規(guī)劃;建圖;環(huán)境
本系統(tǒng)采用樹莓派4B處理器為主控制芯片,利用慣性測量單元(IMU)、輪式編碼器以及激光雷達(dá)作為導(dǎo)航數(shù)據(jù)源,進(jìn)行了相關(guān)的硬件設(shè)計。軟件部分基于機(jī)器人開源操作系統(tǒng)(Robot Operating System,ROS)平臺,對機(jī)器人的環(huán)境建模和路徑規(guī)劃進(jìn)行了研究。主要完成基于ROS的移動機(jī)器人平臺構(gòu)建、基于多傳感器信息融合的HectorSLAM環(huán)境地圖創(chuàng)建、基于A*算法和行為動力學(xué)方法的路徑規(guī)劃研究、基于ROS的移動機(jī)器人導(dǎo)航實驗等。
一、硬件結(jié)構(gòu)
(一)控制器
機(jī)器人控制器采用樹莓派4B,運(yùn)行Ubuntu Mate或Raspbian系統(tǒng),安裝ROS機(jī)器人操作系統(tǒng),作為機(jī)器人端ROS節(jié)點(diǎn)控制器。硬件組成框架圖如下:
樹莓派4B對比3B+升級明顯,主要功能包括高性能Cortex-A72 64位四核處理器,2路micro-HDMI端口支持分辨率高達(dá)4K的雙顯示屏,高達(dá)4KP60的硬件視頻解碼及4GB的RAM,雙頻2.4/5.0GHz無線局域網(wǎng),藍(lán)牙5.0,千兆以太網(wǎng),USB3.0和POE功能(通過單獨(dú)的POE HAT插件)。
樹莓派主要負(fù)責(zé)獲取激光雷達(dá)、IMU等傳感器數(shù)據(jù)并發(fā)布相應(yīng)話題來供虛擬機(jī)訂閱,并訂閱虛擬機(jī)發(fā)出的速度信號控制小車移動。
(二)電源供電
該機(jī)器人的電源為電池模塊,由兩塊鋰離子電池組成,內(nèi)置電池保護(hù)板。一塊8.4V 2400mAh給樹莓派、激光雷達(dá)、IMU、編碼器供電,一塊12V 6000mAh給減速電機(jī)供電。
(三)通信鏈路
Ros機(jī)器人主機(jī)以50ms為周期發(fā)布速度、位置等控制信息,樹莓派接收速度控制信號并將采集到減速電機(jī)的位置信息發(fā)布出去。
(四)電機(jī)參數(shù)
工作電壓:12V。
額定功率:4W。
額定電流:0.36A。
堵轉(zhuǎn)電流:3.2A。
減速比:1:30。
減速后空載轉(zhuǎn)速:366±26RPM。
額定扭矩:1KG·CM。
該電機(jī)全金屬減速箱,可靠性更高。
(五)傳感器
激光雷達(dá):激光雷達(dá)是以發(fā)射激光束來探測目標(biāo)位置、速度等特征參數(shù)的雷達(dá)系統(tǒng)。雷達(dá)向目標(biāo)發(fā)射激光束,將接收到的目標(biāo)回波與發(fā)射信號進(jìn)行比較,作適當(dāng)處理后,可獲得目標(biāo)的相關(guān)參數(shù),如目標(biāo)方位、距離、高度、速度、姿態(tài)以及形狀等,從而對周圍的物體進(jìn)行識別。
機(jī)器人上的激光雷達(dá)可以感知環(huán)境二維平面的深度信息。程序可以通過環(huán)境深度信息來判斷障礙物距離小車的遠(yuǎn)近借此來達(dá)到避障的目的。Ros中的slam開源包gmapping可以通過獲取激光雷達(dá)的數(shù)據(jù)對周圍環(huán)境建立地圖。通過對激光雷達(dá)數(shù)據(jù)的處理,可以實現(xiàn)對機(jī)器人的定位、計算機(jī)器人所在二維平面的姿態(tài)、計算機(jī)器人的速度等。
本機(jī)器人用的LDSl.5激光雷達(dá)是地面移動機(jī)器人常用的一種傳感器,其工作原理是用一個高速旋轉(zhuǎn)的激光測距探頭將周圍360。的障礙物分布狀況測量出來,形成障礙物輪廓的俯視二維點(diǎn)陣輸入ROS系統(tǒng)里。
供電電壓:5V。
測量距離:120~3500mm。
掃描頻率:1.8kHZ。
掃描角度:360°。
分辨率:1°。
陀螺儀和加速度計:IMU MPU6050分別為陀螺儀和加速度計提供了三個16位的ADC,將被檢測的模擬量轉(zhuǎn)化為可輸出數(shù)字量。傳感器的測量范圍是用戶可控的,陀螺儀的可測范圍為±250,±500,±1000,±2000。/秒(dps),加速度計的可測范圍為±2,±4,±8,±16g,可以精確跟蹤快速和慢速的運(yùn)動。通過對加速度計積分可以計算車速,對角速度積分可以計算小車的歐拉角。角速度積分算出的俯仰角、翻滾角可以通過重力加速度在車模x,y,z軸的分量來輔助校正。IMU在小車上可以比較精確地感知小車當(dāng)前的狀態(tài)。
二、建圖導(dǎo)航算法
(一)ROS的通信機(jī)制
ROS系統(tǒng)中的通信方式有三種,分別為話題(msg)、服務(wù)(SYV)和動作(action),其中話題屬于基本的發(fā)布/訂閱通信方式,適用于單個節(jié)點(diǎn)發(fā)布消息,一個或多個節(jié)點(diǎn)接受消息的情況;服務(wù)屬于實時獲取結(jié)果的情況,應(yīng)用于請求/響應(yīng)式的應(yīng)用環(huán)境,適用于基本功能的調(diào)用或者狀態(tài)的查看。
ROS是一種分布式軟件框架,節(jié)點(diǎn)可以運(yùn)行在不同的計算平臺上,節(jié)點(diǎn)之間以松耦合的方式進(jìn)行組合,通過Topic、Service進(jìn)行通信。ROS的分布式十分強(qiáng)大,在不同計算機(jī)上運(yùn)行不同的節(jié)點(diǎn)就如同在一臺計算機(jī)上運(yùn)行。
(二)SLAM建圖
SIAM按傳感器分類可以分為兩大類:視覺SLAM和激光SLAM。視覺SLAM對環(huán)境有較高要求,需要環(huán)境有豐富的紋理,且計算量大。視覺SLAM在重定位和場景區(qū)分上有著極大優(yōu)勢。激光SLAM對環(huán)境要求較低,計算量小,且激光雷達(dá)本身帶有幾何信息,建立出來的地圖更直觀精確。本次我們采用的是激光SLAM。
Gmapping是應(yīng)用最為廣泛的2D slam方法,主要是利用RBPF(Rao-Blackwellized Particle Filters)方法,所以需要了解粒子濾波的方法(利用統(tǒng)計特性描述物理表達(dá)式下的結(jié)果)。Gmapping在RBPF算法上做了提議分布和選擇性重采樣的改進(jìn),可以實時構(gòu)建室內(nèi)環(huán)境地圖,所需計算量較小且精度較高。相比Hector SLAM,其對激光雷達(dá)的頻率要求低、魯棒性高(在機(jī)器人快速轉(zhuǎn)向時Hector容易發(fā)生錯誤匹配,地圖發(fā)生錯位,主要原因是優(yōu)化算法容易陷入局部最小值);而相比Cartographer,在小場景地圖構(gòu)建時,不需要太多粒子且沒有回環(huán)檢測,計算量小且精度相差不大。隨著場景的增大所需粒子增加,每個粒子都會攜帶一幅地圖,所需的內(nèi)存和計算量都會增加,不適合構(gòu)建大場景地圖。因為沒有回環(huán)檢測,回環(huán)閉合時可能會造成地圖錯位,雖然增加粒子數(shù)目可以使地圖閉合但要以增加計算量和內(nèi)存為代價。所以Gmapping不能像cartographer那樣構(gòu)建大的地圖。優(yōu)點(diǎn):在長廊及低特征場景中建圖效果好;缺點(diǎn):依賴?yán)锍逃嫞╫dometry),無法適用不平坦區(qū)域;無回環(huán)。綜合以上考慮,本機(jī)器人采用gmapping算法。
(三)機(jī)器人的定位
里程計是機(jī)器人定位的重要組成部分。以小車的起始點(diǎn)建立坐標(biāo)系(odom坐標(biāo)系),記錄小車移動的里程,可以得到小車在odom坐標(biāo)系下的坐標(biāo),以此來推算出小車的位置。
1.激光里程計(rf20)
編碼器里程計和視覺里程計是自控中應(yīng)用較多的兩種里程計類型。電機(jī)編碼的里程計在低速情況下比較可靠,但不可避免地會出現(xiàn)因為輪子打滑等因素造成的漂移問題;而視覺里程計對于運(yùn)動估計問題來說是一個比較靈活的解決方案,能適用不同的機(jī)器人,缺點(diǎn)在于計算量大,占用較大資源空間,對傳感器要求較高。激光里程計吸收了上述兩種方法的優(yōu)點(diǎn),能快速而精確地從連續(xù)范圍掃描中估計激光雷達(dá)的平面運(yùn)動,且運(yùn)算成本低。表現(xiàn)取決于激光的分辨率和環(huán)境因素,轉(zhuǎn)換評估準(zhǔn)確。
rf20是一種快速而精確的方法,用于從連續(xù)范圍掃描中估計激光雷達(dá)的平面運(yùn)動。對于每個掃描點(diǎn),根據(jù)傳感器速度制定范圍流約束方程,并最小化所得幾何約束的魯棒函數(shù)以獲得運(yùn)動估計。與傳統(tǒng)方法相反,該方法不搜索對應(yīng)關(guān)系,而是以密集測距法的方式基于掃描梯度執(zhí)行密集掃描對準(zhǔn)。最小化問題以粗到精的方案解決以應(yīng)對大位移。
實際測試中,激光里程計在小車做直線運(yùn)動時比較準(zhǔn)確,但是在遇到長直道,激光雷達(dá)采集不到任何特征點(diǎn)的時候無法準(zhǔn)確地測量小車移動。由于激光雷達(dá)本身是在旋轉(zhuǎn)的,所以當(dāng)小車在做快速旋轉(zhuǎn)運(yùn)動的時候激光里程計測量出來的旋轉(zhuǎn)數(shù)據(jù)也有較大的誤差。
當(dāng)小車做在做直線運(yùn)動的時候,激光里程計是比較準(zhǔn)確的,但是當(dāng)小車在做旋轉(zhuǎn)運(yùn)動的時候,由于激光雷達(dá)自身的旋轉(zhuǎn),會導(dǎo)致激光里程計的旋轉(zhuǎn)不準(zhǔn)確。所以使用ekf功能包來將激光里程計的數(shù)據(jù)與IMU的數(shù)據(jù)融合出一個較為準(zhǔn)確的數(shù)據(jù)。
這個包用于評估機(jī)器人的3D位姿,使用了來自不同源的位姿測量信息,它使用帶有6D(3D position and 3Dori-entation)模型信息的擴(kuò)展卡爾曼濾波器來整合來自輪子里程計,IMU傳感器和視覺里程計的數(shù)據(jù)信息。基本思路就是用松耦合方式融合不同傳感器信息實現(xiàn)位姿估計。
實際測試中,在小車低速運(yùn)行時可以比較準(zhǔn)確地得到小車的位姿態(tài),但是由于IMU計算出來的速度受車模加速度的影響,在車模做頻繁的加減速運(yùn)動時,融合后的里程計消息還是有一定程度的漂移。
2.編碼里程計
為了精確地控制車模的速度,我們根據(jù)采集到的編碼器數(shù)據(jù)測量車子的速度,并且對這個速度積分可以得出車模運(yùn)行的里程。在通過IMU傳感器便可以計算出車模的里程。在實際應(yīng)用中更多的還是通過輪式里程計來進(jìn)行測量小車的位移。我們經(jīng)過測試,這樣計算出來的里程計信息有著較高的精度,使得車模在運(yùn)行時的定位精度有著很大的提升。
通過對里程計信息的推算可以得出小車在地圖上的位置,但是里程計定位會帶來很多誤差。amcl是根據(jù)已知地圖配合激光雷達(dá)的數(shù)據(jù)進(jìn)行定位,不存在誤差累計的問題,所以我們在里程計定位的基礎(chǔ)上引入了amcl功能包來進(jìn)行機(jī)器人在地圖上的輔助定位,可以消除里程計在運(yùn)動過程中的累計誤差。
三、路徑規(guī)劃
機(jī)器人在得到目標(biāo)點(diǎn)后,同樣會以傳感器作為眼睛,來獲取道路信息,并思考分析如何行走才不會與其他物體相撞,并用較少的時間正確到達(dá)目的地。這就稱之為路徑規(guī)劃。路徑規(guī)劃主要涉及了三大問題:明確起點(diǎn)與終點(diǎn),規(guī)避障礙物,盡可能做到路徑優(yōu)化。而我們根據(jù)對環(huán)境信息掌握的程度的不同,將機(jī)器人的路徑分為了兩個部分:全局路徑規(guī)劃與局部路徑規(guī)劃。
(一)全局路徑規(guī)劃
global_planner與navfn;兩種全局路徑規(guī)劃都擁有自己的插件,在move_base調(diào)用時只需要將插件名字以參數(shù)的形式傳人便可以直接調(diào)用。全局路徑規(guī)劃的算法主要包括A*與Dijkstra算法。
Dijkstra算法是典型的最短路徑算法,用于計算一個節(jié)點(diǎn)到其他所有節(jié)點(diǎn)問的最短路徑。其特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到終點(diǎn)為止。
A*算法是Dijkstra算法的升級版。f(n)=g(n)+h(n),其中估價值h(n)的選取是保證找到最優(yōu)解的條件。估價值≤實際值的情況,搜索的點(diǎn)數(shù)多,范圍大,效率低,但能得到最優(yōu)解。估價值>實際值的情況,搜索的點(diǎn)數(shù)少,范圍小,效率高,但不能保證得到最優(yōu)解。估價值與實際值越接近,估價函數(shù)取得就越好。
(二)局部路徑規(guī)劃
機(jī)器人在獲得目的地信息后,先經(jīng)過“全局路徑規(guī)劃”規(guī)劃出一條大致可行的路線;再調(diào)用局部路徑規(guī)劃器,根據(jù)costmap的信息及路線規(guī)劃出在局部時做出的具體行動策略。
DWA(Dynamic Window Approach)算法:其原理是在速度空間(v,w)中采樣多組速度,并模擬出這些速度在一定時間內(nèi)的運(yùn)動軌跡,再通過評價函數(shù)對這些軌跡打分,選擇出最優(yōu)的速度發(fā)送給下位機(jī)。ROS中主要使用了DWA算法。每當(dāng)move_base處于規(guī)劃狀態(tài)時,就調(diào)用DWA算法,選擇出最優(yōu)的速度指令,發(fā)送給機(jī)器人底盤執(zhí)行。
四、結(jié)論
本文研究了基于ROS平臺上的室內(nèi)環(huán)境下的一種自動規(guī)劃路徑的AGV倉儲運(yùn)輸小車的設(shè)計。通過對算法的改進(jìn),能夠滿足一般環(huán)境下的運(yùn)輸要求。