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