SLAM 建图的绝对位置、参考原点、是否需要标定

核心结论: Gmapping / Cartographer 这类激光 SLAM 生成的栅格地图,本身没有现实世界的 GPS 绝对坐标。地图只有一套相对坐标系原点是机器人开机建图瞬间的位置,不会自动对齐大楼、大地真实坐标;如果业务需要真实绝对位置,就必须额外做标定。

1、SLAM 地图坐标原点怎么来的(相对坐标)

在建图程序启动那一刻,机器人当前所在的位置,自动被定义为地图坐标系的原点 map (0,0,0),朝向为 0°

  • 机器人往前跑,坐标 x 增大;向右跑 y 增大;旋转角度 θ 变化。
  • 整张地图上所有墙、障碍物的坐标,全部是相对于开机起点的相对坐标
  • SLAM 算法只关心:物体之间互相的距离、相对位置关系;它不知道这个原点对应现实世界大楼的哪个角落,不知道经纬度。

举例子: 开机建图,小车放在机房门口,这一刻 → map (0,0)。 小车行驶到机柜旁边,地图上机柜坐标 map (2.5,1.2)。 这个(2.5,1.2)只代表:机柜距离开机起点 X 方向 2.5 米,Y 方向 1.2 米;不代表大地坐标系下的真实地理坐标

通俗类比: 你拿本子画房间平面图,你站的位置定为本子的 (0,0),画出家具之间的相对位置;但本子上不会自动标记这个房间在城市的哪个经纬度。

2、什么时候不需要标定参考位置?

绝大多数室内机器人场景,只使用地图内部相对坐标,不需要绝对位置,不用标定。 适用场景:

  • 室内巡逻、AGV 搬运、定点巡检;
  • 导航只关心:机器人在地图里面相对于地图原点的 (x,y,θ),导航路径点也写在这套 map 坐标系下。

工作逻辑: 建图时,我在地图上手动标记巡检点 A (1.0,2.0)、巡检点 B (5.0,3.0);机器人后续只需要跑到这张图内部的这些相对坐标点即可。 不需要和 GPS、大楼 CAD 世界坐标对齐。

这是机器人室内项目最常见的模式,绝大多数 ROS 小车都是这么干的。

3、什么时候必须标定,获得绝对位置?

当需要把 SLAM 地图坐标,对齐到外部绝对坐标系,就必须人工标定。 典型需求:

  1. 需要输出 GPS 经纬度,把机器人位置上传到后台 GIS 地图;
  2. 需要和建筑 CAD 图纸坐标完全对齐;
  3. 多台机器人,共用同一套全局大地坐标系;
  4. 室外场景,SLAM 局部地图融合 GPS 全局坐标。

标定的本质

求解一组坐标变换:map坐标系 ↔ 大地/GPS/CAD绝对坐标系,得到旋转、平移参数。 常用两种标定手段:

  1. 人工选特征点标定(最常用室内) 在真实环境找 2 个以上明显标记点(柱子、墙角)。
  • 测量该墙角在现实 CAD/GPS 里面的真实绝对坐标;
  • 在 SLAM 地图读取同一个墙角的 map 相对坐标;
  • 算法解算平移、旋转矩阵,完成两套坐标系的对齐。后续机器人输出位置,就可以换算成绝对坐标。
  1. GPS 辅助标定(室外) 机器人在建图时,同时记录 GPS 位置;把 SLAM 局部坐标系和 GPS 坐标系做融合,得到绝对位姿。

室内 GPS 失效,该方案不可用。

⚠️注意:标定只是增加一套坐标转换,不会修改 SLAM 栅格地图本身。地图内部障碍物相对关系不变,只是多一层换算公式。

4、一个非常容易踩的工程坑

每次重新启动 SLAM 建图,原点会变!

你把小车挪到同一个物理地点,重新启动 gmapping/cartographer 建图: 新地图的 map (0,0) 是这次开机的位置,和上一次建图的原点完全不一样

  • 两次建图得到两张地图,里面同一个机柜,在两张图的 map 坐标数值完全不同。
  • 如果没有做坐标标定,两张地图的坐标不能直接混用。

解决办法:

  1. 建图完成后保存地图文件,后续只进入定位模式,不再重新建图,原点就固定不变;
  2. 如果必须重新建图,需要再次做特征点标定,对齐到统一绝对坐标系。

5、AMCL 定位阶段的坐标情况

导航定位阶段,加载已经建好的静态地图:

  • 输出的位姿依然是这张老地图的相对 map 坐标系
  • 即使定位跑的再准,输出 (x,y) 依旧是相对于当初建图开机原点,不是大地绝对位置;
  • 想要 GPS / 建筑绝对坐标,依然要额外做坐标变换标定。

简明对比表

表格

项目 SLAM 原生地图(未标定) 标定之后的地图
坐标类型 相对坐标系 可换算到绝对坐标系(GPS/CAD)
原点来源 建图启动瞬间小车位置,自动生成 原点不变,新增一套坐标转换矩阵
是否需要标定 不需要 必须人工采集特征点标定
适用场景 室内巡逻、AGV,只在地图内部跑点位 对接 GIS、多机协同、对接建筑 CAD、输出经纬度
缺点 不同次建图原点不一致;没有现实地理含义 标定存在人工测量误差

简短总结

  1. SLAM 自己生成的地图,只有相对坐标,原点是建图开机时刻机器人位置,不会自动获得现实世界绝对位置
  2. 普通室内巡逻巡检,只用地图内部相对点位,不需要标定,这是主流做法。
  3. 如果需要 GPS、CAD 图纸这种外部绝对坐标,必须额外标定求解坐标变换矩阵,地图本身栅格数据不改动。
  4. 每次重新建图,原点会改变;尽量建好图就保存,后续只跑定位,避免原点变动带来麻烦。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐