论文下载:(百度网盘):https://pan.baidu.com/s/1fQIcUYFRNXdheZYzg9mFow?pwd=zhan
Gmapping算法是机器人领域一个非常经典和实用的2D-SLAM解决方案,Gmapping作为基于滤波SLAM的经典代表,其通过RBPF分解问题,提出改进提议分布和选择性重采样等核心思想,使其在中小型室内环境中表现出色,且在ROS中集成度高,易于上手。
虽然在大场景和回环处理方面存在局限,并依赖里程计,但理解其原理和实现,不仅能便于掌握一种实用的SLAM工具,更为后续学习更复杂的基于图优化的SLAM算法(如Cartographer)打下基础,本文从基本原理、核心改进、优缺点等方面展开解析。
Gmapping是基于滤波SLAM框架的开源算法,跟FastSLAM一样采用了RB粒子滤波器(RBPF),将复杂的SLAM问题(同时定位与建图)分解为定位和建图两个相对独立的过程,先进行定位(估计机器人轨迹),在已知轨迹的基础上再进行建图,即以概率基础:
P(位姿, 地图 | 观测, 控制) = P(位姿 | 观测, 控制) * P(地图 | 位姿, 观测)。
简单来说,Gmapping通过粒子滤波来估计机器人的运动轨迹(定位),而每个粒子都独立维护一张地图(建图),最终的全局地图由权重最高的那个粒子(最优粒子)所维护的地图产生。
Gmapping的基石是RBPF粒子滤波,每个粒子都是一个对机器人整个运动路径(位姿历史)和环境的完整假设。
每个粒子包含的信息:

一个权重:w[k],代表该粒子(即该路径和地图假设)正确的可能性。
算法循环(处理一帧激光数据):



以下是Gmapping算法核心流程的步骤概览:

特性维度 | 优点 | 缺点 |
|---|---|---|
精度与计算效率 | 在中小型室内场景中,构建地图精度较高,且计算量相对较小 | 不适合构建大场景地图。场景增大时,所需粒子数和内存急剧增长(每个粒子都携带一张地图),计算量也大幅增加。 |
传感器依赖 | 有效利用里程计信息,对激光雷达的频率要求相对较低 | 严重依赖里程计精度。在里程计误差大或地面不平整(打滑)的场景中,效果会变差。 |
回环检测 | - | 没有显式的回环检测模块,依赖粒子多样性来闭合回环,回环过大时可能地图错位,通常需要增加大量粒子才能缓解。 |
实时性与资源 | 在适用场景下可以实时建图 | 构建大地图时内存消耗巨大。 |
适用性 | 非常适合地面移动机器人(如扫地机、仓储AGV)在结构化室内环境中使用。 | 无法适应无人机或地面严重不平坦的场景。 |
与其他经典激光SLAM算法的简单对比如下:
算法 | 核心原理 | 里程计 | 回环检测 | 特点 |
|---|---|---|---|---|
Gmapping | 粒子滤波 | 严重依赖 | 无 | 中小场景精度高,计算量相对小,但大地图时资源消耗大。 |
Hector SLAM | 优化(高斯牛顿) | 不依赖 | 无 | 对激光雷达频率要求高(需40Hz),在机器人快速转向时易错位,可适应不平坦地面或无人机。 |
Cartographer | 图优化 | 可融合 | 有 | 能处理大场景和回环,精度高,但计算复杂,计算量大,通常需要更强的处理器。 |