实验需要IMU相机,跑算法是在ROS下跑,在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如相机话题的 bag 包,然后回放用来进行联合外参标定,也可以使用EVO工具显示算法轨迹,这里记录下我学习官方的 rosbag 教程的笔记。
文章目录
- 一、rosbag基本用途
- 1、rosbag 目前常用的命令
- 二、录制话题
- 1、指定的话题 topic_names 来录制 bag 包
- 2、rosbag record参数列表
- 三、显示包文件内容的可读摘要
- 四、回放bag
- (1)启动ROS
- (2)INDEMIN回放bag
- 五、rosbag check
- 六、rosbag compress
- 七、rosbag decompress
- 八、rosbag reindex
一、rosbag基本用途
rosbag 工具可以记录一个包,重新发布一个或多个包的消息,汇总一个包的内容,检查一个包的消息定义,基于Python表达式过滤一个包的消息,压缩和解压一个包,重建一个包的索引。
rosbag 官方教程
1、rosbag 目前常用的命令
- record:用指定的话题录制一个 bag 包
- info:显示一个 bag 包的基本信息,比如包含哪些话题
- play:回放一个或者多个 bag 包
- check:检查一个 bag 包在当前的系统中是否可以回放和迁移
- compress:压缩一个或多个 bag 包
- decompress:解压缩一个或多个 bag 包
- reindex:重新索引一个或多个损坏 bag 包
二、录制话题
1、指定的话题 topic_names 来录制 bag 包
rosbag record <topic_names>
rosbag record -o MH_03.bag /imsee/imu
2、rosbag record参数列表
参数 | 作用 | 备注 |
---|---|---|
-h, --help | 帮助,显示用法并退出 | |
-a, --all | 记录所有主题 | |
-e, --regex | 使用正则表达式匹配主题 | |
-p, --publish | 当记录开始写入新包时发布消息(topic =“ begin_write ”) | ROS Melodic版新增 |
-x EXCLUDE_REGEX, --exclude=EXCLUDE=REGEX | 排除与给定正则表达式匹配的主题(从-a或-e中减去) | |
-q, --quiet | 抑制控制台输出 | |
-d, --duration | 指定录制包文件的最长持续时间 | |
-o PREFIX, --output-prefix=PREFIX | 在日期戳之前将 PREFIX 添加到包名称的开头 | 常用 |
-O NAME, --output-name=NAME | 记录到名称为 NAME.bag 的包中 | 常用 |
–split | 当达到最大尺寸或持续时间时拆分包 | |
–max-splits=MAX_SPLITS | 最多拆分包 MAX_SPLITS 次,然后开始删除最旧的文件。这将创建固定大小或持续时间的记录 | ROS Melodic版新增 |
-b SIZE, --buffsize=SIZE | 使用 SIZE MB 的内部缓冲区 | |
–chunksize=SIZE | 记录到 SIZE KB 的块 | |
-l NUM, --limit=NUM | 每个主题只记录 NUM 条消息 | |
–node=NODE | 记录特定节点订阅的所有主题 | |
-j, --bz2 | 使用 BZ2 压缩 | |
–lz4 | 使用LZ4压缩 |
三、显示包文件内容的可读摘要
rosbag info 显示包文件内容的可读摘要,包括开始和结束时间,主题及其类型,消息计数、频率以及压缩统计信息
四、回放bag
rosbag play 读取一个或多个 bag 文件的内容,并以时间同步的方式回放,时间同步基于接收消息的全局时间。回放开始后,会根据相对偏移时间发布消息
rosbag play record.bag
(1)启动ROS
一般来说使用roscore
,INDEMIND相机单独使用ROS节点
roslaunch imsee_ros_wrapper start.launch
rostopic list 可以列出发布的节点,-o表示录制完保存 bag 包名称为 MH_03 + 时间戳.bag 格式,INDEMIND双目IMU相机的话题是imsee,相机话题是/imsee/image,imu话题是/imsee/imu
(2)INDEMIN回放bag
rosbag play MH_03_2023-06-22-16-04-51.bag
五、rosbag check
检查一个 bag 在当前系统中是否可以回放
六、rosbag compress
如果录制的 bag 很大,我们可以压缩它,默认的压缩格式是 bz2
rosbag compress MH_03_2023-06-22-16-04-51.bag
七、rosbag decompress
使用需要解压缩
rosbag decompress MH_03_2023-06-22-16-04-51.bag
八、rosbag reindex
如果回放遇到问题,提示 reindex 的话,直接执行即可,这个会自动生成一个原 bag 的备份
rosbag reindex MH_03_2023-06-22-16-04-51.bag