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