[具身智能-814]:Gmapping 激光雷达建图原理、流程、优缺点、工程坑点(通俗易懂)
·
Gmapping 激光雷达建图原理、流程、优缺点、工程坑点(通俗易懂)
Gmapping 是 ROS 生态里面最经典的2D 激光 SLAM 算法,
输入:2D 激光雷达数据 + 机器人里程计;
输出:二维栅格地图。
适用:室内小 / 中等场景,比如办公室、机房、仓库;不适合大场景、室外。
一、核心工作原理
Gmapping 基于粒子滤波(Rao‑Blackwellized 粒子滤波)。 通俗比喻:
机器人不知道自己精确位置,同时撒出来很多 “假想机器人(粒子)”,每一个粒子代表机器人的一个可能位置。
- 底盘里程计给出轮子转动数据,所有粒子按照里程计一起往前走;
- 激光雷达扫出来周围墙壁障碍物轮廓,把每个粒子假设位置下 “理论应该看到的环境”,和真实雷达点云做比对;
- 和雷达匹配得越准的粒子,权重变高;匹配很差的粒子直接丢弃;
- 不断保留靠谱粒子,淘汰错误粒子;用最优粒子不断拼接生成栅格地图;
- 栅格地图:每个小格子标记「占用(障碍物)、空闲(可以走)、未知」。
⚠️ Gmapping 非常依赖里程计! 如果轮子编码器噪声大、打滑严重,粒子很快全部跑偏,地图直接糊掉。 它不单独靠激光做定位,里程计是重要输入。
需要的传感器输入
- 2D 激光雷达(
/scan话题) - 机器人里程计(
/odom,轮子编码器输出)
不需要 IMU 也可以跑,但 IMU 可以改善旋转打滑场景。
输出:
/map栅格地图话题map.pgm+map.yaml保存地图文件
二、完整实操工作流程(ROS1)
- 启动机器人底盘,发布里程计
/odom - 启动激光雷达驱动,发布
/scan激光数据 - 启动 gmapping算法节点
bash
运行
rosrun gmapping slam_gmapping
- 遥控器操控小车缓慢匀速遍历整个环境
- 速度不能太快,尤其转弯要慢;
- 把所有房间、过道全部走一遍,不要漏区域;
- rviz 中订阅
/map查看实时建图效果 - 环境全部走完,执行保存地图
bash
运行
rosrun map_server map_saver -f mymap
生成 mymap.pgm(图片地图) + mymap.yaml(地图配置),后续导航直接加载这张地图。
三、关键参数通俗解释(工程最常用)
表格
| 参数 | 通俗含义 | 经验取值 |
|---|---|---|
particles |
粒子数量,粒子越多,容错越强,但 CPU 占用越高 | 30‑80;小场景 30,大室内 80 |
delta |
地图分辨率,每个栅格多大 | 0.05(5cm 一格,最常用) |
linearUpdate |
小车平移多少米,做一次地图更新 | 0.5 |
angularUpdate |
小车旋转多少弧度,触发一次更新 | 0.3 |
xmin xmax ymin ymax |
地图最大边界,提前框定建图范围 | 根据场地设置 |
粒子太少:容易建图漂移、重影;粒子太多:嵌入式板(RDK X5)CPU 占用飙升卡顿。
四、优点
- 算法成熟,ROS 开箱即用,资料极多;
- 小室内环境,里程计正常时,建图效果很好;
- 对激光雷达帧率要求不算苛刻;
- 输出标准栅格地图,可以直接供给 move_base 导航、巡逻任务使用。
五、缺点(工程坑点非常重要)
- 极度吃里程计 轮子打滑、地面光滑、麦克纳姆轮漂移严重 → 地图重影、错位。麦克纳姆轮小车直接跑 gmapping 效果通常很差,需要先优化里程计。
- 不适合大场景 面积超过 1000㎡以上,粒子会发散,地图越来越歪。大场景优先用 Cartographer。
- 闭环能力弱 当机器人绕一大圈回到起点,Gmapping 很难识别闭环,不能自动修正累计误差;看到回环错位,只能重新建图。
Cartographer 有闭环检测,这点远强于 Gmapping。
- 动态物体干扰 人来回走动,会在地图上留下伪障碍物噪点。
- 仅支持 2D,不能处理高度信息。
六、Gmapping vs Cartographer 简单对比
表格
| 项目 | Gmapping | Cartographer |
|---|---|---|
| 算法 | 粒子滤波 | 图优化,支持闭环检测 |
| 里程计依赖 | 强依赖 | 可以容忍较差里程计 |
| 适用规模 | 中小室内 | 中小室内、大场景都可以 |
| CPU 消耗 | 中等 | 较高 |
| 闭环修正 | 几乎没有 | 有闭环,回环后修正整张地图 |
| 麦克纳姆轮小车 | 容易漂移 | 表现更好 |
选型建议:
- 小房间、阿克曼 / 普通差分轮、里程计质量好 → Gmapping 够用。
- 麦克纳姆轮、大仓库、希望回环校正误差 → 直接上 Cartographer。
七、现场建图实操避坑要点
- 移动速度一定要慢,转弯减速,不要猛冲猛转;
- 建图环境尽量减少来回走动的人群;
- 玻璃镜面环境激光容易失效,地图会出现空洞;
- 建图过程一旦发现地图明显重影错位,不要继续跑,直接重启重新建图;
- 麦克纳姆轮底盘:轮子滑移大,odom 本身误差大,gmapping 效果一般,优先 Cartographer。
八、后续使用
建好的 map 地图,供给导航模块:实现雷达巡逻、自主导航避障。
Gmapping 只负责建图,不负责导航巡逻;巡逻是 move_base 导航栈完成。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)