cartographer保存地图

cartographer保存地图

使用脚本保存

cartographer提供了将地图保存为pbstream格式的服务和转变为ros格式的功能包

#!/bin/bash

map_dir="${HOME}/file_path"
map_name="map_name"

#finish trajectory
rosservice call /finish_trajectory 0

#save pbsream
rosservice call /write_state "{filename: '$map_dir/$map_name.pbstream'}"

#pbstream to map
rosrun cartographer_ros cartographer_pbstream_to_ros_map \
-pbstream_filename=$map_dir/$map_name.pbstream \
-map_filestem=$map_dir/$map_name

脚本可执行权限

赋予脚本可执行文件

chmod +x ./script_name.sh

运行脚本

./script_name.sh
### 如何在ROS2中使用Cartographer保存地图 为了能够在ROS2环境中利用Cartographer保存所构建的地图,可以采用类似于ROS1中的方法,不过需要注意的是,在ROS2环境下操作时会有一些差异。当运行带有离线节点的Cartographer实例时,`.pbstream`文件会被自动保存[^3]。 对于希望主动触发这一过程的情况,可以通过配置参数来指定是否以及何时保存地图数据到`.pbstream`文件中。具体来说: #### 修改启动文件以支持地图保存功能 确保用于启动Cartographer的launch文件包含了必要的参数设置以便能够导出地图。这通常涉及到调整或添加特定于地图记录和存储的相关选项。例如,在定义节点的过程中加入如下所示的部分配置项: ```xml <param name="load_state_filename" command="$(var load_map_file)" /> <param name="save_state_filename" value="/path/to/your/map.pbstream"/> ``` 此处`save_state_filename`指定了要保存地图状态的目标路径及名称;而`load_state_filename`则允许加载先前已存在的地图状态作为初始条件之一(可选)。这些参数应当放置在一个适合描述整个系统的XML结构内,并且适配至ROS2 launch文件语法。 #### 使用命令行工具保存当前地图 除了依靠预设好的自动化流程外,还可以借助CLI(Command Line Interface)方式即时执行地图保存动作。一旦完成了满意的SLAM(Simultaneous Localization And Mapping)作业,则可通过终端输入相应指令完成此目的: ```bash ros2 service call /map_writer/write_map std_srvs/srv/Empty "{}" ``` 这条语句调用了名为`write_map`的服务接口,它属于负责处理地图写入事务的服务端逻辑的一部分。由于这里并未传递任何额外的消息体内容(`{}`),因此默认情况下将会把最新的内部表示形式持久化为外部文件资源。 #### 验证并查看保存后的地图文件 成功创建`.pbstream`格式的地图档案后,便能运用专门设计用来解析此类二进制序列化的应用程序对其进行检验或者换成其他更易于理解的形式,比如PNG图像或是Ply多边形网格模型等。此外,也可以再次导入该文件继续开展后续实验研究工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值