ROS2——使用ros2 bag录制/回放数据

有的时候我们希望在别人已有的数据集上做开发,或者复现之前已经构建好的场景数据,这时候就可以用ROS2中的ros2 bag工具啦。   ros2 bag是一个命令行工具,可以实现对ROS2系统中话题数据的录制和回放,选定的数据会被打包放到一个数据库文件中,未来使用该工具即可按照时间轴回放所有话题数据。   在使用rosbag前,需要确认是否安装好了:

sudo apt-get install ros-<distro>-ros2bag ros-<distro>-rosbag2*

1.配置

还是以小海龟反仿真为例,我们尝试录制控制海龟运动的速度指令,并实现回放。  

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

  接下来创建一个新的文件夹,未来保存数据库文件:  

mkdir bag_files
cd bag_files

 

2.选择一个话题

ros2 bag可以录制系统中发布的话题数据,所以我们先看下当前系统中有哪些话题:

ros2 topic list

  我们已经知道, /turtle1/cmd_vel 话题是用来控制海龟运动的,如果监听该话题,并且通过键盘控制小海龟移动,就可以看到速度指令的消息:

 

3.ros2 bag录制话题数据

ros2 bag录制话题数据的命令是:

ros2 bag record <topic_name>

  该命令会将数据保存在当前终端所在的路径下,所以最好先cd到刚才创建好的目录下,然后运行:

ros2 bag record /turtle1/cmd_vel

  可以看到开始录制数据的日志提示:

   现在ros2 bag已经开始在录制 /turtle1/cmd_vel 话题中的消息了,回到键盘控制的窗口,控制小海龟完成一些运动,怎么动没关系,重要的是要把这些移动的指令都录制下来。  

 

完成录制后,在运行ros2 bag的终端中Ctrl+C即可停止录制,已经录制好的数据会保存在“ rosbag2_year_month_day-hour_minute_second”命名的文件中。   以上是录制一个话题数据的方法,如果我们想录制多个话题的消息呢?可以这样:

ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose

  -o参数是用来设置数据库文件名的,此时文件名叫subset。多个话题名通过空格隔开就行,输入几个就会录制几个,录制时可以看到:

 注意:如果觉得麻烦,可以用-a参数录制所有话题的数据,不过这样容易产生环形依赖,可能造成系统的崩溃。  

4.查看数据库文件

我们可以使用这个命令查看数据库文件的信息:

ros2 bag info <bag_file_name>

  以刚才的subset文件为例,可以看到:

   可以看到这里使用的是sqlite3 数据库保存了话题数据。  

5.ros2 bag回放数据

  关闭之前运行的键盘控制节点,确保目前是没有任何节点发送海龟运行指令的,接下使用如下命令回放录制好的数据:

ros2 bag play subset

  终端中会提示:

   小海龟仿真器中可以看到海龟按照之前控制的指令在运动。

   这就是ROS2中录制数据集的神器——ros2 bag。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
rosbag是一个用于记录、回放和分析ROS数据的工具。它可以将指定的ROS话题中的数据记录到以.bag后缀命名的数据包中,方便离线分析和处理。录制过程可以使用命令行工具rosbag record或在launch文件中使用rosbag record命令。录制时可以指定录制的话题、录制的持续时间、录制的文件大小等参数。录制结束后,可以使用rosbag info命令查看数据包中的信息,包括话题信息、频率信息和以yaml形式显示的信息。录制数据包可以通过rosbag play命令进行回放,可以暂停和继续播放。录制数据包可以用于重现实际场景,进行可重复和低成本的分析和调试。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [【ROSrosbag使用](https://blog.csdn.net/lemonxiaoxiao/article/details/121693548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [rosbag数据记录工具命令详解](https://blog.csdn.net/QLeelq/article/details/123201294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值