[ROS 系列学习教程] rosbag 命令行介绍

2024-02-25 13:36

本文主要是介绍[ROS 系列学习教程] rosbag 命令行介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ROS 系列学习教程(总目录)

本文目录

  • rosbag 命令行
    • 1.1 rosbag check
    • 1.2 rosbag compress
    • 1.3 rosbag decompress
    • 1.4 rosbag filter
    • 1.5 rosbag fix
    • 1.6 rosbag info
    • 1.7 rosbag play
    • 1.8 rosbag record
    • 1.9 rosbag reindex

有时我们需要将 topic 中的数据保存下来以便后面分析,为了提供这一功能,ROS提供了 rosbag 工具集。

rosbag提供了API接口和命令行工具,其中常见的API包括C++和Python。

rosbag 命令行

常用命令行

rosbag check  	    检查一个包是否可以在当前系统中播放
rosbag compress  	压缩一个或多个bag文件
rosbag decompress  	解压缩一个或多个bag文件
rosbag filter  	    根据条件过滤bag文件内容
rosbag fix  	    修复bag文件中的消息,以便在当前系统中播放
rosbag info  	    查看bag文件简要信息
rosbag play  	    以时间同步的方式播放一个或多个bag文件的内容
rosbag record  	    记录一个包含指定topic内容的bag文件
rosbag reindex      重新索引一个或多个bag文件

1.1 rosbag check

有时我们需要更新topic的msg,但对于已经录制的bag文件,它使用的是旧的msg,此时的bag文件会与系统的新msg发生冲突,ROS为了解决这一问题,设计了 bag migration 包迁移机制 。一个bag文件是否需要迁移则可以使用 rosbag check 命令检查。

在这里插入图片描述

1.2 rosbag compress

压缩一个或多个bag文件

目前支持 bz2lz4 格式,默认为 bz2 ,使用 --lz4 选项可以选择 lz4 压缩格式。

另外,每次压缩文件之前,会备份每个包文件(扩展名为 .orig.bag),如果备份文件已存在(并且未指定 -f 选项),则该工具将不会压缩该文件。

该指令选项说明如下:

compress <bag-files>

使用bz2 格式压缩bag文件

rosbag compress *.bag

--output-dir=DIR

设置文件保存路径

rosbag compress --output-dir=compressed *.bag

-f, --force

强制重写备份文件

rosbag compress -f *.bag

-q, --quiet

抑制非关键信息

rosbag compress -q *.bag

-j, --bz2

使用bz2格式压缩数据

rosbag compress -j *.bag

--lz4

使用lz4格式压缩数据

rosbag compress --lz4 *.bag

1.3 rosbag decompress

解压缩一个或多个bag文件

每次解压缩文件之前,会备份每个包文件(扩展名为 .orig.bag),如果备份文件已存在(并且未指定 -f 选项),则该工具将不会解压缩该文件。

该指令选项说明如下:

decompress <bag-files>

使用bz2 格式压缩bag文件

rosbag decompress *.bag

--output-dir=DIR

设置文件保存路径

rosbag decompress --output-dir=compressed *.bag

-f, --force

强制重写备份文件

rosbag decompress -f *.bag

-q, --quiet

抑制非关键信息

rosbag decompress -q *.bag

1.4 rosbag filter

根据条件过滤bag文件内容

显示与指定python语法的逻辑表达式匹配的消息

rosbag filter input.bag output.bag "逻辑表达式"
rosbag filter input.bag output.bag "m.data=='foo'"

其中,input.bag表示过滤之前的bag文件,output.bag表示过滤之后的bag文件。

逻辑表达式中的 m 表示 msg,另外,还有 topic 表示 topict 表示 timestamp

该命令的选项说明如下:

--print=PRINT-EXPRESSION

将逻辑表达式的匹配情况打印出来

rosbag filter --print="'%s @ %d.%d: %s' % (topic, t.secs, t.nsecs, m.data)" big.bag small.bag "topic == '/chatter'"

1.5 rosbag fix

修复bag文件中的消息,以便在当前系统中播放

如前rosbag check 所述,如果bag文件需要迁移,则可以使用 rosbag fix 修复。

rosbag fix old.bag repaired.bag myrules.bmr

其中,old.bag为修复之前的bag文件,repaired.bag 为修复之后的bag文件,myrules.bmr为修复规则,修复规则相关详见 包迁移机制 。

1.6 rosbag info

查看bag文件简要信息

在这里插入图片描述

该命令的选项说明如下:

-y, --yaml

以 YAML 格式输出

rosbag info -y test.bag

在这里插入图片描述

-k KEY, --key=KEY

仅打印给定字段信息(需要配合-y选项使用)

在这里插入图片描述

1.7 rosbag play

以时间同步的方式播放一个或多个bag文件的内容

rosbag play test1.bag test2.bag

在播放时可以随时按 空格键 以暂停播放,同时暂停播放后,可以按 s 键以单步播放。

该命令的选项说明如下:
-i, --immediate

立即播放所有topic

rosbag play -i recorded1.bag

--pause

以暂停模式开始播放

rosbag play --pause recorded1.bag

--queue=SIZE

使用大小为SIZE的传出队列 (defaults to 0. As of 1.3.3 defaults to 100).

rosbag play --queue=1000 recorded1.bag

--clock

发布时钟时间

rosbag play --clock recorded1.bag

--hz=HZ

已指定频率Hz发布 (default: 100).

rosbag play --clock --hz=200 recorded1.bag

-d SEC, --delay=SEC

每次调用发布者后等待SEC秒,以等待订阅者连接

rosbag play -d 5 recorded1.bag

-r FACTOR, --rate=FACTOR

将发布频率乘以 FACTOR.

rosbag play -r 10 recorded1.bag

-s SEC, --start=SEC

开始SEC秒进入bag

rosbag play -s 5 recorded1.bag

-u SEC, --duration=SEC

仅播放包文件中的 SEC 秒。

rosbag play -u 240 recorded1.bag

--skip-empty=SEC

跳过包中超过 SEC 秒没有消息的区域。

rosbag play --skip-empty=1 recorded1.bag

-l, --loop

循环播放

rosbag play -l recorded1.bag

-k, --keep-alive

在包结束后保持活动状态(对于发布锁定的主题很有用)。

rosbag play -k recorded1.bag

--try-future-version

即使用户不知道版本号,仍然尝试打开包文件

--topics

指定要播放的主题

rosbag play recorded1.bag --topics /topic1 /topic2 /topic3

--pause-topics

播放期间暂停的主题

--bags=BAGS

打包要播放的文件

--wait-for-subscribers

发布前等待每个主题至少有一个订阅者

--rate-control-topic=RATE_CONTROL_TOPIC

观察给定主题,如果上次发布时间超过 之前,则等到该主题再次发布才能继续播放

--rate-control-max-delay=RATE_CONTROL_MAX_DELAY

暂停前与 的最大时间差

1.8 rosbag record

记录一个包含指定topic内容的bag文件

如果以高带宽录制消息(例如来自摄像机),强烈建议在摄像机所在的同一台计算机上运行rosbag record,并将文件目标指定为本地计算机磁盘上。

可以指定多个topic

rosbag record rosout tf cmd_vel

该命令的选项说明如下:

-a, --all

记录所有topic,订阅topic是通过轮询master注册topic实现的,rosbag record -a 可能会错过某些topic的初始消息。

rosbag record -a

-e, --regex

通过正则匹配topic

rosbag record -e "/(.*)_stereo/(left|right)/image_rect_color"

-p, --publish New in ROS Melodic

排除与给定正则表达式匹配的主题(从-a-e中减去)。

rosbag record -e "/wide_stereo(.*)" -x "(.*)/points(.*)"

-d, --duration

指定录制的包文件的最大持续时间。

rosbag record --duration=30 /chatter
rosbag record --duration=5m /chatter
rosbag record --duration=2h /chatter

--max-splits=MAX_SPLITS New in ROS Kinetic

最多拆分包 MAX_SPLITS 次,然后开始删除最旧的文件。这将创建固定大小或持续时间的记录。

rosbag record --split --size 1024 --max-splits 3 /chatter
rosbag record --split --duration 10m --max-splits 6 /chatter

-b SIZE, --buffsize=SIZE

使用 SIZE MB 的内部缓冲区(默认值:256,0 = 无限)。这是在消息传递到包之前记录器对象的消息队列。降低此值可能会导致消息在到达记录进程之前被丢弃。

rosbag record -b 1024 /chatter

--chunksize=SIZE

记录到 SIZE KB 的块(默认值:768)。这是包文件对象内的缓冲区。降低该值将导致更多的磁盘写入。

rosbag record --chunksize=1024 /chatter

-l NUM, --limit=NUM

每个topic仅记录 NUM 条消息。

rosbag record -l 1000 /chatter

--node=NODE

记录指定节点订阅的所有主题

rosbag record --node=/joy_teleop

-j, --bz2

使用 BZ2 压缩。详细信息请参见 rosbag compress

rosbag record -j /chatter

--lz4

使用LZ4压缩。详细信息请参见 rosbag compress

rosbag record --lz4 /chatter

-tcpnodelay

订阅主题时使用 TCP_NODELAY 传输提示

--udp

订阅主题时使用 UDP 传输提示

1.9 rosbag reindex

用于修复损坏的包文件(或 ROS 版本 0.11 之前记录的包文件)。如果由于任何原因未完全关闭包,则索引信息可能会损坏。使用该工具重新读取消息数据并重建索引。

在重新索引包之前,会备份每个包文件(扩展名为.orig.bag )。如果备份文件已存在(并且未指定-f选项),则该工具将不会重新索引该文件。

该命令的选项说明如下:

--output-dir=DIR

指定保存的路径

rosbag reindex --output-dir=reindexed *.bag

-f, --force

强制重写备份文件

rosbag reindex -f *.bag

-q, --quiet

抑制非关键信息

rosbag reindex -q *.bag

这篇关于[ROS 系列学习教程] rosbag 命令行介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745635

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

python库fire使用教程

《python库fire使用教程》本文主要介绍了python库fire使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1.简介2. fire安装3. fire使用示例1.简介目前python命令行解析库用过的有:ar

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对