700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux使用rostopic echo将rosbag文件转换成csv或txt文件以及sh脚本批量化操作

Linux使用rostopic echo将rosbag文件转换成csv或txt文件以及sh脚本批量化操作

时间:2022-03-26 18:46:58

相关推荐

Linux使用rostopic echo将rosbag文件转换成csv或txt文件以及sh脚本批量化操作

文章目录

1 csv是什么格式,怎么打开2 用rosbag echo命令转换格式2.1 用rosbag命令查看bag信息2.2 用rqt_bag命令打开rosbag2.3 用rostopic echo 命令转换格式2.4 写sh脚本批量化操作2.4.1 写一个sh脚本2.4.2 chmod 777赋予可执行权限

1 csv是什么格式,怎么打开

csv本质上是一种逗号分隔符语言,栏目和每一行的值都用逗号分割开来,如图:

和Excel共同的特征为:

都能被Excel表格软件打开,例如Libre office,WPS office等都是有行和列的表格数据都可以在Excel软件中进行函数操作(或在MATLAB和Python中)

csv文件在Excel中打开形式如图:

有时候topic里面的东西一行有很多内容,放在一起非常杂乱,可以在弹出的Text Import选项卡中,自定义分隔符Separator Options中勾选Other,添加分隔符

Excel一般能处理256*256=65536行,超过这些行就只能用MATLAB或者Python等其他工具打开了

2 用rosbag echo命令转换格式

2.1 用rosbag命令查看bag信息

rosbag数据查看回放保存等基本操作

# 查看.bag中包含的信息 : rosbag info# 回放.bag中包含的信息: rosbag play# 以某一频率发布消息 : rosbag play -r 2#可以理解为倍速播放# 从某一时间节点开始发布消息 : rosbag play -s 2 #从特定的bagtime开始播放# 记录所有topic信息: rosbag record -a# 记录部分信息 : rosbag record -o subset /turtle1/cmd_vel /turtle1/pose # 生成subset.bag的文件,记录的是 /turtle1/cmd_vel和/turtle1/pose两个信息

这里,主要用到的是rosbag info命令,可以查看到rostopic的结构信息。

使用方法:

$ rosbag info bag_name.bag

2.2 用rqt_bag命令打开rosbag

使用方法:

$ rqt_bag bag_name.bag

在弹出的Bag窗口中可以查看topic,并且绘制图像,使用方法:

在左侧的目录树中右击topic/sub_topic,弹出菜单中选择view-plot,勾选相应的topic查看。

小结:

rosbag info 和rqt_bag 两个命令都能查看一个bag的信息,区别为

rosbag info 是在命令行下查看bag信息,只能看到话题信息和头文件信息,不能看到里面的内容rqt_bag 命令是在可视化窗口中查看bag信息,可以看到所有的数据,并且可以绘图查看rosbag info 的有点是执行速度特别快,可以快速查看信息,rqt_bag 优点是可视化信息丰富

2.3 用rostopic echo 命令转换格式

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

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

rostopic echo命令一次只能提取一个topic,如果想提取一个topic目录中的若干个文件,也可以将TOPIC中的路径改为上一层目录,生成一个yaml的格式化文本

2.4 写sh脚本批量化操作

2.4.1 写一个sh脚本

新建一个bash脚本文件,命名为bag2csv.sh,然后添加:

# save into .csv filesrostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.csvrostopic echo -b rosbag.bag -p /topic/sub_topic2 > topic2.csvrostopic echo -b rosbag.bag -p /topic/sub_topic3 > topic3.csv

或者转换成txt格式,新建一个bash脚本文件,命名为bag2txt.sh,添加:

# save into .txt filesrostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.txtrostopic echo -b rosbag.bag -p /topic/sub_topic2 > topic2.txtrostopic echo -b rosbag.bag -p /topic/sub_topic3 > topic3.txt

2.4.2 chmod 777赋予可执行权限

在终端中给bag2csv.sh赋予可执行权限,然后执行脚本

Linux的shell编程参考:linux中的sh脚本语法

$ chmod 777 bag2csv.sh$ ./bag2csv.sh

最终得到如下3个文件:

1. topic1.csv2. topic2.csv3. topic3.csv

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。