文章目录
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 files
rostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.csv
rostopic echo -b rosbag.bag -p /topic/sub_topic2 > topic2.csv
rostopic echo -b rosbag.bag -p /topic/sub_topic3 > topic3.csv
或者转换成txt格式,新建一个bash脚本文件,命名为bag2txt.sh,添加:
# save into .txt files
rostopic echo -b rosbag.bag -p /topic/sub_topic1 > topic1.txt
rostopic echo -b rosbag.bag -p /topic/sub_topic2 > topic2.txt
rostopic 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.csv
2. topic2.csv
3. topic3.csv

本文介绍了如何将rosbag文件转换为csv或txt格式,包括使用rosbag echo命令查看信息,rqt_bag进行可视化,以及编写sh脚本实现批量化转换。通过rosbag info获取基本信息,rostopic echo命令提取特定topic数据,并用脚本自动化处理多个文件。
1万+





