• rosbag 那些事


    1、.bag文件转.txt
    将file_name.bag文件中topic_name话题的消息转换到Txt_name.txt文件中:
    rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt
    
    2、rosbag remap
     rosbag play ros.bag  /image_raw:=/camera/image_raw

    3、使用rxplot画时间趋势曲线
    在ROS系统中,标量数据可以根据消息中提供的时间戳作为时间序列绘制图形。
    运行可以发布话题的节点后,可以通过rostopic list查看当前的发布的话题,现在,我们不再去使用rostopic echo <topic>,而是通过rxplot命令就能够看到随时间变化的值的曲线。
    rqt_plot /topic/data //单个话题,单个数据
    rqt_plot /topic/x:y:z //单个话题,向量数据
    rqt_plot /topic/x /topic/y /topic/z
    123
    或是先打开GUI界面:
    rosrun rqt_plot rqt_plot

    4、运用ROS工具从bag文件中导出图像

    1.首先到你的bag文件所在的文件夹下打开命令行运行以下命令获得bag中的文件信息:
    rosbag info a.bag
    其中a修改为自己的bag文件名字即可。还可看到topic名字。
    2.调整到你需要存储图片的文件夹中,或者新建文件夹,执行以下命令,其中<>中为你的topic信息,将<>内的内容包括<>修改为想要转换的topic名字。
    rosrun image_view extract_images _sec_per_frame:=0.05 image:=<IMAGE TOPIC IN BAGFILE>
    3.新建一个终端,输入以下命令,打开ROS:
    roscore
    4.在存放bag文件夹的目录下新建一个终端,并输入以下命令,就可以在2中创建的终端中看到图像的转化进度了。
    rosbag play -r 0.5  <BAG FILE>

    5、从ROS bag文件中提取图像

    创建launch文件,如下:
    export.launch

        <launch>
        <node pkg="rosbag" type="play" name="rosbag" args="-d 2 $(find image_view)/test.bag"/>
        <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
        <remap from="image" to="/camera/image_raw"/>
        </node>
        </launch>

    将$(find image_view)/test.bag改为你自己的bag文件路径。
    然后,运行launch文件。

        打开一个终端,运行
        roscore
         
        打开一个终端,cd到export.launch所在路径下,运行
        roslaunch export.launch

    所提取的图片在~/.ros路径下,将其移到你的目标文件中,如:

        cd ~
        mkdir Example
        mv ~/.ros/*.jpg ~/Example

    参考ROS wiki: How to export image and video data from a bag file,

    
    

     rosbag 命令

    查看topic列表    
    rostopic list
    
    打印topic内容
    rostopic echo /topic
    
    将bag转为pcd
    rosrun pcl_ros bag_to_pcd out.bag /velodyne_points ./pcd/
    
    话题录制
    录制所有发布出来的话题,此时默认将话题保存在一个以当时时间戳命名的文件夹中:
    rosbag record -a
    
    录制指定话题
    rosbag record /topic1 /topic12 -o out.bag
    
    话题回放
    基本回放
    rosbag play <your bagfile name>
    
    等待一定时间之后发布bag文件中的内容
    rosbag play <your bagfile name> -d <delay time>
    
    按一定频率回放,-r选项用来设定消息发布速率,如下面命令则表示以3倍原始速率发布话题
    rosbag play -r 3 <your bagfile name>
    
    回放指定话题
    rosbag play <your bagfile name> --topics <topics>
    
    其他指令
    显示bag文件中所包含话题的名称、类型和消息数量:
    rosbag info <your bagfile name>
    
    创建一个除了/tf消息的新包
    rosbag filter file.bag file-no-tf.bag "topic != '/tf'"
    
    查看topic发送接收图
    rosrun rqt_graph rqt_graph
    
    重映射topic信息(将out.bag中point_cloud转为velodyne_points)
    rosbag play out.bag  /point_cloud:=/velodyne_points
    
    将point_cloud转为laserscan
    
    rosrun pointcloud_to_laserscan pointcloud_to_laserscan_node cloud_in:=/your_velodyne_points
    
    查看bag中对应topic的frame_id
    rostopic echo /topic | grep frame_id
    
    查看tf树
    rosrun rqt_tf_tree rqt_tf_tree
    
    保存地图
    rosrun map_server map_saver -f my_map
    
    将cartographer生成的pbstream导出为ros标准地图
        首先新建offline_pbstream_to_rosmap.launch
    
    <launch>
      <node name="cartographer_pbstream_to_ros_map" pkg="cartographer_ros"
          type="cartographer_pbstream_to_ros_map" args="
              -pbstream_filename $(arg pbstream_filename)
              -map_filestem $(arg map_filestem)
              -resolution $(arg resolution)"
          output="screen">
      </node>
    </launch>
    
    再输入如下命令 
    roslaunch cartographer_ros offline_pbstream_to_rosmap.launch pbstream_filename:=/home/out.pbstream map_filestem:=/home/out resolution:=0.05
  • 相关阅读:
    js如何求一组数中的极值
    五星评分效果 原生js
    省市区三级联动
    jq表头固定
    css垂直居中 两种方法
    node.js grunt文件压缩
    js 定时器
    动态规划---最长公共子序列
    AES,RSA对称加密和非对称加密
    正则表达式学习笔记
  • 原文地址:https://www.cnblogs.com/lovebay/p/11193388.html
Copyright © 2020-2023  润新知