bag 包进行处理
bag包进行分析
1
   | rosbag info rslidar-outdoor-gps.bag
   | 
 
可以看见包的基本信息,主要是看topic的消息类型和名字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   | path:        rslidar-outdoor-gps.bag version:     2.0 duration:    3:33s (213s) start:       Dec 01 2020 15:44:09.49 (1606808649.49) end:         Dec 01 2020 15:47:43.48 (1606808863.48) size:        2.1 GB messages:    41623 compression: none [2064/2064 chunks] types:       geometry_msgs/QuaternionStamped [e57f1e547e0e1fd13504588ffc8334e2]              nav_msgs/Odometry               [cd5e73d190d741a2f92e81eda573aca7]              sensor_msgs/Imu                 [6a62c6daae103f4ff57a132d6f95cec2]              sensor_msgs/LaserScan           [90c7ef2dc6895d81024acba2ac42f369]              sensor_msgs/NavSatFix           [2d3a8cd499b9b4a0249fb98fd05cfa48]              sensor_msgs/PointCloud2         [1158d486dd51d683ce2f1be655c3c181]              tf2_msgs/TFMessage              [94810edda583a504dfda3829e70d7eec] topics:      /fix               1070 msgs    : sensor_msgs/NavSatFix                        /front_scan        4127 msgs    : sensor_msgs/LaserScan                        /heading            214 msgs    : geometry_msgs/QuaternionStamped              /imu              21400 msgs    : sensor_msgs/Imu                              /odom_scout        4279 msgs    : nav_msgs/Odometry                            /rslidar_points    4126 msgs    : sensor_msgs/PointCloud2                      /tf                6406 msgs    : tf2_msgs/TFMessage              (2 connections)
   | 
 
重新记录部分信息
首先设置
1
   | rosparam set use_sim_time true
   | 
 
此时表示,ros使用的时间是bag包里面的时间,而不是现在的时间
表示,记录这两个topic的内容。
重新开一个终端,开始播放
1
   | rosbag play --clock rslidar-outdoor-gps.bag
   | 
 
即可开始录制
cartographer运行实例
模拟一个2d的建图过程
打开文件cartographer_ros/launch/lx_rs1_2d_outdoor.launch,修改一下bag的地址。编译后
1
   | roslaunch catographer_ros lx_rs1_2d_outdoor.launch
   | 
 
即可。
在此launch文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
   | <launch>      <arg name="bag_filename" default="/home/kong/lixiang_carto/bagfiles/rslidar-outdoor-gps-notf.bag"/>
       <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 lx_rs16_2d_outdoor.lua"       output="screen">     <remap from="points2" to="rslidar_points" />     <remap from="scan" to="front_scan" />     <remap from="odom" to="odom_scout" />     <remap from="imu" to="imu" />   </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/lx_2d.rviz" />
       <node name="playbag" pkg="rosbag" type="play"       args="--clock $(arg bag_filename)" />
  </launch>
   | 
 
还启动了rviz. required="true"代表一旦rviz关闭,整个launch也要关闭
保存地图
执行脚本文件
其内容为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | #!/bin/bash
  source install_isolated/setup.bash
  map_dir="${HOME}/lixiang_carto/map" map_name="2d-1"
  # 检查文件夹是否存在, 如果不存在就创建文件夹 if [ ! -d "$map_dir" ];then   echo "文件夹不存在, 正在创建文件夹"   mkdir -p $map_dir fi
 
  # finish slam rosservice call /finish_trajectory 0
  # make pbstream 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
   | 
 
主要修改一下map_dir,后面的目录,如果要修改为自己的指定目录。会在指定目录生成pbstream,pgm以及yaml文件
纯定位模式
1
   | roslaunch cartographer_ros lx_rs16_2d_outdoor_localization.launch
   | 
 
修改文件内容lx_rs16_2d_outdoor_localization.launch,的bag文件名字和pbstream的文件名字。即可
此过程和SLAM是一样的,虽然暂时不知道他在干嘛。知道是需要提前加载地图的,是不保存地图的
读取所有的submap来生成ros的map
3d地图
 1
   | roslaunch cartographer_ros lx_rs16_3d.launch 
   | 
 
轨迹保存
使用asset生成3d点云地图
使用如下的命令可以生成pcd文件
1
   | roslaunch cartographer_ros assets_writer_3d.launch
   | 
 
展示点云
1 2
   | sudo apt install pcl-tools pcl xxx.pcd
   | 
 
