BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
返回首页室内导航系统 04:2D 激光 SLAM 不难跑起来,难的是交付一张可运营的地图

室内导航系统 04:2D 激光 SLAM 不难跑起来,难的是交付一张可运营的地图

·3 分钟阅读·

2D 激光 SLAM 是室内导航最成熟的路线之一。运行 slam_toolbox、遥控机器人走一圈、保存地图并不难;真正困难的是保证地图在长走廊、玻璃、人群和多次回环下仍可用于稳定定位,并能被现场持续维护。

2D SLAM 的三层计算

扫描匹配

当前激光帧与局部地图或上一帧对齐,估计相对位姿。匹配依赖足够的几何变化。长直走廊中,沿走廊方向约束弱;圆形空间或重复货架也会产生歧义。

轮速和 IMU 不负责替代匹配,而是提供较好的初值,让搜索不容易落到错误极值。

位姿图

每个关键帧是节点,相邻里程计和扫描匹配形成边;识别到旧位置时加入回环边。优化器调整所有节点,使约束整体一致。

回环会修正长期漂移,也可能在错误匹配时把整张图“拉坏”。所以回环不是越多越好,需要有几何一致性和人工验证。

占据栅格

位姿图决定每束激光从哪里发出,栅格更新决定空间是占据、空闲还是未知。常用 log-odds 形式累计观测:

L_t(m_i) = L_(t-1)(m_i) + inverse_sensor_model(z_t, x_t)

地图分辨率越高,细节越多,内存与噪声也越大。室内 AMR 常从 0.05 m 栅格起步,再根据最窄通道和定位精度调整。

建图前先把输入做对

至少验证:

  • /scan 频率稳定、角度顺序正确、无大量零值;
  • odom → base_link 连续,直行尺度和转圈角度合理;
  • LiDAR 外参正确,旋转时墙面不分层;
  • 时间戳代表采样时刻;
  • 机器人 footprint 与实际外形一致;
  • 遥控速度足够慢,不产生明显运动畸变。

用 RViz 看起来“差不多”不够。建议先录一段包含静止、直线、原地旋转和闭环的 bag,离线反复调试。

建图路线要设计

一个好的采集顺序是:

  1. 从几何特征丰富、容易重定位的位置开始;
  2. 先走外环,建立整体框架;
  3. 再进入房间和支路;
  4. 每隔一段回到已知区域形成闭环;
  5. 最后复走关键主通道做验证。

避免快速旋转、紧贴动态人群、在玻璃正前方长时间采集。门最好以运营时的典型状态建图;经常变化的门不应永久固化成不可穿越墙体。

slam_toolbox 的工程价值

slam_toolbox 不只是在线生成栅格。它支持保存序列化位姿图、继续建图、定位和长期地图更新。推荐同时保存:

栅格地图:供 AMCL/Nav2 和运营工具使用
序列化 pose graph:供继续建图、修图和长期维护使用
原始 rosbag:供问题复现

只保存 PGM,后续发现局部错误时只能重建或做图片编辑,失去了图优化层的约束。

地图验收不是看墙直不直

几何一致性

  • 已知长度走廊的尺度误差;
  • 同一面墙在多次经过后厚度;
  • 闭环区域是否出现双墙;
  • 门宽、通道宽是否符合实测;
  • 原点和楼层坐标是否符合约定。

定位可用性

用独立验证轨迹启动定位,检查:

  • 冷启动重定位时间;
  • 全局位置误差和方向误差;
  • 长走廊中的协方差;
  • 动态人群下的稳定性;
  • 被搬动后能否恢复;
  • 错误初始位姿是否会被错误吸附。

导航可用性

将真实 footprint 膨胀后,关键通道是否仍可通行;玻璃、低矮障碍和禁行区是否由其他图层补足;地图边界是否会让全局规划走入未验证区域。

地图产品需要版本和语义

建议目录结构:

building_a/
  floor_01/
    geometry/map.yaml
    geometry/map.pgm
    graph/posegraph.data
    semantic/zones.geojson
    routes/route_graph.geojson
    qa/validation.json
    manifest.yaml

manifest 记录地图版本、建图日期、适用机器人、传感器与标定版本、分辨率、坐标原点、已知缺陷和回滚版本。

禁行区、限速区、停靠点、门和电梯不要直接画死在几何图里,应作为可单独更新的语义层。

哪些场景不该坚持 2D

出现以下条件时,应加入 3D 感知或换地图表达:

  • 悬空货架和桌板决定碰撞;
  • 需要识别台阶、坡度和负障碍;
  • 机器人高度或姿态变化明显;
  • 多层空间在平面投影中重叠;
  • 玻璃与镜面占比高;
  • 轮足机器人要评估落脚地形。

2D SLAM 的优势是简单、稳定和生态成熟。把它用好,不是追求更复杂的算法,而是把输入、采集、验证和地图生命周期都工程化。

延伸阅读