如何使用Cartographer生成的地图
参考Cartographer_ros官方文档
随着传感器数据的传入,诸如 Cartographer 之类的 SLAM 算法的状态会发生变化,以保持当前对机器人轨迹和周围环境的最佳估计。 因此,Cartographer 可以提供的最准确的定位和建图是算法完成时获得的定位和建图。 Cartographer 可以以.pbstream
文件格式序列化其内部状态,该文件格式本质上是一个压缩的 protobuf 文件,其中包含 Cartographer 内部使用的数据结构的快照。
为了实时高效运行,Cartographer 会立即丢弃大部分传感器数据,仅使用其输入的一小部分,内部使用的地图(并保存在.pbstream
文件中)非常粗糙。 然而,当算法完成并建立了最佳轨迹时,可以将其与完整的传感器数据进行后验融合以创建高分辨率地图。
Cartographer 使用 cartographer_assets_writer
使这种融合成为可能。 assets writer
使用以下输入
- 用于执行 SLAM 的原始传感器数据(在 ROS
.bag
文件中) - 对此传感器数据执行 SLAM 时捕获的 cartographer 状态(保存在
.pbstream
文件中) - 传感器的外参(即数据包中的 TF 数据或 URDF 描述文件)
- 在
.lua
文件中定义的管道配置
assets writer
使用 .pbstream
中找到的轨迹分批运行