用catrographer跑自己的数据集

本文详细介绍了如何使用Cartographer SLAM系统构建自定义地图的过程。包括修改配置文件以匹配个人激光雷达数据集,调整坐标系设置,运行代码生成地图,以及如何保存和转换地图数据为常见格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用catrographer跑自己的数据集

1、更改demo_revo_lds.launch和revo_lds.lua

1.1 修改demo_revo_lds.launch

原本的demo_revo_lds.launch为

<launch>
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename revo_lds.lua"
      output="screen">
    <remap from="scan" to="scan" />
  </node>

  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
  <node name="playbag" pkg="rosbag" type="play"
      args="--clock $(arg bag_filename)" />
</launch>

其中我们要修改的是

<remap from="scan" to="scan" />

将其改成我们自己的激光数据集里面的激光雷达发布的topic,我的为/sick_scan,因为我把这里改成

<remap from="scan" to="sick_scan" />

其他的都不动

1.1 修改revo_lds.lua

原来的代码有有一段代码为

  map_frame = "map",
  tracking_frame = "laser",
  published_frame = "laser",
  odom_frame = "odom",

将其进行修改,针对tracking_frame和published_frame,将他们改成自己的数据集里面的激光slam中激光topic的坐标名称
注意这里的坐标名称可以通过

rosrun rqt_tree rqt_tree

来进行查看,注意了必须和rqt_tree里面的一样才行,这里不是topic,还是topic的坐标名称

2、运行代码

运行代码

roslaunch cartographer_ros demo_revo_lds.launch

可以看到地图
在这里插入图片描述

3、保存地图

序列化保存其当前状态

rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}"

将pbstream转换为pgm和yaml

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/Downloads/mymap -pbstream_filename=${HOME}/Downloads/mymap.pbstream -resolution=0.05
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值