| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> ROS:rosbag命令行指令详解(一) -> 正文阅读 |
|
[人工智能]ROS:rosbag命令行指令详解(一) |
目录 获取当前工作目录下bag文件的信息1. 以列表的方式显示bag文件的信息: 指令格式:rosbag info BagFileName.bag 结果如下所示: 在这个信息列表中包含了“参与通信的消息类型types、话题名称topics以及两者的对应关系(topics:types)”。 2. 以yaml格式显示bag文件的信息: 指令格式:rosbag info -y BagFileName.bag 结果如下所示: YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。 3. 基于yaml信息表示形式,提取bag文件的某类信息: 指令格式:rosbag info -y -k info_type BagFileName.bag 结果如下所示: 可提取的信息类型为:消息的类型types、话题相关信息topics、bag文件存放路径path、ROS的版本信息vision、录制持续时长duration、录制开始时间start/停止时间end、bag文件大小(以byte为单位)、录制消息总数量messages、文件的压缩格式compression、是否添加至索引列表indexed。 在当前工作目录下创建bag文件1. 文件以“NAME_开始录制时的时间戳“的名称命名 指令格式:rosbag record -o base_name 执行结果: 2. 文件以“指定名称”的名称命名 指令格式:rosbag record -O name 执行结果: 对指定话题进行录制1. 对指定话题进行录制 指令格式:rosbag record topic_name1 topic_name2… 2. 对所有话题进行录制 指令格式:rosbag record -a 3. 对符合要求的topic进行录制 指令格式:rosbag record -e –regex 其中–regex表示正则表达式,表征着我们想要匹配的条件,简单示例: ROS中正则表达式的使用规则: 指令格式:rosbag record -e –regex -x –regex 我们对比发现:-x指令意味着从-e指令筛选出的topic中排除一些符合条件的topic。 4. 当开始录制时,发布一条通知消息 当我们查看topic列表,会发现: 当开始录制bag文件时,会产生一个节点专门记录订阅主题,并将在这些主题上发布的所有消息的内容写入一个包文件: 并且在开始录制时,监听节点会向/begin_write全局消息发送一条string类型的消息。 5. 录制指定时间
使用rosbag record指令时,指定录制时间使用—duration开头,以“—duration=time_value”的形式输入,主要形式有以下几种:
当然,也可以对某一个特定的topic进行指定时间的录制: 虽然—duration=time_value topic_name可以对指定topic话题发布的消息录制指定的时长,但是当-a -e与其同时存在时,情况如下所示: 无论使用什么topic匹配指令,最后录制的话题都是所有录制话题的“并集“。 6. 创建bag文件 7. 按照指定条件拆分bag文件 指令格式:--split –duration=time_value?或者?—size=size_value 由于文件的输出有两种(-o和-O),一种是base_name加时间戳后缀的,一种是指定base_name,这两种文件名格式生成的拆分bag文件如下所示: --duration和--size只能存在一个,两者不可共存! 8. 指定最大生成文件拆分次数 指令格式:–max-split=max_split_number 我们一定要将最大文件拆分次数和最大生成文件总是区分开来,文件拆分次数与文件总数关系如下所示:
从上面的关系表格就可以得出–max-split数值与文件总数的关系:
9. 消息缓冲队列的大小
命令示例: 下面这个命令也是开辟缓冲区,但是比起—buffsize更加先进:
命令示例: 对于chunksize和buffsize的区别,我着实没有理解,如果大家有新的见解,敬请回复,在ROS wiki上两者的区别如下: 我这里只知道:消息队列是协调消息收发双方速度不匹配而分配的缓冲区。关于文件缓冲区,详见:[Linux]——文件缓冲区_lucky52529的博客-CSDN博客_文件缓冲区https://blog.csdn.net/lucky52529/article/details/90546674 10. 针对于topic录制指定数量的消息 对于全部topic进行指定消息数量的录制: 对于特定topic进行指定消息数量的录制: 我们可以使用rosbag info bag_file_name.bag来查看: 11. 记录特定节点接受的消息 其中/turtlesim_node节点所在的节点图如下所示: 其中/turtlesim_node节点订阅的话题也就两个“/turtle2/cmd_vel“和”/turtle1/cmd_vel“。 12. bag文件的压缩 BZ2压缩格式: LZ4压缩格式: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:35:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |