目标:记录发布在某个主题和服务上的数据,以便您可以随时回放和检查。
教程级别:初学者
时间:15 分钟
目录
背景
先决条件
管理主题数据
1. 设置
2. 选择一个话题
3 .记录主题
4..检查主题数据
5 .播放主题数据
管理服务数据
1. 设置
2.检查服务可用性
3.记录服务
4.检查服务数据
5 .播放服务数据
摘要
下一步
相关内容
背景
ros2 bag
是一个命令行工具,用于记录 ROS 2 系统中发布在主题和服务上的数据。它可以累积任意数量的主题和服务传递的数据,然后将其保存在数据库中。您可以随后重放数据以复现您的测试和实验结果。记录主题和服务也是分享您的工作并让他人重现的好方法。
先决条件
您应该将 ros2 bag
作为常规 ROS 2 设置的一部分进行安装。
如果您需要安装 ROS 2,请查看安装说明。
本教程讨论了前面教程中涉及的概念,如节点、主题和服务。它还使用了 turtlesim 包和服务内省演示。
始终不要忘记在您打开的每个新终端中获取 ROS 2 的源。
管理主题数据
1. 设置
您将在 turtlesim
系统中记录键盘输入,以便稍后保存和回放,因此请开始启动 /turtlesim
和 /teleop_turtle
节点。
打开一个新的终端并运行:
ros2 run turtlesim turtlesim_node
打开另一个终端并运行:
ros2 run turtlesim turtle_teleop_key
我们还应该新建一个目录来存储我们保存的录音,这是一个好习惯:
mkdir bag_files
cd bag_files
2. 选择一个话题
ros2 bag
可以记录从主题发布的消息中的数据。要查看系统主题的列表,请打开一个新的终端并运行以下命令:
ros2 topic list
将返回:
cxy@ubuntu2404-cxy:~/bag_files$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
在主题教程中,您学到了 /turtle_teleop
节点在 /turtle1/cmd_vel
主题上发布命令,以使海龟在 turtlesim 中移动。
要查看 /turtle1/cmd_vel
发布的数据,请运行以下命令:
ros2 topic echo /turtle1/cmd_vel
刚开始时什么也不会显示,因为遥控器没有发布任何数据。返回到你运行遥控器的终端,并选择它以便它处于活动状态。使用箭头键移动乌龟,你将看到运行 ros2 topic echo
的终端上发布了数据。
cxy@ubuntu2404-cxy:~/bag_files$ ros2 topic echo /turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -2.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
3 记录主题
3.1 记录单一主题
要记录发布到主题的数据,请使用以下命令语法:
ros2 bag record <topic_name>
在运行此命令之前,请打开一个新的终端,并移动到您之前创建的 bag_files
目录,因为 rosbag 文件将保存在您运行它的目录中。
执行命令:
ros2 bag record /turtle1/cmd_vel
您将在终端中看到以下消息(日期和时间会有所不同)
cxy@ubuntu2404-cxy:~/bag_files$ ros2 bag record /turtle1/cmd_vel
[INFO] [1720089680.740411870] [rosbag2_recorder]: Press SPACE for pausing/resuming
[INFO] [1720089680.938029175] [rosbag2_recorder]: Listening for topics...
[INFO] [