【ROS】map_server 地图的保存和加载
【ROS】map_server 地图的保存和加载
- 前言
- 地图的保存
- 地图的加载
前言
在 ROS 中,想要实现导航功能,首先需要一张已建好的地图。导航系统依赖这张地图进行路径规划、定位和障碍物避让等操作。本文将讲解在使用 gmapping
或 hector_mapping
建图后,如何保存和加载地图。
本章面向 ROS 初学者,系统地讲解地图的保存与加载流程,为后续的定位与导航功能奠定基础。
我的环境:
本教程使用的环境是:实体 ROS 小车,Ubuntu 18.04,ROS1 Melodic
参考资料:
- 如何在 ROS 中保存和加载地图
- ROS Wiki - map_server 官方文档
地图的保存
关于地图保存,可参考 map_server 文档 2.2 小节,如下图所示:
地图保存的原理是:将当前发布在 /map
话题中的地图数据保存为本地文件。
因此,只有在建图(如 Gmapping 或 Hector 等)已经完成并且 /map
话题正在发布数据的前提下,才能执行保存操作。
常用命令:
假设我们要把地图保存到主目录下的 map
文件夹中,文件名为 my_map
,命令如下:
rosrun map_server map_saver -f ~/map/my_map
执行后会生成两个文件:
my_map.pgm
(地图图像)my_map.yaml
(地图元数据,包括分辨率、原点等)
地图的加载
关于地图加载,可参考 map_server 文档 2.1 小节,如下图所示:
地图加载的原理:将本地保存的地图配置文件(.yaml 文件)解析,并将静态地图数据发布到 /map 话题,供其他节点(如导航)订阅使用。
常用命令:
假设我们已经将地图保存在主目录下的 map 文件夹中,文件名为 my_map.yaml,可以使用以下命令加载地图:
rosrun map_server map_server ~/map/my_map.yaml
执行后,map_server
节点会自动读取:my_map.yaml
(地图元数据)、my_map.pgm
(地图图像),并持续发布 /map
话题,供导航、定位等功能模块使用。