李賀喜,李富強(qiáng),牛童立,李 康,杜邊境
(中國礦業(yè)大學(xué)徐海學(xué)院,江蘇 徐州 221000)
從20世紀(jì)機(jī)器人誕生以來,經(jīng)過多年的技術(shù)革新與發(fā)展,機(jī)器人技術(shù)由傳統(tǒng)的只能在預(yù)設(shè)的熟悉環(huán)境中進(jìn)行機(jī)械性重復(fù)運(yùn)動(dòng)的工業(yè)機(jī)器人,轉(zhuǎn)變?yōu)榫哂凶灾鞫ㄎ?、自主建圖、自動(dòng)導(dǎo)航的智能機(jī)器人。在未來,無人駕駛汽車、巡檢機(jī)器人等設(shè)備的發(fā)展都需要用到機(jī)器人的路徑規(guī)劃與自主導(dǎo)航功能。因此,移動(dòng)機(jī)器人的自主導(dǎo)航能力至關(guān)重要。本文利用SLAM技術(shù)實(shí)現(xiàn)移動(dòng)中的不斷自主定位,同時(shí)把對(duì)環(huán)境的感知建立起全局的地圖,移動(dòng)機(jī)器人便可以通過算法制定最優(yōu)的路徑。
Robot Operating System簡稱ROS,是一個(gè)機(jī)器人軟件平臺(tái)。ROS在機(jī)器人項(xiàng)目開發(fā)的過程中提供了大量的實(shí)用工具和package,憑借開源優(yōu)勢,除了ROS官方發(fā)布的功能包之外,在多個(gè)互聯(lián)網(wǎng)平臺(tái)上有全球的機(jī)器人軟件開發(fā)者發(fā)布的特殊功能的包,為其他機(jī)器人開發(fā)者節(jié)約了大量的時(shí)間和精力,大大提高了機(jī)器人開發(fā)效率[1]。
SLAM(Simultaneous Localization and Mapping)其意為即時(shí)定位與建圖技術(shù)。將一個(gè)機(jī)器人放置于完全陌生的環(huán)境中,可以通過SLAM技術(shù)將環(huán)境中的地圖在移動(dòng)的過程中建立出來,同時(shí)定位自身所處位置。目前,有以下幾種主流的SLAM算法:Hector SLAM、Gmapping、Karto SLAM、Cartographer[2]。
Gmapping是基于濾波SLAM框架的開源算法,也是目前應(yīng)用最多的2D SLAM方法,利用激光點(diǎn)云數(shù)據(jù)結(jié)合機(jī)器人的位姿進(jìn)行定位建圖。建立精確柵格地圖的過程中會(huì)使用到RBPF(Rao-Blackwellised Particle Filter)粒子濾波算法[3],將定位和建圖過程分離,先定位再建圖。Hector-SLAM算法在建圖過程中會(huì)因移動(dòng)機(jī)器人的運(yùn)行速度過快或者環(huán)境中特征點(diǎn)較少等因素,出現(xiàn)定位不準(zhǔn)確,建圖過程中產(chǎn)生“打滑”現(xiàn)象[4]。而Gmapping與Hector SLAM的重要區(qū)別是Gmapping加入了里程計(jì)數(shù)據(jù),避免了“打滑”現(xiàn)象,并且對(duì)激光雷達(dá)頻率要求低。因此Gmapping算法比Hector SLAM算法穩(wěn)定、建圖效果好。
綜合考慮實(shí)際情況,本項(xiàng)目采用了Gmapping方法作為移動(dòng)機(jī)器人的定位建圖的策略。主要考慮兩個(gè)方面:①機(jī)器人安裝的是低成本激光傳感器,Gmapping算法對(duì)激光傳感器頻率要求低,并且機(jī)器裝有里程計(jì)傳感器可以輔助Gmapping算法定位建圖。②仿真和應(yīng)用場景面積相對(duì)較小,依據(jù)Gmapping建圖的基本原理,在構(gòu)建小場景地圖時(shí)所需計(jì)算量小并且精度高,因此使用Gmapping算法是比較適合的。
首先通過終端打開Gazebo軟件,在指令中執(zhí)行roslaunch命令打開Gazebo并非直接打開,這樣的區(qū)別在于用roslaunch命令打開后Gazebo的運(yùn)行就包含了一個(gè)通信節(jié)點(diǎn),而當(dāng)Gazebo的啟動(dòng)信息放置在launch文件中作為節(jié)點(diǎn)時(shí),可以把后續(xù)的運(yùn)行與之結(jié)合起來,避免其脫離整個(gè)工程而單獨(dú)存在,在后續(xù)的執(zhí)行過程中可以把多個(gè)節(jié)點(diǎn)置于同一個(gè)launch文件中,這樣就可以通過單一launch文件的運(yùn)行指令啟動(dòng)多個(gè)節(jié)點(diǎn),此方式極大地簡化了整個(gè)項(xiàng)目各個(gè)部分。結(jié)合Gazebo的強(qiáng)大仿真能力,我們根據(jù)項(xiàng)目實(shí)際情況,自建仿真環(huán)境,預(yù)設(shè)了仿真場景。
模型的創(chuàng)建有兩種方法:第一種是直接用代碼寫一個(gè)URDF的模型文件,以此來描述模型的特征。URDF文件是一種特殊的xml文件格式,是一種描述型文件,通常用于機(jī)器人模型的創(chuàng)建。通過URDF文件建立機(jī)器人模型要對(duì)各部分概念有一定的認(rèn)識(shí),首先是link和joint,link之間的連接通過joint實(shí)現(xiàn),其類似與機(jī)器人的關(guān)節(jié)的存在,而link的放置還需要設(shè)置位置信息和形狀信息,這樣看來link并非是質(zhì)點(diǎn)的存在,所以對(duì)于link的描述不僅需要3個(gè)維度的坐標(biāo)信息,還要有其各個(gè)維度的旋轉(zhuǎn)信息,也即繞x軸的偏轉(zhuǎn)(yaw)、繞y軸的俯仰(pitch)、繞z軸的滾動(dòng)(roll),同時(shí)此處的偏轉(zhuǎn)信息使用的是弧度進(jìn)行的描述。在link的放置中要避免產(chǎn)生重合,所以又引入了collision標(biāo)簽對(duì)其進(jìn)行約束。第二種是通過3D建圖軟件solideworks作出機(jī)器人模型的形狀,然后導(dǎo)出成URDF文件。綜合考慮后,選用代碼實(shí)現(xiàn)了機(jī)器人模型的創(chuàng)建。
前文中成功完成了Gazebo中場景模型的搭建,以下將在自建的環(huán)境中進(jìn)行SLAM算法的實(shí)現(xiàn),在程序的運(yùn)行中為了清楚地了解各個(gè)節(jié)點(diǎn)的話題訂閱以及發(fā)布情況,使用ROS系統(tǒng)指令rqt_graph可以查看各個(gè)節(jié)點(diǎn)之間的通信聯(lián)系。軟件會(huì)自動(dòng)生成節(jié)點(diǎn)間關(guān)系圖。
節(jié)點(diǎn)關(guān)系圖可以輔助解決調(diào)試過程中的問題,在圖中可以清楚地看到各個(gè)節(jié)點(diǎn)的運(yùn)行情況和各個(gè)節(jié)點(diǎn)之間的話題訂閱關(guān)系,在調(diào)試中出現(xiàn)問題可以快速定位是否有節(jié)點(diǎn)訂閱信息出錯(cuò)以及是否有節(jié)點(diǎn)缺失。
通過鍵盤控制指令讓turtlebot在場景中行進(jìn),在鍵盤控制時(shí)需要注意讓鍵盤控制指令運(yùn)行的所在終端始終浮于rviz的上方,否則無法激活鍵盤控制。確??刂茩C(jī)器人在預(yù)設(shè)場景中得到充分的運(yùn)動(dòng),否則建圖將不完整,影響建圖效果。最終形成仿真中機(jī)器人在場景充分運(yùn)動(dòng)后生成的2D平面地圖,成功完成了機(jī)器人在仿真環(huán)境中Gmapping方法的建圖與定位。
本文對(duì)ROS以及SLAM技術(shù)作了簡單的闡述,深入介紹了Gmapping方法的基本特征、適應(yīng)場景;運(yùn)用Gazebo工具進(jìn)行了仿真實(shí)現(xiàn),介紹了仿真模型的搭建過程、仿真模型的URDF文件編寫、運(yùn)行turtlebot在自建的場景中完成了建圖與定位工作,即SLAM算法的仿真實(shí)現(xiàn)。對(duì)于不同功能的智能移動(dòng)機(jī)器人,自主導(dǎo)航都是其根本所在,在載體平臺(tái)依據(jù)需求加上不同的傳感器則可實(shí)現(xiàn)所需要求。在未來,移動(dòng)機(jī)器人的SLAM技術(shù)將進(jìn)一步優(yōu)化并將更加廣泛應(yīng)用到人們的日常生活中,更好地服務(wù)于人類社會(huì)。