建图与定位

Cartographer二维建图课:保存下来的三个文件,分别有什么用?

图蜂科技原稿日期 官网发布 2026-11-02

PBSTREAM、PGM、YAML各自保存什么?从课程中的地图保存过程理解三种文件的用途。

用 Cartographer 做二维建图,看到地图在屏幕上展开之后,还要检查一件事:这次建图的结果有没有保存好,下次能不能重新加载?

黑蚁 LITE 配套课程的一段二维建图录屏,展示了从数据包回放到地图保存的过程。保存后的目录里,出现了同名的 .pbstream、.pgm 和 .yaml 文件。它们保存的内容不同,后续用途也不同。

从数据回放开始

这段课程使用已有数据包进行建图。启动配置中通过 bag_filename 指定 test.bag,由 Cartographer 处理其中的数据。

学习时,可以把运行日志和地图画面的变化放在一起看:数据输入后,轨迹如何变化,地图如何逐步形成。这里展示的是数据回放流程,不是现场实时采集。

课程后段完成了轨迹结束、状态写入和地图保存。接下来,就可以查看生成的文件。

.pbstream:保存 Cartographer 的内部状态

这个文件供 Cartographer 及其配套工具读取。它保存的是序列化后的 SLAM 内部状态,后续可以用于加载已有状态,或通过配套工具生成静态栅格地图。

它不是一张普通图片,也不能替代原始的 rosbag 数据包。保存项目时,建议同时记下对应的软件版本和配置,方便以后重新使用。依据:Cartographer 官方文档

.pgm:保存二维地图图像

PGM 是一种灰度图像格式。在 ROS 常见的地图保存方式中,不同灰度用来表示空闲、占用和未知区域:空闲区域通常接近白色,占用区域为黑色,未知区域为灰色。

打开它,可以直观看到地图轮廓。但只有这张图,程序还不知道一个像素对应多远,也不知道地图在坐标系中的位置。这些信息需要从配套的 YAML 文件读取。依据:ROS1 地图保存源码

.yaml:告诉程序怎样读取这张地图

YAML 是地图的说明文件,记录图像路径、分辨率、原点位置与朝向,以及判断空闲和占用的阈值等信息。

例如,分辨率如果是 0.05,表示每个像素对应实际距离 0.05米,也就是5厘米。这个数值说明地图的尺度,并不等于建图 精度 达到5厘米。

ROS1 的 map_server 通常从 YAML 文件开始加载,再根据其中的 image 字段找到地图图像。因此,移动或重命名 PGM 文件后,也要检查 YAML 中的路径是否仍然正确。依据:ROS1 地图加载源码

保存成功后,再做一次检查

做完建图练习,可以顺手检查这几项:

  • 输出目录里是否生成了预期文件
  • YAML 中的图像路径是否能找到对应的 PGM
  • 加载后的地图尺度和方向是否符合预期
  • 本次使用的数据包、配置和软件版本是否有记录。

PGM 和 YAML 通常配合用于加载二维栅格地图;PBSTREAM 则保留给 Cartographer 相关流程使用。整理实验资料时,把它们与本次实验记录放在一起,后续排查会方便得多。

这段课程录屏展示了文件生成和保存过程,尚不能据此判断地图精度或当前车辆的导航效果。实际复现仍需核对数据包、配置和软件版本。

黑蚁 LITE 标准交付采用 ROS1,配套线上课程包括 ROS 开发、建图定位及路径规划等内容。

查看黑蚁LITE配置 · 查看配套课程

本文部分内容由AI辅助整理,结合技术原始文档及已核对课程资料编写。

← 返回建图与定位了解黑蚁LITE ↗