用catrographer跑自己的數據集

用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章