rosbag录包
时间: 2025-07-05 18:11:56 浏览: 10
### 使用 `rosbag` 录制 ROS 数据包
`rosbag` 是 ROS(Robot Operating System)中一个非常重要的工具,用于录制和回放 ROS 系统中的数据流。通过 `rosbag`,可以将指定的 topic 数据记录到 `.bag` 文件中,便于后续的离线分析和调试。
#### 基本命令
1. **录制所有话题的数据**
如果希望录制系统中所有话题的数据,可以使用以下命令:
```bash
rosbag record -a
```
这会将所有当前活跃的话题数据录制到一个以时间戳命名的 `.bag` 文件中 [^2]。
2. **录制特定话题的数据**
如果只需要录制特定的话题数据,可以通过指定话题名称来实现。例如,录制 `/camera/image_raw` 和 `/imu/data` 两个话题的数据:
```bash
rosbag record /camera/image_raw /imu/data
```
这会生成一个包含这两个话题数据的 `.bag` 文件 [^2]。
3. **为录制的数据包命名**
默认情况下,`rosbag` 会根据当前时间和日期自动生成文件名。如果需要自定义文件名,可以使用 `-O` 参数:
```bash
rosbag record -O my_recording.bag /camera/image_raw
```
这样就可以将 `/camera/image_raw` 话题的数据录制到名为 `my_recording.bag` 的文件中 [^2]。
4. **添加前缀或后缀**
如果希望在录制过程中为文件名添加前缀或后缀,可以使用 `-o` 参数:
```bash
rosbag record -o prefix_ /camera/image_raw
```
这会在生成的文件名前加上 `prefix_` 前缀 。
5. **分片录制**
对于长时间的录制任务,可以使用 `--split` 参数将数据分成多个文件,每个文件的大小或持续时间可以根据需求设定。例如,每隔一分钟生成一个新的 `.bag` 文件:
```bash
rosbag record --split --duration=1m -o recording_
```
这样每次录制一分钟的数据,并生成新的文件名 [^4]。
6. **录制并设置 `use_sim_time`**
在某些情况下,可能需要将录制的数据用于仿真环境。此时可以使用 `--clock` 参数,确保录制的数据能够正确地与仿真时间同步:
```bash
rosbag record --clock /topic_name
```
这会在录制时启用 `use_sim_time` 模式,使得录制的数据可以在仿真环境中正确播放 。
#### 高级用法
1. **录制并重新生成新包**
在录制的同时,可以结合 `rosbag play` 和 `rosbag record` 来创建新的数据包。例如,先播放已有的 `mahao_110511.bag` 文件,然后录制其中的 `/velodyne_points` 话题到新的文件中:
```bash
rosbag play mahao_110511.bag --clock
rosbag record -O mahao_1.bag /velodyne_points
```
这样可以从现有数据中提取特定话题并保存为新的 `.bag` 文件 [^3]。
2. **合并多个 `.bag` 文件**
如果有多个 `.bag` 文件需要合并成一个文件,可以使用 `merge_bag.py` 脚本进行操作:
```bash
python merge_bag.py -v merged.bag *.bag
```
这会将当前目录下的所有 `.bag` 文件合并为一个名为 `merged.bag` 的文件 [^4]。
3. **过滤 `.bag` 文件**
如果需要从现有的 `.bag` 文件中提取部分内容,可以使用 `rosbag filter` 命令。例如,只保留 `1.bag` 中最后 10 秒的数据到 `_temp.bag` 中:
```bash
rosbag filter 1.bag _temp.bag "t.to_sec() >= $(rosbag info -y 1.bag | grep 'end:' | awk '{print $2}' | awk -F '.' '{print $1}') - 10"
```
这个命令会根据时间戳筛选出最近 10 秒的数据并保存到新的文件中 [^4]。
#### 注意事项
- **磁盘空间**:录制大量数据时,需要注意磁盘空间是否充足。建议提前估算所需空间并做好备份。
- **话题选择**:录制时应谨慎选择要录制的话题,避免录制不必要的数据,以免占用过多存储空间。
- **时间同步**:在录制多传感器数据时,确保各话题的时间戳是同步的,以便后续处理和分析。
阅读全文
相关推荐


















