跳转到内容

ROS 占用栅格地图格式

ROS 占用栅格地图是一对文件——通常为 map.pgmmap.yaml——用于描述机器人环境的 2D 俯视图。这是 ROS 导航栈(nav1 map_servernav2 map_server)消费的标准地图格式,也是 gmappingCartographerslam_toolbox 等 SLAM 工具包产出的格式。

.pgm 文件是灰度 Portable Gray Map 图像,像素值编码占用情况:

  • 深色像素 — 已占用(障碍物、墙壁)。
  • 浅色像素 — 自由空间。
  • 特定灰度值(通常为 205)— 未知区域。

.yaml 文件描述如何在度量坐标系中解释该图像:

image: map.pgm
resolution: 0.05 # 每像素对应的米数
origin: [-12.2, -28.5, 0.0] # 左下角在 (x, y, yaw) 中的坐标
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

resolutionorigin 共同使下游工具能够在像素坐标和世界坐标之间双向转换。

最常见的几种流程:

  1. 手动驾驶机器人,将里程计 + 2D 激光雷达输入 gmapping 或 slam_toolbox,然后保存生成的地图。
  2. 离线运行 Cartographer 处理 bag 文件,并导出占用栅格。
  3. 从其他格式转换——.bt、OctoMap 投影或自定义格式。

生成的地图随后由 map_server 加载,供定位(AMCL)和规划(nav2)使用。

drawtonomy 可导入 .pgm + .yaml 对,并在浏览器中对占用栅格进行标注:

  • 地图根据 resolutionorigin 元数据按比例显示在画布上。
  • 可在地图上绘制车道、路口、车辆、行人和交通标志。
  • 标注内容以 drawtonomy 图形的形式单独存储——原始 .pgm 文件不会被修改。
  • 适合论文配图(带规划路线标注的 SLAM 地图)、教学(标注规划器所见内容)以及快速真值标注

这是有意设计为单向导入:drawtonomy 不是 nav2 地图编辑工具的替代品,而是当你需要对 SLAM 地图进行视觉清晰、可发表的标注时的便捷选择。

导入流程参见:导入 ROS 占用栅格地图