ROS2——录制数据包(bag)
在 ROS 2 中,录制数据集(bag)的工具是rosbag2。它允许你记录和回放 ROS 2 中的话题数据。
在 ROS 2 中,录制数据集(bag)的工具是 rosbag2
。它允许你记录和回放 ROS 2 中的话题数据。
1. 安装 rosbag2
如果你已经安装了 ROS 2,rosbag2
通常已经包含在默认安装中。如果没有,可以通过以下命令安装:
sudo apt install ros-<ros2-distro>-ros2bag ros-<ros2-distro>-rosbag2-storage-default-plugins
将 <ros2-distro>
替换为你的 ROS 2 发行版名称(如 humble
或 foxy
)。
2. 录制数据集
基本命令
使用以下命令录制指定话题的数据:
ros2 bag record <topic1> <topic2> ...
例如,录制 /camera/image_raw
和 /odom
话题:
ros2 bag record /camera/image_raw /odom
指定存储目录
默认情况下,录制的数据会存储在当前目录下的一个以时间戳命名的文件夹中。你可以通过 -o
参数指定输出目录:
ros2 bag record -o my_bag /camera/image_raw /odom
录制所有话题
如果你想录制所有活跃的话题,可以使用 -a
参数:
ros2 bag record -a
设置录制格式
rosbag2
支持多种存储格式(如 SQLite3、MCAP)。默认格式是 SQLite3。你可以通过 --storage
参数指定格式:
ros2 bag record -o my_bag --storage mcap /camera/image_raw
3. 查看录制信息
录制完成后,可以使用以下命令查看录制的 bag 文件信息:
ros2 bag info my_bag
这将显示 bag 文件的话题列表、消息数量、持续时间等信息。
4. 回放数据集
使用以下命令回放录制的 bag 文件:
ros2 bag play my_bag
默认情况下,bag 文件会以录制时的速度回放。你可以通过 -r
参数调整回放速度:
ros2 bag play -r 2 my_bag # 以 2 倍速回放
5. 高级功能
分割 bag 文件
如果录制时间较长,bag 文件可能会变得非常大。你可以通过 --max-bag-size
参数设置单个 bag 文件的最大大小(单位:MB):
ros2 bag record -o my_bag --max-bag-size 100 /camera/image_raw
录制特定时间段
你可以通过 --duration
参数设置录制的持续时间(单位:秒):
ros2 bag record -o my_bag --duration 60 /camera/image_raw
录制 QoS 配置
ROS 2 支持多种 QoS(服务质量)配置。你可以通过 --qos-profile-overrides-path
参数指定 QoS 配置文件:
ros2 bag record -o my_bag --qos-profile-overrides-path qos_overrides.yaml /camera/image_raw
qos_overrides.yaml
文件的内容示例:
/camera/image_raw:
reliability: reliable
durability: transient_local
6. 示例:录制相机和 IMU 数据
假设你需要录制 /camera/image_raw
和 /imu/data
话题的数据:
ros2 bag record -o my_dataset /camera/image_raw /imu/data
录制完成后,回放数据:
ros2 bag play my_dataset
7. 注意事项
- 存储空间:录制 bag 文件会占用大量磁盘空间,尤其是高频率的话题(如图像、点云)。确保有足够的存储空间。
- 性能影响:录制大量数据可能会影响系统性能,尤其是在资源有限的设备上。
- 兼容性:确保录制的 bag 文件与回放时的 ROS 2 版本兼容。
如果有更多需求(如录制特定时间段或调整 QoS),可以参考 ros2 bag
的官方文档:ROS 2 rosbag2 文档。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)