摘? 要:文章基于ROS平臺,采用激光雷達和里程計對室內環境信息進行采集,在服務機器人上實現了Gmapping和Hector SLAM兩種算法的地圖創建。通過實驗對比,Gmapping算法構建的地圖跟真實環境更為接近,在一般低特征環境下建圖效果優于Hector SLAM算法。
關鍵詞:機器人操作系統;地圖創建;建圖算法
中圖分類號:TP242? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)01-0160-03
Abstract:Based on the robot operating system,this paper uses lidar and odometer to collect indoor environmental information,and implements map creation of Gmapping and Hector SLAM algorithms on the service robot. Through experimental comparison,the map constructed by Gmapping algorithm is closer to the real environment,and the map is better than Hector SLAM algorithms in general low feature environment.
Keywords:robot operating system;map creation;map building algorithm
0? 引? 言
機器人學的進步與應用是20世紀自動控制最有說服力的成就。進入21世紀,機器人越來越深入生產、生活和社會的方方面面。服務機器人是機器人家族中的一個年輕成員,應用范圍十分廣泛。服務機器人要能為人類服務,就必須能在未知區域自由移動、自主導航,而對未知環境的精確建圖是一個非常關鍵的環節。因此,移動機器人建圖方法也成為人們研究的熱點之一。
機器人操作系統Robot Operating System,簡稱ROS,從本質上來說是一個十分適用于機器人編程的框架,這個框架把原本松散的零部件耦合在一起,為它們提供通信架構。ROS提供了能應用于不同的機器人的各種功能包,操作方便、功能強大,特別適用于機器人這種多節點多任務的復雜場景[1]。本文基于ROS平臺,采用激光雷達和里程計對室內環境信息進行采集,實現了Gmapping和Hector SLAM兩種算法的地圖創建。
1? 機器人地圖的分類
目前,機器人學中的地圖有四種表示方法:柵格地圖、特征地圖、直接表征地圖和拓撲地圖。
柵格地圖又被稱為占據柵格地圖,它實際上就是把環境劃分成一系列柵格,每個柵格用一個相應的占據變量來描述,該變量的值表示該柵格被占據的概率。特征地圖是用有關的點、直線、面等幾何特征來表示外部環境,建圖的數據存儲量和計算量都較小,但往往不能反映一些必須信息,常用于視覺vSLAM算法中。而直接表征地圖類似衛星地圖,它直接用傳感器讀取的數據經過簡單處理來構建機器人的位姿空間,省去了特征或柵格表示等中間環節,相對更加直觀。拓撲地圖最為抽象,它把室內環境表示為拓撲結構圖,圖中帶結點和連接線。其中的結點表示門、拐角、電梯等重要位置點,邊線表示結點間的連接關系。
相比之下,特征地圖容易漏掉一些障礙物信息,直接表征地圖的數據存儲量太大,拓撲地圖又不能用于SLAM。而柵格地圖既能表示環境中的很多特征信息,又不直接記錄來自于傳感器的原始數據,是空間和時間消耗的最優組合。因此,柵格地圖是目前機器人中最為廣泛使用的地圖,機器人可以用柵格地圖來進行路徑規劃和導航。
2? Gmapping建圖算法
Gmapping算法是目前應用最廣的2D SLAM方法,它基于RBPF粒子濾波算法,通過獲取激光雷達和里程計的信息來進行建圖[2]。為了獲取好的計算結果,RBPF算法需要大量的粒子來進行計算,這樣就會大大增加計算的復雜程度。因此,Gmapping算法并不適合構建大場景地圖。RBPF算法的重采樣過程存在粒子耗散問題。而Gmapping算法引入了自適應重采樣技術,改進了建議分布函數,并選擇性地重采樣粒子,減小了粒子耗散問題。Gmapping算法有效地利用里程計來提供機器人的位姿先驗,對激光雷達的頻率要求不高。Gmapping算法的整體流程圖如圖1所示。
在具體的實現過程中,Gmapping_SLAM軟件包位于ros-perception組織中的Slam_Gmapping倉庫中。其中的Slam_Gmapping是一個軟件包集Metapackage,它依賴了Gmapping,而算法的具體實現都在Gmapping軟件包中,該軟件包中的Slam_Gmapping程序就是在ROS框架下運行的一個SLAM節點。Gmapping的作用是根據激光雷達和里程計(Odometry)的信息,對環境地圖進行構建,并且對自身狀態進行估計[3]。Gmapping算法的輸入包括激光雷達和里程計的數據,而輸出為自身位置和地圖。
Gmapping_SLAM算法無回環,并且非常依賴里程計(Odometry),無法適用于空中飛行器及地面不平坦區域,但在長廊及低特征場景中建圖效果好。
3? Hector SLAM算法
Hector SLAM算法利用高斯牛頓的方法來解決scan-matching問題,獲得激光點集映射到已有地圖的剛體變換,為避免局部最小而非全局最優,使用多分辨率地圖[4]。Hector SLAM建圖法的魯棒性較好,對傳感器的要求較高。因為該算法無法利用里程計的信息,所以它需要激光雷達具有較高的更新頻率和較小的測量噪聲。Hector SLAM算法建圖的整體流程圖如圖2所示。
在實際的建圖過程中,需要機器人的運動速度控制在比較低的情況下,建圖的效果才會比較理想,這也是該算法沒有回環(loop close)的一個后遺癥。但是正是不需要里程計,使得空中飛行器和地面不平坦區域的建圖能夠得以實現[5]。
為對比分析兩種典型的移動機器人建圖方法的效果,我們用同一臺ROS移動機器人利用不同算法對實訓室進行了多次建圖,其建圖結果如圖3、圖4和圖5所示。
對比圖3~圖5三個地圖可以看出,在相同的激光雷達參數條件下,在平坦的復雜特征環境中,利用Gmapping算法構建的地圖跟真實環境最為接近,地圖比較完整,但是邊界不夠清晰,邊界線較粗;利用Hector SLAM算法快速移動機器人構建的地圖相對比較混亂,地圖不完整;利用Hector SLAM算法低速移動機器人構建的地圖也比較完整,邊界比較清晰,但是地圖所示的兩個房間之間偏移了一定角度,出現了錯位,跟真實環境存在一定偏差。
造成上述結果的原因是,Gmapping算法基于RBPF粒子濾波,因為RBPF粒子濾波比較成熟穩定,因而Gmapping算法也比較穩定,建圖效果一般比較好。但在比較復雜的特征環境中,例如本實驗的實訓室環境,粒子計算的復雜度大大增加,因此會出現邊界不夠清晰,邊界線較粗的情況。Hector SLAM算法利用高斯牛頓的方法來解決scan-matching問題,在機器人快速移動的時候,激光雷達的數據點不夠豐富,不能很好地進行迭代計算,因而會出現地圖不完整的情況。
5? 結? 論
通過機器人實地建圖,實驗結果表明,Gmapping算法比較成熟穩定,構建的地圖跟真實環境更為接近,在一般低特征環境下建圖效果明顯優于Hector SLAM算法。由于沒有使用里程計,Hector SLAM算法對激光雷達要求更高,或者必須低速移動機器人,才能獲得較好的建圖效果。
參考文獻:
[1] 楊亮,李文生,傅瑜,等.基于ROS的機器人即時定位及地圖構建創新實驗平臺研制 [J].實驗技術與管理,2017,34(8):99-103.
[2] 王權,胡越黎,張賀.基于ROS與Kinect的移動機器人同時定位與地圖構建 [J].計算機應用研究,2017,34(10):3184- 3187.
[3] 柳俊城,李迪,翁瀟文.基于激光信息的移動機器人SLAM研究 [J].自動化與儀表,2018,33(6):43-47.
[4] 陳卓,蘇衛華,安慰寧,等.移動機器人SLAM與路徑規劃在ROS框架下的實現 [J].醫療衛生裝備,2017,38(2):109-113.
[5] 高文研,平雪良,貝旭穎,等.兩種基于激光雷達的SLAM算法最優參數分析 [J].傳感器與微系統,2018,37(4):28-30+33.
作者簡介:廖春藍(1979-),女,漢族,四川宜賓人,專任教師,副教授,碩士,研究方向:服務機器人技術。