话题录制回放
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 自动化测试。