目录
·背景
·前置条件
·管理话题数据
o1 环境准备
o2 选择话题
o3 记录话题
o4 检查话题数据
o5 回放话题数据
·管理服务数据
o1 环境准备
o2 检查服务可用性
o3 记录服务
o4 检查服务数据
o5 回放服务数据
·管理动作数据
o1 环境准备
o2 检查动作可用性
o3 记录动作
o4 检查动作数据
o5 回放动作数据
·总结
·后续步骤
·相关资料
本教程主要包括以下命令:
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
$ mkdirbag_files
$ cd bag_files
$ ros2 topic list$ ros2 topic echo /turtle1/cmd_vel
$ ros2 bag record --topics <topic_name>
$ ros2 bag record --topics /turtle1/cmd_vel
$ ros2 bag record -o subset --topics /turtle1/cmd_vel /turtle1/pose
$ ros2 bag record -o subset_split -d 5 --topics /turtle1/cmd_vel /turtle1/pose
$ ros2 bag info subset$ ros2 bag play subset$ ros2 topic hz /turtle1/pose
$ ros2 run demo_nodes_cppintrospection_service --ros-args -p service_configure_introspection:=contents
$ ros2 run demo_nodes_cppintrospection_client --ros-args -p client_configure_introspection:=contents
$ ros2 bag record --all-services$ ros2 bag record -o subset_cmd_vel --topics /turtle1/cmd_vel
$ ros2 action echo --flow-style /fibonacci
背景
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
作为良好实践,让我们创建一个新目录来存储保存的记录:
$ mkdirbag_files
$ cd bag_files
2 选择话题
ros2 bag可以记录发布到话题的消息中的数据。要查看系统的话题列表,打开一个新终端并运行命令:
$ 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的终端上看到正在发布的数据。
linear:x:2.0
y:0.0z:0.0
angular:x:0.0
y:0.0z:0.0
---
3 记录话题
3.1 记录单个话题
要记录发布到话题的数据,使用命令语法:
$ ros2 bag record --topics <topic_name>
在所选话题上运行此命令之前,打开一个新终端并移动到您之前创建的bag_files目录,因为rosbag文件将保存在您运行它的目录中。
运行命令:
$ ros2 bag record --topics /turtle1/cmd_vel
[INFO] [rosbag2_storage]: Opened database 'rosbag2_2019_10_11-05_18_45'.
[INFO] [rosbag2_transport]: Listening for topics...[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
[INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...现在ros2 bag正在记录发布到/turtle1/cmd_vel话题的数据。返回到遥控终端并再次移动乌龟。移动的内容不重要,但尝试做一个可识别的图案,以便稍后回放数据时查看。

按Ctrl-C停止记录。
数据将积累在一个新的 bag 目录中,目录名称模式为rosbag2_年_月_日-时_分_秒。此目录将包含一个metadata.yaml以及记录格式的 bag 文件。
3.2 记录多个话题
您还可以记录多个话题,并更改ros2 bag保存的 bag 目录名称。
运行以下命令:
$ ros2 bag record -o subset --topics /turtle1/cmd_vel /turtle1/pose
[INFO] [rosbag2_storage]: Opened database 'subset'.[INFO] [rosbag2_transport]: Listening for topics...
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/pose'
[INFO] [rosbag2_transport]: All requested topics are subscribed. Stopping discovery...-o选项允许您为 bag 目录选择一个唯一的名称。后面的字符串(本例中为subset)是 bag 目录名称。
要同时记录多个话题,只需在--topics后面用空格分隔每个话题。在这种情况下,上面的命令输出确认了两个话题都被记录。
您可以移动乌龟,完成后按Ctrl-C。
注意:您还可以在命令中添加另一个选项-a,它会记录系统上的所有话题。
3.3 将记录分割成多个文件
您还可以根据记录持续时间或文件大小将记录分割成多个文件。-d <max_bag_duration>确保每个文件在开始写入新文件之前持续时间不超过<max_bag_duration>秒,或者-b <max_bag_size>确保每个文件大小不超过<max_bag_size>字节。这可以防止文件过大难以处理,并在记录操作在某个时间点损坏时保护数据不全部丢失。
运行以下命令至少 15 秒,以便写入三个 5 秒的 bag 文件:
$ ros2 bag record -o subset_split -d 5 --topics /turtle1/cmd_vel /turtle1/pose
[INFO] [rosbag2_recorder]: Press SPACE for pausing/resuming[INFO] [rosbag2_recorder]: Listening for topics...
[INFO] [rosbag2_recorder]: Event publisher thread: Starting[INFO] [rosbag2_recorder]: Recording...
[INFO] [rosbag2_recorder]: Subscribed to topic '/turtle1/cmd_vel'
[INFO] [rosbag2_recorder]: Subscribed to topic '/turtle1/pose'
[INFO] [rosbag2_recorder]: All requested topics are subscribed. Stopping discovery...[INFO] [rosbag2_cpp]: Writing remaining messages from cache to the bag. It may take a while
[INFO] [rosbag2_cpp]: Writing remaining messages from cache to the bag. It may take a while[INFO] [rosbag2_cpp]: Writing remaining messages from cache to the bag. It may take a while
完成后按Ctrl-C。您应该找到一个subset_split目录,其中包含这些文件:0_subset_split_YYYY_MM_DD-HH_MM_SS.mcap、1_subset_split_YYYY_MM_DD-HH_MM_SS.mcap,等等。
4 检查话题数据
您可以通过运行以下命令查看记录的详细信息:
$ ros2 bag info <bag_name>
在subset bag 记录上运行此命令将返回一个信息列表:
$ ros2 bag info subsetFiles: subset_0.mcapBag size: 228.5 KiB
Storage id: mcap
ROS Distro: lyrical
Duration: 48.47sStart: Oct 11 2019 06:09:09.12 (1570799349.12)
EndOct 11 2019 06:09:57.60 (1570799397.60)Messages: 3013
Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9 | Serialization Format: cdr
Topic:/turtle1/pose | Type: turtlesim_msgs/msg/Pose | Count: 3004 | Serialization Format: cdr
Services: 0Service information:
Actions: 0Action information:
或者,您也可以在单个文件上调用ros2 bag info,例如subset_split/0_subset_split_YYYY_MM_DD-HH_MM_SS.mcap,它将仅显示该部分记录的信息;在本例中为前 5 秒。
5 回放话题数据
5.1 回放单个 bag
在回放 bag 之前,在运行遥控器的终端中输入Ctrl-C。然后确保您的turtlesim窗口可见,以便查看 bag 文件的运行效果。
输入命令:
$ ros2 bag play subset[INFO] [rosbag2_player]: Set rate to 1
[INFO] [rosbag2_player]: Adding keyboard callbacks.[INFO] [rosbag2_player]: Press SPACE for Pause/Resume
[INFO] [rosbag2_player]: Press CURSOR_RIGHT for Play Next Message[INFO] [rosbag2_player]: Press CURSOR_UP for Increase Rate 10%
[INFO] [rosbag2_player]: Press CURSOR_DOWN for Decrease Rate 10%Progress bar enabled at 3 Hz.
Progress bar [?]: [R]unning, [P]aused, [B]urst, [D]elayed, [S]topped
[INFO] [rosbag2_player]: Playback until timestamp: -1
====== Playback Progress ======[1751923361.427372456] Duration 0.00/48.47 [R]
您的乌龟将跟随您记录时输入的相同路径(虽然不是 100% 完全相同;turtlesim对系统时间的微小变化很敏感)。

因为subset文件记录了/turtle1/pose话题,只要turtlesim在运行,ros2 bag play命令就不会退出,即使您没有移动乌龟。
这是因为只要/turtlesim节点处于活动状态,它就会定期在/turtle1/pose话题上发布数据。您可能注意到在上述ros2 bag info示例结果中,/turtle1/cmd_vel话题的Count信息只有 9;那正是我们记录时按下箭头键的次数。
注意/turtle1/pose的Count值超过 3000;当我们在记录时,该话题上发布了 3000 次数据。
要了解位置数据发布的频率,您可以运行命令:
$ ros2 topic hz /turtle1/pose
5.2 回放多个 bag
有时,为了分配记录工作负载,将所需的记录话题分割到多个记录中是相关的。例如,我们可以将/turtle1/cmd_vel和/turtle1/pose各自记录到自己的 bag 中。
创建两个终端实例。在第一个终端中,运行:
$ ros2 bag record -o subset_cmd_vel --topics /turtle1/cmd_vel
在第二个终端中,运行:
$ ros2 bag record -o subset_pose --topics /turtle1/pose
像之前一样移动乌龟,完成后按Ctrl-C结束两个记录。
要让这两个记录以正确的时序并行回放,为每个要包含的 bag 使用-i <bag_name>调用ros2 bag play。在本例中,运行:
$ ros2 bag play -isubset_cmd_vel -isubset_pose
这将一起回放subset_cmd_vel和subset_pose记录,回放同步以复制原始消息顺序。如果使用,可选参数--message-order {received,sent}确定消息是按照接收时间还是发布时间排序(默认为 received)。这也适用于回放单个 bag。
管理服务数据
1 环境准备
您将记录introspection_client和introspection_service之间的服务数据,然后稍后显示和回放相同的数据。要记录服务客户端和服务器之间的服务数据,必须在节点上启用服务内省。
让我们启动introspection_client和introspection_service节点并启用服务内省。您可以查看服务内省演示以获取更多详细信息。
打开一个新终端并运行introspection_service,启用服务内省:
$ ros2 run demo_nodes_cppintrospection_service --ros-args -p service_configure_introspection:=contents
打开另一个终端并运行introspection_client,启用服务内省:
$ ros2 run demo_nodes_cppintrospection_client --ros-args -p client_configure_introspection:=contents
2 检查服务可用性
ros2 bag只能记录来自可用服务的数据。要查看系统的服务列表,打开一个新终端并运行命令:
$ ros2 service list/add_two_ints
/introspection_client/describe_parameters
/introspection_client/get_parameter_types
/introspection_client/get_parameters
/introspection_client/get_type_description
/introspection_client/list_parameters
/introspection_client/set_parameters
/introspection_client/set_parameters_atomically
/introspection_service/describe_parameters
/introspection_service/get_parameter_types
/introspection_service/get_parameters
/introspection_service/get_type_description
/introspection_service/list_parameters
/introspection_service/set_parameters
/introspection_service/set_parameters_atomically
要检查客户端和服务上是否启用了服务内省,运行命令:
$ ros2 service echo --flow-style /add_two_ints
info:
event_type: REQUEST_SENT
stamp:
sec:1713995389nanosec: 386809259
client_gid: [1, 15, 96, 219, 162, 1, 108, 201, 0, 0, 0, 0, 0, 0, 21, 3]
sequence_number: 133
request:[{a: 2, b: 3}]response:[]
---您应该看到服务通信。
3 记录服务
要记录服务数据,支持以下选项。服务数据可以与话题同时记录。
记录特定服务:
$ ros2 bag record --service <service_names>
记录所有服务:
$ ros2 bag record --all-services运行命令:
$ ros2 bag record --service /add_two_ints
[INFO] [1713995957.643573503] [rosbag2_recorder]: Press SPACE for pausing/resuming[INFO] [1713995957.662067587] [rosbag2_recorder]: Event publisher thread: Starting
[INFO] [1713995957.662067614] [rosbag2_recorder]: Listening for topics...[INFO] [1713995957.666048323] [rosbag2_recorder]: Subscribed to topic '/add_two_ints/_service_event'
[INFO] [1713995957.666092458] [rosbag2_recorder]: Recording...现在ros2 bag正在记录发布到/add_two_ints服务的服务数据。要停止记录,在终端中输入Ctrl-C。
数据将积累在一个新的 bag 目录中,目录名称模式为rosbag2_年_月_日-时_分_秒。此目录将包含一个metadata.yaml以及记录格式的 bag 文件。
4 检查服务数据
您可以通过运行以下命令查看记录的详细信息:
$ ros2 bag info <bag_file_name>
Files: rosbag2_2024_04_24-14_59_17_0.mcapBag size: 15.1 KiB
Storage id: mcap
ROS Distro: lyrical
Duration: 9.211sStart: Apr 24 2024 14:59:17.676 (1713995957.676)
End: Apr 24 2024 14:59:26.888 (1713995966.888)Messages: 0
Topic information:Service: 1
Service information: Service: /add_two_ints | Type: example_interfaces/srv/AddTwoInts | Event Count: 78 | Serialization Format: cdr
5 回放服务数据
在回放 bag 文件之前,在运行introspection_client的终端中输入Ctrl-C。当introspection_client停止运行时,introspection_service也会停止打印结果,因为没有传入请求。
从 bag 文件回放服务数据将开始向introspection_service发送请求。
输入命令:
$ ros2 bag play --publish-service-requests <bag_file_name>
[INFO] [1713997477.870856190] [rosbag2_player]: Set rate to 1[INFO] [1713997477.877417477] [rosbag2_player]: Adding keyboard callbacks.
[INFO] [1713997477.877442404] [rosbag2_player]: Press SPACE for Pause/Resume[INFO] [1713997477.877447855] [rosbag2_player]: Press CURSOR_RIGHT for Play Next Message
[INFO] [1713997477.877452655] [rosbag2_player]: Press CURSOR_UP for Increase Rate 10%[INFO] [1713997477.877456954] [rosbag2_player]: Press CURSOR_DOWN for Decrease Rate 10%
[INFO] [1713997477.877573647] [rosbag2_player]: Playback until timestamp: -1您的introspection_service终端将再次开始打印以下服务消息:
[INFO] [1713997478.090466075] [introspection_service]: Incoming request
a: 2 b: 3这是因为ros2 bag play将 bag 文件中的服务请求数据发送到/add_two_ints服务。
我们还可以在ros2 bag play回放时内省服务通信,以验证introspection_service。
在ros2 bag play之前运行此命令以查看introspection_service:
$ ros2 service echo --flow-style /add_two_ints
您可以看到来自 bag 文件的服务请求和来自introspection_service的服务响应。
info:event_type: REQUEST_RECEIVED
stamp:sec:1713998176
nanosec: 372700698
client_gid: [1, 15, 96, 219, 80, 2, 158, 123, 0, 0, 0, 0, 0, 0, 20, 4]
sequence_number: 1
request:[{a: 2, b: 3}]
response:[]---
info:event_type: RESPONSE_SENT
stamp:sec:1713998176
nanosec: 373016882
client_gid: [1, 15, 96, 219, 80, 2, 158, 123, 0, 0, 0, 0, 0, 0, 20, 4]
sequence_number: 1
request:[]
response:[{sum: 5}]管理动作数据
1 环境准备
您将记录fibonacci_action_client和fibonacci_action_server之间的动作数据,然后稍后显示和回放相同的数据。要记录动作客户端和服务器之间的动作数据,必须在节点上启用动作内省。
让我们启动fibonacci_action_client和fibonacci_action_server节点并启用动作内省。您可以查看动作内省演示以获取更多详细信息。
打开一个新终端并运行fibonacci_action_server,启用动作内省:
$ ros2 run action_tutorials_pyfibonacci_action_server --ros-args -p action_server_configure_introspection:=contents
打开另一个终端并运行fibonacci_action_client,启用动作内省:
$ ros2 run action_tutorials_cppfibonacci_action_client --ros-args -p action_client_configure_introspection:=contents
2 检查动作可用性
ros2 bag只能记录来自可用动作的数据。要查看系统的动作列表,打开一个新终端并运行命令:
$ ros2 action list/fibonacci
要检查动作上是否启用了动作内省,运行命令:
$ ros2 action echo --flow-style /fibonacci
interface: GOAL_SERVICEinfo:
event_type: REQUEST_SENT
stamp:
sec:1744917904nanosec: 760683446
client_gid: [1, 15, 165, 231, 234, 109, 65, 202, 0, 0, 0, 0, 0, 0, 19, 4]
sequence_number: 1
request:[{goal_id: {uuid: [81, 55, 121, 145, 81, 66, 209, 93, 214, 113, 255, 100, 120, 6, 102, 83]}, goal: {order: 10}}]
response:[]
---...
3 记录动作
要记录动作数据,支持以下选项。动作数据可以与话题和服务同时记录。
记录特定动作:
$ ros2 bag record --action <action_names>
记录所有动作:
$ ros2 bag record --all-actions运行命令:
$ ros2 bag record --action /fibonacci
[INFO] [1744953225.214114862] [rosbag2_recorder]: Press SPACE for pausing/resuming
[INFO] [1744953225.218369761] [rosbag2_recorder]: Listening for topics...[INFO] [1744953225.218386223] [rosbag2_recorder]: Event publisher thread: Starting
[INFO] [1744953225.218580294] [rosbag2_recorder]: Recording...[INFO] [1744953225.725417634] [rosbag2_recorder]: Subscribed to topic '/fibonacci/_action/cancel_goal/_service_event'
[INFO] [1744953225.727901848] [rosbag2_recorder]: Subscribed to topic '/fibonacci/_action/feedback'
[INFO] [1744953225.729655213] [rosbag2_recorder]: Subscribed to topic '/fibonacci/_action/get_result/_service_event'
[INFO] [1744953225.731315612] [rosbag2_recorder]: Subscribed to topic '/fibonacci/_action/send_goal/_service_event'
[INFO] [1744953225.735061252] [rosbag2_recorder]: Subscribed to topic '/fibonacci/_action/status'
...现在ros2 bag正在记录/fibonacci动作的动作数据:目标、结果和反馈。要停止记录,在终端中输入Ctrl-C。
数据将积累在一个新的 bag 目录中,目录名称模式为rosbag2_年_月_日-时_分_秒。此目录将包含一个metadata.yaml以及记录格式的 bag 文件。
4 检查动作数据
您可以通过运行以下命令查看记录的详细信息:
$ ros2 bag info <bag_file_name>
Files: rosbag2_2025_04_17-22_20_40_0.mcapBag size: 20.7 KiB
Storage id: mcap
ROS Distro: lyrical
Duration: 9.019568080sStart: Apr 17 2025 22:20:47.263125070 (1744953647.263125070)
End: Apr 17 2025 22:20:56.282693150 (1744953656.282693150)Messages: 0
Topic information:Services: 0
Service information:Actions: 1
Action information:Action:/fibonacci | Type: example_interfaces/action/Fibonacci | Topics: 2 | Service: 3 | Serialization Format: cdr
Topic:feedback | Count: 9Topic:status | Count: 3
Service:send_goal | Event Count: 4
Service:cancel_goal | Event Count: 0
Service:get_result | Event Count: 4
5 回放动作数据
在回放 bag 文件之前,在运行fibonacci_action_client的终端中输入Ctrl-C。当fibonacci_action_client停止运行时,fibonacci_action_server也会停止打印结果,因为没有传入请求。
从 bag 文件回放动作数据将开始向fibonacci_action_server发送请求。
输入命令:
$ ros2 bag play --send-actions-as-client <bag_file_name>
[INFO] [1744953720.691068674] [rosbag2_player]: Set rate to 1[INFO] [1744953720.702365209] [rosbag2_player]: Adding keyboard callbacks.
[INFO] [1744953720.702409447] [rosbag2_player]: Press SPACE for Pause/Resume[INFO] [1744953720.702423063] [rosbag2_player]: Press CURSOR_RIGHT for Play Next Message
[INFO] [1744953720.702431404] [rosbag2_player]: Press CURSOR_UP for Increase Rate 10%[INFO] [1744953720.702437677] [rosbag2_player]: Press CURSOR_DOWN for Decrease Rate 10%
Progress bar enabled at 3 Hz.Progress bar [?]: [R]unning, [P]aused, [B]urst, [D]elayed, [S]topped
[INFO] [1744953720.702577680] [rosbag2_player]: Playback until timestamp: -1====== Playback Progress ======
[1744953656.281683207] Duration 9.02/9.02 [R]您的fibonacci_action_server终端将再次开始打印以下服务消息:
[INFO] [1744953720.815577088] [fibonacci_action_server]: Executing goal...
[INFO] [1744953720.815927050] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1])
[INFO] [1744953721.816509658] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2])
[INFO] [1744953722.817220270] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3])
[INFO] [1744953723.817876426] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5])
[INFO] [1744953724.818498515] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5, 8])
[INFO] [1744953725.819182228] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5, 8, 13])
[INFO] [1744953726.820032562] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5, 8, 13, 21])
[INFO] [1744953727.820738690] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34])
[INFO] [1744953728.821449308] [fibonacci_action_server]: Feedback: array('i', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
这是因为ros2 bag play将 bag 文件中的动作目标请求数据发送到/fibonacci动作。
我们还可以在ros2 bag play回放时内省动作通信,以验证fibonacci_action_server。
在ros2 bag play之前运行此命令以查看fibonacci_action_server。您可以看到来自 bag 文件的动作目标请求和来自fibonacci_action_server的服务响应:
$ ros2 action echo --flow-style /fibonacci
interface: STATUS_TOPICstatus_list: [{goal_info: {goal_id: {uuid: [34, 116, 225, 217, 48, 121, 146, 36, 240, 98, 99, 134, 55, 227, 184, 72]}, stamp: {sec: 1744953720, nanosec: 804984321}}, status: 4}]
---interface: GOAL_SERVICE
info:event_type: REQUEST_RECEIVED
stamp:sec:1744953927
nanosec: 957359210
client_gid: [1, 15, 165, 231, 190, 254, 1, 50, 0, 0, 0, 0, 0, 0, 19, 4]
sequence_number: 1
request:[{goal_id: {uuid: [191, 200, 153, 122, 221, 251, 152, 172, 60, 69, 94, 20, 212, 160, 40, 12]}, goal: {order: 10}}]
response:[]---
interface: GOAL_SERVICEinfo:
event_type: RESPONSE_SENT
stamp:
sec:1744953927nanosec: 957726145
client_gid: [1, 15, 165, 231, 190, 254, 1, 50, 0, 0, 0, 0, 0, 0, 19, 4]
sequence_number: 1
request:[]response:[{accepted: true, stamp: {sec: 1744953927, nanosec: 957615866}}]
---interface: STATUS_TOPIC
status_list: [{goal_info: {goal_id: {uuid: [191, 200, 153, 122, 221, 251, 152, 172, 60, 69, 94, 20, 212, 160, 40, 12]}, stamp: {sec: 1744953927, nanosec: 957663383}}, status: 2}]
---
interface: FEEDBACK_TOPICgoal_id:
uuid: [191, 200, 153, 122, 221, 251, 152, 172, 60, 69, 94, 20, 212, 160, 40, 12]
feedback:
sequence:[0, 1, 1]---
...总结
您可以使用ros2 bag命令记录 ROS 2 系统中话题、服务和动作上传递的数据。无论您是与他人分享您的工作还是内省自己的实验,这都是一个值得了解的好工具。
后续步骤
您已经完成了“CLI 工具”教程!下一步是开始“客户端库”教程,从创建工作空间开始。
相关资料
关于ros2 bag的更详细解释可以在README中找到。关于服务记录和回放的更多信息可以在设计文档中找到。关于动作记录和回放的更多信息可以在设计文档中找到。有关 QoS 兼容性和ros2 bag的更多信息,请参阅rosbag2:覆盖 QoS 策略。
本文档完整翻译自 ROS 2 Lyrical 官方文档,仅用于学习交流。
夜雨聆风