rosbag 使用大全

<launch>

<node pkg="rosbag" type="play" args="--clock /home/zhangym/Bag/usblnode.bag" name="rosbag" output="screen" />

<node pkg="usbl" type="usblbag.py" name="usblbag" output="screen" />

</launch>

rosbag的命令


rosbag简介
rosbag 既可以指命令行中数据包相关命令,也可以指 c++/python 的 rosbag 库。这里的 rosbag 是指前者。
rosbag 主要用于记录、回放、分析 rostopic 中的数据。它可以将指定 rostopic 中的数据记录到 .bag 后缀的数据包中,便于对其中的数据进行离线分析和处理。
对于 subscribe 某个 topic 的节点来说,它无法区分这个 topic 中的数据到底是实时获取的数据还是从 rosbag 中回放的数据。这就有助于我们基于离线数据快速重现曾经的实际场景,进行可重复、低成本的分析和调试。

rosbag record
启动与 turtlesim 相关的两个 ros node

roscore
rosrun turtlesim turtlesim_node 
rosrun turtlesim turtle_teleop_key
1
2
3
cd ~/bagfiles
rosbag record -a
1
2
-a 选项表示将当前发布的所有 topic 数据都录制保存到一个 rosbag 文件中,录制的数据包名字为日期加时间。
也可以只记录某些感兴趣的 topic

rosbag record /topic_name1 /topic_name2 /topic_name3
1
如果要指定生成数据包的名字,则用-O /-o 参数,如下:

rosbag record -O filename.bag /topic_name1
1
如果在 launch 文件中使用 rosbag record 命令,如下:

<node pkg="rosbag" type="record" name="bag_record" args="/topic1 /topic2"/> 
1
rosbag info
rosbag info指令可以显示数据包中的信息:

rosbag info filename.bag
1
显示类似下边的信息:

xiaohu@xiaohu:~/bagfiles$ rosbag info 1.bag 
path:        1.bag
version:     2.0
duration:    3.3s
start:       Aug 24 2019 21:37:53.35 (1566653873.35)
end:         Aug 24 2019 21:37:56.65 (1566653876.65)
size:        7.9 KB
messages:    20
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
topics:      /turtle1/cmd_vel   20 msgs    : geometry_msgs/Twist
1
2
3
4
5
6
7
8
9
10
11
Print information in YAML format.

 rosbag info -y filename.bag
1
xiaohu@xiaohu:~/bagfiles$  rosbag info -y 1.bag
path: 1.bag
version: 2.0
duration: 3.295966
start: 1566653873.351150
end: 1566653876.647117
size: 8103
messages: 20
indexed: True
compression: none
types:
    - type: geometry_msgs/Twist
      md5: 9f195f881246fdfa2798d1d3eebca84a
topics:
    - topic: /turtle1/cmd_vel
      type: geometry_msgs/Twist
      messages: 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rosbag play
接下来回放数据包中的 topic。

保留turtlesim节点继续运行。

rosbag play <bagfile>
1
如果想改变消息的发布速率,可以用下面的命令,-r 后面的数字对应播放速率。

rosbag play -r 2 <bagfile>
1
如果希望 rosbag 循环播放,可以用命令

rosbag play -l  <bagfile>  # -l== --loop
1
如果只播放感兴趣的 topic ,则用命令

rosbag play <bagfile> --topic /topic1
1
在上述播放命令执行期间,空格键可以暂停播放。


————————————————
版权声明:本文为优快云博主「含糖的八宝粥」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_42905141/article/details/100057323

### 如何在 ROS 2 中使用 `rosbag` `rosbag` 是记录和回放 ROS 数据的强大工具,在 ROS 2 中同样得到了支持。下面介绍如何安装、录制以及播放数据。 #### 安装 rosbag 对于大多数标准安装而言,`rosbag2` 已经作为默认包被包含进来。如果发现缺少该功能,则可以通过以下命令来安装: ```bash sudo apt-get install ros-humble-rosbags ``` 这会确保环境中有必要的组件用于处理 bag 文件[^1]。 #### 录制话题消息到 Bag 文件 要开始录制来自特定主题的消息至一个新的 bag 文件中,可以执行如下指令: ```bash ros2 bag record /topic_name ``` 其中 `/topic_name` 需替换为实际想要保存其发布内容的主题名称。为了停止录制过程,按下 Ctrl+C 即可结束操作并完成文件创建[^4]。 #### 查看已有的 Bag 文件信息 通过运行下列命令能够获取有关指定 .db3 格式的 bag 文件的信息概览: ```bash ros2 bag info my_bag_file.db3 ``` 这里 `my_bag_file.db3` 应当替换成具体的路径加上扩展名后的目标文件名。这条语句将会打印出诸如持续时间、起始时间和终止时间之类的元数据详情[^2]。 #### 播放 Bag 文件内的数据流 一旦有了之前录好的 bag 文件之后,就可以利用下述方法将其内部存储的数据重播出来供测试或其他用途之需: ```bash ros2 bag play my_bag_file.db3 ``` 此命令会让系统按照原先的时间戳顺序重新发送那些曾经被捕获下来的消息给对应的订阅者节点们去消费[^3]。 #### 进一步学习资源链接 除了官方文档外,还有一些在线平台提供了丰富的教程帮助理解这些概念的应用实践方式,比如 Constructsim 提供的基础课程里就包含了这部分知识点的学习材料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值