rosbag使用及bag2mat(.bag--->.mat)使用

目录

目录

一、rosbag使用

1、rosbag record使用

2、rosbag info查看数据基本信息

3、rosbag play

4、用rostopic echo命令转换格式

5、可视化显示工具:rqt_bag

二、bag2mat使用

1、GitHub资源下载

2、运行bag2mat



参考链接:
bag2mat github资源

一、rosbag使用

1、rosbag record使用

在开始记录rostopic之前,方便起见,先创建一个专门的文件夹,存放数据包:

mkdir ~/bagfiles

然后进入文件夹,开始录制数据包

cd ~/bagfiles
rosbag record -a 

其中-a参数等价于--all,表示将当前发布的所有topic数据都录制保存到一个.bag文件中。也可以只记录某些感兴趣的topic,命令如下:

rosbag record /topic1 /topic2 /topic3

上述命令录制的.bag文件的名字为日期加时间。如果要指定生成数据包的名字,则用如下命令: 

rosbag record -o fileName -a
rosbag record -O fileName.bag -a
  • -o PR

    EFIX(小写o)等价于--output-prefix=PREFIX,只需指定文件名的前缀,其中PREFIX是需要自定义的文件名的前缀。

  • -O NAME(大写O)等价于--output-name=NAME,需指定前缀和后缀,其中NAME是需要自定义的包含前后缀的完整的文件名

2、rosbag info查看数据基本信息

1、查看rosbag包的基本信息,可以看到包长,消息个数,类型,topic名,msg名

rosbag info filename.bag

显示类似下面信息:

$ rosbag info 1.bag 
path:        1.bag
version:     2.0
duration:    3.3s
start:       Aug 24 2019 21:37:53.35 (1566653873.35)
end:         Aug 24 2019 21:37:56.65 (1566653876.65)
size:        7.9 KB
messages:    20
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
topics:      /turtle1/cmd_vel   20 msgs    : geometry_msgs/Twist

2、读取rosbag包指定 topic 的所有 msg 内容

rostopic echo -b square_cmd_1.bag /turtle1/cmd_vel
rostopic echo -b square_cmd_1.bag /turtle1/pose

3、按照时间片,截断rosbag包,生成一个新的短包

rosbag filter square_cmd_1.bag square_cmd_1_filter.bag "t.to_sec() > 1684977250.80 and t.to_sec() < 1684977450.45"

3、rosbag play

回访数据包中的topic:

rosbag play <bagfile>

开始播放立刻暂停,按空格继续:

rosbag play --pause bag_name.bag

如果只播放感兴趣的 topic ,则用命令:

rosbag play <bagfile> --topic /topic_name1
#或者
rosbag play bag_name.bag --topics /topic_name1 /topic_name2

在上述播放命令执行期间,空格键可以暂停播放

4、用rostopic echo命令转换格式

提取bag文件中的数据并保存为csv格式,提取topic的标准格式为:

rostopic echo -b <BAGFILE> -p <TOPIC> > <output>.csv 
# <BAGFILE>是bag文件,<TOPIC>为数据所在的topic

rostopic echo命令一次只能提取一个topic

# save into .csv files
rostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.csv

# save into .txt files
rostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.txt

5、可视化显示工具:rqt_bag

提供全方位的图形化界面,具有录制,播放,显示,保存,加载文件,暂停等功能:

rqt_bag bag_name.bag

二、bag2mat使用

1、GitHub资源下载

GitHub - neufieldrobotics/rosbag_toolkit

进入编辑工作空间的src子目录下载

cd ~/catkin_ws/src/
git clone https://github.com/neufieldrobotics/rosbag_toolkit.git

 根据github bag2mat提示,安装相关python库

rosbag
roslib
scipy
argparse
yaml
utm
logging

命令为pip install scipy

然后退回到工作空间目录,编译

cd catkin_ws/

catkin_make

2、运行bag2mat

将配置文件test_config.yaml和字典文件msg_dict.yaml放入bagfiles文件夹中,其中配置文件中使用自己需要的话题:-[topic name, message type, name for variable in matfile]

运行命令:

rosrun bag2mat bag2matpy -c test_config.yaml -d msg_dict.yaml -i bagname.bag -o matname.mat

具体更多命令可以参照GitHub原文

ROS机器⼈技术 机器⼈技术-rosbag详细使⽤教程 详细使⽤教程! 在 ROS 系统中,可以使⽤ bag ⽂件来保存和恢复系统的运⾏状态,⽐如录制雷达和相机话题的 bag 包,然后回放⽤来进⾏联合外参标定。 这⾥记录下我学习官⽅的 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 ⽤法,需要的可以查找下。 ⼀、 ⼀、rosbag 基本作⽤ 基本作⽤ rosbag ⼯具可以录制⼀个包、从⼀个或多个包中重新发布消息、查看⼀个包的基本信息、检查⼀个包的消息定义,基于 Python 表达式过滤 ⼀个包的消息,压缩和解压缩⼀个包以及重建⼀个包的索引。 rosbag ⽬前常⽤的命令如下(fix 和 filter 暂时没有⽤到): record:⽤指定的话题录制⼀个 bag 包 info:显⽰⼀个 bag 包的基本信息,⽐如包含哪些话题 play:回放⼀个或者多个 bag 包 check:检查⼀个 bag 包在当前的系统中是否可以回放和迁移 compress:压缩⼀个或多个 bag 包 decompress:解压缩⼀个或多个 bag 包 reindex:重新索引⼀个或多个损坏 bag 包 我在⽬前项⽬的使⽤中,⽤的最多的就是 record、info 以及 play 功能,先录制想要的话题包,录制完毕检查下包的信息,最后再回放作为 算法的输⼊,下⾯就详细学习下上⾯命令的⽤法。 ⼆、 ⼆、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.bagrosbag record -O session2_090210.bag /chatter 录制系统中所有的话题: rosbag record -a 使⽤ -h 查看 record 使⽤⽅法,很多命令都可以⽤这个: rosbag record -h 三、 三、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 msg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值