【ROS】rosbag

news/2024/10/18 18:28:00/

文章目录

  • 一、常用几个操作
    • 1 录包
    • 2 回放
    • 3 修复
  • 二、完整的rosbag用法
    • 1 rosbag 基本作用
    • 2 rosbag record
    • 3 rosbag info
    • 4 rosbag play
    • 5 rosbag check
    • 6 rosbag compress
    • 7 rosbag decompress
    • 8 rosbag reindex

在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如录制雷达和相机话题的 bag 包,然后回放用来进行联合外参标定。
这里记录下我学习官方的 rosbag 教程的笔记:ROS rosbag

一、常用几个操作

1 录包

# 录制所有话题:
rosbag record -a# 录制指定话题,设置 bag 包名:
rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx# 有时候我录制包不设置名称,默认按照录制结束时间命名:
rosbag record /topic1_name /topic2_name /xxx

2 回放

# 我常用的是以暂停的方式启动,防止跑掉数据:
rosbag play --pause record.bag# 你也可以直接回放:
rosbag play record.bag# 我建图过程中有时会设置以 0.5 倍速回放,也就是以录制频率的一半回放:
rosbag play -r 0.5 record.bag# 回放完后,我一般会用 rostopic list 查看下发布的主题,确保是我需要的:
rostopic list

3 修复

之前在我们小车的 Intel NUC 上录包拷到台式机上回放会报错,提示需要 reindex,执行一下即可,不过数据好像会少一些:

rosbag reindex xxx.bag

二、完整的rosbag用法

1 rosbag 基本作用

rosbag 工具可以录制一个包、从一个或多个包中重新发布消息、查看一个包的基本信息、检查一个包的消息定义,基于 Python 表达式过滤一个包的消息,压缩和解压缩一个包以及重建一个包的索引。

rosbag 目前常用的命令如下(fixfilter 暂时没有用到):

  • record:用指定的话题录制一个 bag 包
  • info:显示一个 bag 包的基本信息,比如包含哪些话题
  • play:回放一个或者多个bag包
  • check:检查一个 bag 包在当前的系统中是否可以回放和迁移
  • compress:压缩一个或多个 bag 包
  • decompress:解压缩一个或多个 bag 包
  • reindex:重新索引一个或多个损坏 bag 包

我在目前项目的使用中,用的最多的就是 recordinfo 以及 play 功能,先录制想要的话题包,录制完毕检查下包的信息,最后再回放作为算法的输入,下面就详细学习下上面命令的用法。

2 rosbag record

使用 record 订阅指定主题并生成一个 bag 文件,其中包含有关这些主题的所有消息,常见用法如下。

# 用指定的话题 topic_names 来录制 bag 包:
rosbag record <topic_names># 比如录制 rosout、tf、cmd_vel 3 个话题,录制的 bag 包以时间命名:
rosbag recoed rosout tf cmd_vel# 录制完保存 bag 包名称为 session1 + 时间戳.bag 格式:
rosbag record -o session1 /chatter# 录制完保存为指定文件名 session2_090210.bag:
rosbag record -o session2_090210.bag /chatter# 录制系统中所有的话题:
rosbag record -a# 使用 -h 查看 record 使用方法,很多命令都可以用这个:
rosbag record -h

3 rosbag info

rosbag info 显示包文件内容的可读摘要,包括开始和结束时间,主题及其类型,消息计数、频率以及压缩统计信息,常见用法如下:

显示一个 bag 包的信息:

rosbag info name.bag
$ rosbag info foo.bag
path:        foo.bag
version:     2.0
duration:    1.2s
start:       Jun 17 2010 14:24:58.83 (1276809898.83)
end:         Jun 17 2010 14:25:00.01 (1276809900.01)
size:        14.2 KB
messages:    119
compression: none [1/1 chunks]
types:       geometry_msgs/Point [4a842b65f413084dc2b10fb484ea7f17]
topics:      /points   119 msgs @ 100.0 Hz : geometry_msgs/Point
# 查看常用命令:
rosbag info -h# 输出 YAML 格式的信息:
rosbag info -y name.bag# 输出 bag 中指定域的信息,比如只显示持续时间:
rosbag info -y -k duration name.bag

4 rosbag play

rosbag play 读取一个或多个 bag 文件的内容,并以时间同步的方式回放,时间同步基于接收消息的全局时间。回放开始后,会根据相对偏移时间发布消息。

如果同时回放两个单独的 bag 文件,则根据时间戳的间隔来播放。比如我先录制一个 bag1 包,等待一个小时,然后录制另一个 bag2 包,那我在一起回放 bag1 和 bag2 时,在回放的中间会有 1 个小时的停滞期,也就是先回放 bag1,然后需要等待 1 个小时才能回放 bag2。

# 在回放过程中按空格暂停,常见用法如下,回放单个 bag:
rosbag play record.bag# 回放多个 bag,基于全局时间间隔播放:
rosbag play record1.bag record2.bag# 开始播放立刻暂停,按空格继续:
rosbag play --pause record.bag# 以录制的一半频率回放:
rosbag play -r 0.5 --pause record.bag# 指定回放频率,默认 100HZ:
rosbag play --clock --hz=200 record.bag# 循环播放:
rosbag play -l record.bag

5 rosbag check

# 检查一个 bag 在当前系统中是否可以回放:
rosbag check xxx.bag

6 rosbag compress

# 如果录制的 bag 很大,我们可以压缩它,默认的压缩格式是 bz2:
rosbag compress xxx.bag# 你也可以添加 -j 手动指定压缩格式为 bz2:
rosbag compress -j xxx.bag# 也可以使用 LZ4 来压缩数据:
rosbag compress --lz4 xxx.bag

7 rosbag decompress

# 压缩完后,使用需要解压缩:
rosbag decompress xxx.bag

8 rosbag reindex

# 如果回放遇到问题,提示 reindex 的话,直接执行即可,这个会自动生成一个原 bag 的备份:
rosbag reindex xxx.bag

http://www.ppmy.cn/news/349438.html

相关文章

BBasic-Beats!

音乐节奏类游戏。 就像PSP中的 Project DIVA、Android中的乐动舞指、ios中的节奏大师 一样 。 然而&#xff0c;我们忽略了一个重要的平台——BBasic。 于是乎、 历经N天的努力&#xff0c;基于BBasic平台的游戏Beats产生了&#xff01; dimk,ctr,mok,mot,penx,peny,ctr,n,s1,s…

My soul,Your beats!

My Soul,Your Beats! 目覚めては缲り返す 眠い朝は&#xff0f;睡意反复袭来的清晨 襟のタイをきつく缔め&#xff0f;将衣领紧紧系住 教室のドアくぐるとほんの少し胸を张って歩き出せる&#xff0f;走进教室的房门便稍能挺起些胸膛迈出脚步 そんな日常に吹き抜ける风&#…

Beats Fit Pro评测

从产品形态上看&#xff0c;Beats Fir Pro&#xff08;下文简称为Fit Pro&#xff09;和苹果的AirPods Pro似乎没有太大关系&#xff0c;两者唯一的共同点似乎就是他们都采用了入耳式的结构。但如果我们深挖两者的共同点&#xff0c;不难发现AirPods Pro和Fit Pro之间&#xff…

Beats入门简介

使用Beat收集nginx日志和指标数据 项目需求 Nginx是一款非常优秀的web服务器&#xff0c;往往nginx服务会作为项目的访问入口&#xff0c;那么&#xff0c;nginx的性能保障就变得非常重要了&#xff0c;如果nginx的运行出现了问题就会对项目有较大的影响&#xff0c;所以&…

深入浅出Vite:Vite打包与拆分

一、背景 在生产环境下,为了提高页面加载性能,构建工具一般将项目的代码打包(bundle)到一起,这样上线之后只需要请求少量的 JS 文件,大大减少 HTTP 请求。当然,Vite 也不例外,默认情况下 Vite 利用底层打包引擎 Rollup 来完成项目的模块打包。 某种意义上来说,对线上环…

在线解密PPT幻灯片

想要找回ppt幻灯片密码&#xff1f;不用下载软件&#xff0c;最简单的办法就是百度搜索“密码帝官网”&#xff0c;具体步骤如下&#xff1a;点击“立即开始”&#xff0c;在用户中心上传文件即可&#xff0c;还支持PDF文档、excel表格、word文档、WPS表格文档、RAR/ZIP压缩包文…

uniapp手机无法显示背景图片

看下图片大小是否大于40kb 如果大于40kb就压缩一下图片 如果不大于40kb,看看路径对不对 如果不大于40kb并且路径对那么。。。请另想办法

Android在页面设置背景图片

Android在页面设置背景图片 在页面上设置背景&#xff0c;不需要在布局中设置。 在onCreate方法中加入代码&#xff1a; this.getWindow().setBackgroundDrawableResource(R.drawable.a);R.drawable.a为res资源文件夹下的资源图片a