美文网首页
rosbag 使用

rosbag 使用

作者: Young1217 | 来源:发表于2020-08-24 15:58 被阅读0次

    来自ROS使用介绍——rosbag
    ROS bag的绘图工具:rqt_bag和PlotJuggler

    录制包 rosbag record

    #录制所有的topic
    rosbag record -a 
    
    

    查看bag的信息 rosbag info

    rosbag info your.bag
    
    

    会显示如下内容:

    path:        2014-12-10-20-08-34.bag
    version:     2.0
    duration:    1:38s (98s)
    start:       Dec 10 2014 20:08:35.83 (1418270915.83)
    end:         Dec 10 2014 20:10:14.38 (1418271014.38)
    size:        865.0 KB
    messages:    12471
    compression: none [1/1 chunks]
    types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
                 rosgraph_msgs/Log   [acffd30cd6b6de30f120938c17c593fb]
                 turtlesim/Color     [353891e354491c51aabe32df673fb446]
                 turtlesim/Pose      [863b248d5016ca62ea2e895ae5265cf9]
    topics:      /rosout                    4 msgs    : rosgraph_msgs/Log   (2 connections)
                 /turtle1/cmd_vel         169 msgs    : geometry_msgs/Twist
                 /turtle1/color_sensor   6149 msgs    : turtlesim/Color
                 /turtle1/pose           6149 msgs    : turtlesim/Pose
    
    

    这个命令主要是拿来看一个包里的topic,时长,信息类型等。对于比较小的包,直接rosbag play xx.bagrostopic list0即可。但像KITTI转出来的,20多G的,打开实在太慢了,相比起来,info足够。

    播放包 rosbag play

    rosbag play xx.bag
    
    

    -d 参数可以用来指定延迟播放的时间(Sec),这是因为如果输入以后直接开始播放的话,那么可能node会错过前面的几帧信息。
    -s 参数用于指定从几秒开始.

    #从十秒开始播放xx.bag
    rosbag play -s 10 xx.bag
    
    

    -u 参数表示仅use包的前几秒信息。

    #仅播放前十秒
    rosbag play -u 10 xx.bag
    
    

    -r 参数用来指定播放速度。

    # 2倍速播放
    rosbag play -r 2 xx.bag
    
    

    包过滤 rosbag filter

    rosbag filter命令可以用python指令来过滤包,能够使用的内置变量为topic, m , t.secs和t.nsecs。
    按时间过滤的时候,需要注意的是应该用UNIX时间,这个时间可以用rosbag info来确定。而如果需要截取一段时间,可以用and来连接。

    rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86 and t.to_sec()>=1284703935.86"
    
    

    按话题过滤的话,可以这样写:

    rosbag filter my.bag only-tf.bag "topic == '/tf'"
    
    

    但是有时候会面临可能唯独不想要哪些topic,这当然可以用正则表达式来解决。但是对于懒人而言,可能一个可视化工具会更方便:https://github.com/AtsushiSakai/rosbag_filter_gui。需要注意的是,按照README操作可能会提示找不到rosbag_filter_gui,这是因为它并没有生成一个可执行文件。正确的使用方法如下:
    1.在任意位置git下该程序

    git clone https://github.com/AtsushiSakai/rosbag_filter_gui.git
    
    
    1. 进入到/rosbag_filter_gui/scipts后,运行rosbag_filter_gui.py
    python rosbag_filter_gui.py
    
    
    1. 在GUI界面中选择并打开想要过滤的包,选择需要保留的topic,点击convert,等待几秒,即可看到在包所在路径下多出了一个后缀为_filtered的包。可以用rosbag info xx_filtered,bag来检验转换结果。

    包压缩 rosbag compress

    有时候我们的包太大了,会导致打开很慢。比如25G的KITTI数据包可能需要10分钟打开。rosbag提供了两种压缩格式:BZ2和LZ4。其中BZ2占用硬盘小,但播放慢。LZ4虽然对体积的压缩不多,但打开速度提高了数倍。另外,此命令会自动备份要压缩的数据包,命名会加一个origin,所以无需担心。

    rosbag compress --lz4 slam_2019-12-14-23-24-43_filter.bag
    
    

    此处仅罗列了常用的操作,更多的命令请参考:rosbag进阶官方教程

    相关文章

      网友评论

          本文标题:rosbag 使用

          本文链接:https://www.haomeiwen.com/subject/pqpnjktx.html