csv本质上是一种逗号分隔符语言,栏目和每一行的值都用逗号分割开来,如图:
和Excel共同的特征为:
csv文件在Excel中打开形式如图:
有时候topic里面的东西一行有很多内容,放在一起非常杂乱,可以在弹出的Text Import
选项卡中,自定义分隔符Separator Options
中勾选Other
,添加:
分隔符
Excel一般能处理256*256=65536行,超过这些行就只能用MATLAB或者Python等其他工具打开了
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
使用方法:
$ rqt_bag bag_name.bag
在弹出的Bag窗口中可以查看topic,并且绘制图像,使用方法:
在左侧的目录树中右击topic/sub_topic
,弹出菜单中选择view-plo
t,勾选相应的topic查看。
小结:
rosbag info 和rqt_bag 两个命令都能查看一个bag的信息,区别为
- rosbag info 是在命令行下查看bag信息,只能看到话题信息和头文件信息,不能看到里面的内容
- rqt_bag 命令是在可视化窗口中查看bag信息,可以看到所有的数据,并且可以绘图查看
- rosbag info 的有点是执行速度特别快,可以快速查看信息,rqt_bag 优点是可视化信息丰富
提取bag文件中的数据并保存为csv格式,提取topic的标准格式为
rostopic echo -b <BAGFILE> -p <TOPIC> > <output>.csv
# 是bag文件,为数据所在的topic
rostopic echo
命令一次只能提取一个topic,如果想提取一个topic目录中的若干个文件,也可以将TOPIC
中的路径改为上一层目录,生成一个yaml的格式化文本
新建一个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
在终端中给bag2csv.sh
赋予可执行权限,然后执行脚本
Linux的shell编程参考:linux中的sh脚本语法
$ chmod 777 bag2csv.sh
$ ./bag2csv.sh
最终得到如下3个文件:
1. topic1.csv
2. topic2.csv
3. topic3.csv