跳到主要内容

话题录制回放

ros2 bag 是 ROS 2 中一个非常强大的命令行工具,用于录制(Record)回放(Play) ROS 2 系统中的话题(Topics)数据。

它的核心作用就像是一个“行车记录仪”或“录音机”:在机器人运行、测试或仿真时,你可以将传感器数据、控制指令、定位信息等完整地录制下来存成文件;之后在实验室或办公室里,你可以随时“回放”这些数据,让系统误以为机器人仍在真实运行。这对于数据分析、算法调试、系统复现和离线测试至关重要。


1. 核心功能与常用命令

① 录制数据 (Record)

录制指定话题或所有话题的数据,并保存为 bag 文件。

  • 录制指定话题

    ros2 bag record /topic_name1 /topic_name2
  • 录制所有话题-a--all):

    ros2 bag record -a
  • 指定保存的文件夹名称-o):

    ros2 bag record -o my_scan_data /scan

    这会创建一个名为 my_scan_data 的文件夹,里面包含实际的数据库文件和元数据。

② 回放数据 (Play)

将录制好的 bag 文件重新发布到 ROS 2 网络中。

  • 回放数据
    ros2 bag play <bag_folder_name>
    (注意:参数是录制时生成的文件夹路径,而不是单个文件)
  • 倍速回放(例如 2 倍速 -r 2.0):
    ros2 bag play <bag_folder_name> -r 2.0
  • 循环回放-l--loop):
    ros2 bag play <bag_folder_name> -l
  • 只回放指定话题
    ros2 bag play <bag_folder_name> --topics /scan

③ 查看 Bag 信息 (Info)

在不回放的情况下,查看 bag 文件的基本信息(如持续时间、消息数量、包含的话题及数据类型等)。

  • 查看信息
    ros2 bag info <bag_folder_name>

2. 典型应用场景

  • 离线调试算法:在室外录制一段激光雷达(LiDAR)和 IMU 数据,回到办公室后,通过 ros2 bag play 重复播放这段数据,用来反复调试和优化建图(SLAM)算法。
  • Bug 复现:当机器人偶发性出现故障时,如果当时开启了 ros2 bag 录制,开发人员可以通过回放故障发生前的数据,精准复现并定位问题。
  • 自动化回归测试:将标准的数据集(Bag)输入给待测节点,对比其输出是否符合预期,用于 CI/CD 自动化测试。