ros提供了方便的录包指令,基本使用如下:
rosbag record /topic_1 /topic_2 ...
这里记录下,类似于滑动窗口的方式录制指定size的N个bag包。这主要用于只录制最近一段时间的数据包,老的数据包会自动被覆盖掉。对于硬盘空间有限的场景下很实用。命令如下:
#!/bin/bash
BAG_DIR=~/roslog
if [ ! -d $BAG_DIR ];then
echo "mkdir for recording rosbag"
mkdir -p $BAG_DIR
fi
OS= cat /etc/os-release | grep VERSION_ID | cut -d"=" -f2
if [ "$OS" = "16.04" ];then
source /opt/ros/kinetic/setup.bash
elif [ "$OS" = "18.04" ];then
source /opt/ros/melodic/setup.bash
elif [ "$OS" = "20.04" ];then
source /opt/ros/noetic/setup.bash
fi
rosbag record -o $BAG_DIR --lz4 /odom /scan /imu_data /camera_01/rgb/image_raw --size=1000 --split --max-splits=10
对于脚本中的几个参数描述如下:
参数 | 说明 | 示例 |
---|---|---|
-o | 保存的bag包名的前缀,前缀后会带时间戳信息 | roslog_2022-12-12-08-25-44_0.bag |
–lz4 | 使用 LZ4 压缩 | |
–size= | 一个包的最大size | –size=1000: 一个包最大size为1000M |
–split | 当达到一个包的最大size后会记录新的bag包 | |
–max-splits= | 最多只记录的数据包个个数 | –max-splits=10: 滚动记录最近的10个bag包 |
更多的参数可以通过以下指令进行查询:
rosbag record --help