李震 張國忠 謝峻松 賴素暉 馬健鑫
摘 要:本文以室內展覽廳移動機器人的導航功能為研究背景,以機器人操作系統(Robot Operating System, ROS)為研究平臺,針對移動機器人在室內場館的定位、建圖及導航問題進行研究。在研究過程中,使用了同步定位與地圖構建(simultaneous localization and mapping,SLAM)算法之一的GMpping,實現了機器人定位與建圖的功能,隨后根據機器人操作系統的導航功能包組件完成了多點導航功能。根據最終的實景測試,驗證了本文實現移動機器人導航功能的有效性。
關鍵詞:機器人操作系統(ROS);同步定位與地圖構建(SLAM);多點導航
DOI:10.16640/j.cnki.37-1222/t.2019.22.102
1 機器人SLAM及導航算法的研究現狀
目前針對移動機器人導航的研究,主要包括GPS和基于增量式地圖構建的方法,其中GPS在信號較差以及狹小的室內難以滿足要求,故需借助移動機器人自身傳感器對周圍環境信息進行感知、構建地圖,并利用地圖進行導航。目前有關SLAM技術的研究主要包括視覺SLAM和激光雷達SLAM兩種,視覺SLAM對光線有較高要求,考慮室內場所光線紋理問題,本文選用激光雷達進行導航。在未來,視覺、雷達及GPS的多傳感器融合是主要研究趨勢。
2 自主導航算法
2.1 本文主要解決問題
本文主要解決移動機器人領域中涉及的三大問題:定位、建圖和導航,為移動機器人構建出室內展覽廳的2D地圖,并利用所構建的地圖進行多點路徑規劃,完成導航功能。
2.2 SLAM算法的計算步驟
基于激光雷達的主流SLAM算法包括GMapping,Hector_slam和cartographer等,GMapping算法是目前室內場所中主要使用的一種SLAM算法,機器人在調用GMapping時需結合機器人底座的里程計信息,以保證良好的定位與建圖功能。Hector_slam相比Gmpping而言不需借助機器人的里程計信息,故要求精度較高的激光雷達進行準確定位和建圖,且更適合在地面顛簸的路段或者無人機升降中使用。本文選用GMapping算法對移動機器人進行地圖構建,該算法的步驟如下。
步驟1:在初始狀態下,在機器人周圍放置粒子用來估計機器人的初始位姿。通常放置N個粒子,N由場地面積與地形確定,經驗值通常為數百,每個粒子的權重記為1/N。
步驟2:根據所描述的機器人運動系統模型,在移動量(機器人的里程計信息)的基礎上加上噪聲,通過該方法移動各個粒子。
步驟3:基于所測量到的傳感器信息,計算每個粒子的概率,并且通過反映這個值來更新每個粒子的權重值。
步驟4:利用所有粒子的位置、方向和權重值來計算加權平均值、中央值和最大權重的粒子值,并用這些估計機器人的姿態。
步驟5:去除權重小的粒子,以權重大的粒子為中心創建繼承現有位姿信息特性的新粒子,保持粒子數N不變,并重復步驟2。
GMapping算法在ROS中調用時需接收到傳感器信息,并將傳感器信息/scan輸入至GMapping進程中,同時鍵盤控制節點robot_teleop將速度與位置信息輸入機器人控制核心節點robot_core,里程計(odom)接收到控制信息后發布到底座(base_link)的tf變換信息/tf,并傳送至GMpping核心節點中。GMpping節點主要發布相關的地圖信息,該地圖為占據柵格地圖。在地圖服務節點中保存的地圖信息包括pgm格式及yaml格式,pgm格式可將地圖用黑白灰三色可視化,其中白色代表自由移動區域,黑色代表不可移動區域(如墻壁),灰色代表未被測出區域,yaml格式則使用描述型程序語言存儲地圖的信息,描述了包括pgm格式中的黑白灰區域以及地圖分辨率等相關參數,在導航組件調用時會讀取yaml格式中的相關地圖信息,GMapping的輸入輸出如圖1所示。
2.3 move_base組件模型
導航部分的實現主要使用ROS提供的move_base組件,如圖2所示。正中間的節點move_base主要用于路徑規劃,在move_base中包含了global_planner,local_planner等插件,這些插件已在ROS中被集成好,可直接通過指令調用。amcl與map_server為可選用指令,其中amcl為蒙特卡羅自適應定位節點,可以通過機器人邊導航邊加載地圖,map_server則可以使用SLAM中保存好的柵格地圖進行導航。sensor transformer為傳感器數據的坐標變換,即機器人底座到世界地圖的變換,odometry則為機器人的里程計信息,sensor source為傳感器提供的數據。輸出的數據cmd_vel為速度(線速度和角速度)指令,控制機器人底盤移動。
move_base組件中的路徑規劃算法類型主要分為全局路徑規劃和局部路徑規劃。全局路徑規劃中使用A*算法,由global_planner插件提供,A*算法主要結合了Dijkstra和最佳優先搜索(BFS)算法,Dijktra算法主要使用傳統的目標點遍歷搜索的方法,效率較低且容易產生較多臨時路徑;而BFS算法可直接導向目標點,兩種算法結合后形成的A*算法既保證了搜索的高效性也同時具備了路徑規劃的準確性[2]。局部路徑規劃中主要使用DWA算法,在move_base組件中對DWA算法也進行了進一步優化,傳統的DWA中機器人被認為是一個質點,未考慮其形狀大小,而在move_base中提供的costmap組件將障礙物均擴大一圈可以充分實現局部避障。在全局路徑規劃與局部路徑規劃的結合下,機器人可完成對目的地坐標的自主路徑規劃,同時也可規避局部障礙物,保證移動機器順利正常完成導航功能。
3 實驗分析
在以樹莓派為上位機,上位機內裝有Ubuntu系統及ROS的移動機器人中,配置與本文相關的SLAM及導航算法,在ROS的Rviz工具中運行測試,在實際場景下對本文進行驗證。
首先移動機器人通過GMpping算法加載環境地圖,在rviz中獲取地圖坐標,所獲得的三個坐標為(0.708,-0.819,0.00247)、(1.58,-1.59,0.00247)、(1.96,-1.75,0.00247)。其中第一個點為原點,第二與第三個點為目標點。使用move_base插件調用地圖,在配置文件中將目標點輸入,此時移動機器人可根據所給出的三個坐標點進行路徑規劃并自主移動探索地圖,過程如圖3a~c所示。
經測試,本文算法可實現移動機器人室內導航功能,在面積為20m*20m的區域中,可保證長度和寬度在0.6m誤差范圍內。該導航系統為后續進行智能語音和機器視覺的開發奠定了基礎,從而進一步提高機器人的智能效果。
參考文獻:
[1]壽佳鑫,張志明,蘇永清,鐘政.基于ROS和激光雷達的室內移動機器人定位和導航系統設計與實現[J].機械與電子,2018,36(11):76-80.
[2]祝甜一.基于ROS的自主式救援機器人SLAM和導航系統研究[D].南京:東南大學,2015.
作者簡介:李震(1996-),男,山東棗莊人,本科在讀,研究方向:SLAM與機器人。