8.15-ros-bag使用
Posted lizhensheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.15-ros-bag使用相关的知识,希望对你有一定的参考价值。
rosbag-数据记录工具
参考
使用示例
rosbag-wiki
Bag file format
MATLAB working with bag file
Bag file
rqt_bag
rosgab/migration
Python 分析rosbag files
How to extract data from bag file
Matlab: transform quaternion to rotation
前言
- 因实验,需要将机器人坐标记录下来,在matlab上做对比实验
- 需要学习,rosbag的基本使用,bag文件的处理,matlab上ROS工具箱使用
记录
rosbag基本使用
- bag实际上是将一个node的行为录制下来,然后可以重新播放
- 使用命令行能够:录制,从包重新发布,获取包的概括信息,检查包的消息类型,使用Python表达式过滤包中信息,压缩解压缩包,重新索引包
- 如果录制高带宽的东西,例如图像信息,建议在本地录制和存放文件
- bag文件默认名字为日期,可以添加前缀
- 基本命令包括
- record:制定主题来录制
rosbag record rosout tf cmd_vel
rosbag record -a #所有
rosbag record --duration=30 /chatter #持续30s,5m,2h
rosbag record --split --size=1024 /chatter #空间达到1024M后分文件存储
rosbag record --split --duration=30 /chatter #持续时间到30s后分文件存储
rosbag record -o session1 /chatter #为文件名字做前缀
rosbag record -O session2_090210.bag /chatter #为文件命名
rosbag record --node=/joy_teleop #录制该节点左右消息
rosbag record -l 1000 /chatter # 录制该主题1000个消息限制
- info
- play
- 注意:如果两个包被播放,它们将作为一个包对待。比如你录制一个包,在一个小时之后再录制一个包,然后同时播放,这个时候你会经历1个小时的空白。
rosbag play recorede1.bag
rosbag play --clock recorded1.bag #发布时钟时间
rosbag play --clock --hz=200 recorded1.bag #时钟频率默认100
rosbag play -r 10 recorded1.bag # 发布速度翻倍
rosbag play -d 5 recorded1.bag #每一次advertise后等待5秒
rosbag play -u 240 recorded1.bag #只播放240s
rosbag play -l recorded1.bag # 循环播放
- check
rosbag check old.bag
rosbag check -g diagnostics.bmr diag.bag #生成一个移植规则文件migration rule file
- fix
rosbag fix old.bag repaired.bag myrules.bmr #使用规则文件恢复包文件内容
- filter
filter <in-bag> <out-bag> <expression> # 详情请访问网页,可以使用topic, m, t, 等要素,分别是主题,消息,时间
rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86"
- compress
- decompress
- reindex
- 修复包的命令
rqt_bag
- 提供全方位的图形化界面,具有录制,播放,显示,保存,加载文件,暂停等功能
数据修改
- 请参考migration网页
数据导出到matlab分析
- 先导出为CSV文件,逗号分隔值文件格式
rostopic echo -b log_file.bag /topic_name
rostopic echo -p /topic_name #使用matlab友好格式进行显示
- 再存为文件
rostopic echo -b file.bag -p /topic > data.txt
以上是关于8.15-ros-bag使用的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)