Gmapping算法是一種基於RBPF(Rao-Blackwellized Particle Filters)的SLAM(同時定位與地圖構建)算法,主要用於構建二維柵格地圖。其特點如下:
改進提議分布。Gmapping考慮了運動(里程計)信息和最近的一次觀測(雷射)信息,使得提議分布更加精確,從而更接近目標分布。
選擇性重採樣。通過設定閾值,只有在粒子權重變化超過閾值時才執行重採樣,這樣可以大大減少重採樣的次數。
Gmapping的優點包括:
能夠實時構建室內環境地圖,特別是在小場景中,計算量少且地圖精度較高。
與Hector SLAM相比,對雷射雷達頻率的要求較低,且魯棒性較高;與Cartographer相比,在構建小場景地圖時,Gmapping不需要太多的粒子,沒有迴環檢測,因此計算量小於Cartographer,而且精度相差不大。
有效利用車輪里程計信息,這是Gmapping對雷射雷達頻率要求較低的原因之一。
Gmapping的缺點則是:
隨著環境增大,構建地圖所需的記憶體和計算量會顯著增加,因此不適合大場景地圖構建。
沒有迴環檢測功能,在迴環閉合時可能會造成地圖錯位。
Gmapping是ROS(機器人作業系統)中navigation導航包集中推薦的二維建圖算法包,其具體實現在open_gmapping包里,並在ROS中做了封裝。