文章目的:使用ROS录制数据并解析(txt, img)
文章核心部分转载自:ROS学习篇(七)rostopic消息记录、回放、转.txt

一、通过Bag文件记录话题消息

当发布话题的节点运行后,通过rostopic list列出当前运行的话题,然后记录:

mkdir bagfile
cd bagfile
rosbag record -a  #记录所有的话题

当消息记录完成后,结束ctrl+c终止record的命令行,在新建的bagfile文件夹(可以在任意位置,方便找到就行)中会生成年-月-日-时-分-秒.bag文件。

以Intel realsense zr300举例(可以不用看这个例子),由于realsense zr300传感器比较多,其驱动maplab_realsense发布的话题比较多,有imu,fisheye,color,depth,IR等等

我通过rosbag record -a记录所有的数据,得到:

二、数据重现

我们使用rosbag命令将数据记录在bag文件之后,还可以利用里面的数据重现我们节点的运行状态。

cd bagfile
rosbag info <file_name>

会显示此bag文件的一些详细信息(如下图),之前录制了所有的topic的信息,因此,当使用rosbag info的时候,会显示所有topic的信息。

回放
cd bagfile
rosbag play <bagfile_name>

默认情况下,rosbag play命令会等待0.2秒之后才开始发布信息,这是为了在发布信息之前通知所有订阅信息的节点,以使它们能够及时地接收到rosbag play发布的信息。这个等待时间可以用-d选项指定。

因为rosbag record记录数据是有延迟的,所以在执行rosbag play最初的一小段时间里消息不会发布,使用-s选项后跟秒数可以跳过bag文件记录的前几秒。

-r,它可以改变信息发布的速度:

rosbag play -r 2 <bagfile_name>   #以两倍的速度发布记录的消息
回放指定话题
rosbag play <your bagfile name> --topics /topic_name

三、录制选定的话题进行录制数据

在一个包含数百个话题的大型系统中(比如我刚提到的realsense zr300),经常会发布诸如图像等的大量的信息,把它们都记录到一个文件里是不现实的,好在rosbag record命令提供了仅记录部分话题的能力。

rosbag record -O subset /zr300_node/device_time /zr300_node/imu /zr300_node/fisheye/image_raw

-O选项指定了我们要保存的bag文件的名字(subset.bag),后面的 /zr300_node/device_time /zr300_node/imu /zr300_node/fisheye/image_raw则指定了三个我们要记录信息的话题。

注:rosbag record/play无法完美重现系统的状态。解释:
rosbag受制于其本身的性能无法完全复制录制时的系统运行行为,rosplay也一样。对于像turtlesim这样的节点,当处理消息的过程中系统定时发生极小变化时也会使其行为发生微妙变化,用户不应该期望能够完美的模仿系统行为。

四、.bag文件转.txt

file_name.bag文件中topic_name话题的消息转换到Txt_name.txt文件中:

rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt

比如我,将上述录制的bag数据中imu的部分提取到txt文件中来:

rostopic echo -b subset.bag -p  /zr300_node/imu > imu.txt

五、.bag 文件失败,只出现.bag.active文件

经验之谈:在没有ctrl+c打断的情况下,数据一般会是.bag.active的状态,如果进行了Ctrl+c终止,还是.bag.active的状态,那可能就是在数据录制的过程中卡掉了,建议重新录制,即便是使用下面的命令恢复成了.bag文件,内部的数据还是丢失了。

恢复

恢复:

  • ①切换到"xxx.bag.active"文件所在的目录下;
  • ②命令行输入“rosbag reindex xxx.bag.active”;
  • ③输入"rosbag fix xxx.bag.active outfile_name.abg";

注:
在第二步结束后,除了原来的以.bag.active为后缀的文件之外,还会生成一个以.bag.org.active为后缀的文件,注意该文件只是中间文件,第三部输入的时候不要对该文件进行修复。

在第三步结束之后,会生成正常的.bag文件

六、使用rxplot画时间趋势曲线

在ROS系统中,标量数据可以根据消息中提供的时间戳作为时间序列绘制图形。
运行可以发布话题的节点后,可以通过rostopic list查看当前的发布的话题,现在,我们不再去使用rostopic echo <topic>,而是通过rxplot命令就能够看到随时间变化的值的曲线。

rqt_plot /topic/data //单个话题,单个数据
rqt_plot /topic/x:y:z //单个话题,向量数据
rqt_plot /topic/x /topic/y /topic/z

或者先打开GUI界面:

rosrun rqt_plot rqt_plot

然后在topic宏输入项观测的话题就可以了。
但是当某个话题数据较多时,需要plot单个数据才会有曲线,或是根本不行。待进一步研究…
在此采用第一种方法,绘制imu的加速度随时间变化曲线:
输入:

rqt_plot /zr30_node/imu/x:y:z

得到:

ROS☞rosbag/rostopic消息记录、回放、转.txt相关推荐

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

    文章目录 1 csv是什么格式,怎么打开 2 用rosbag echo命令转换格式 2.1 用rosbag命令查看bag信息 2.2 用rqt_bag命令打开rosbag 2.3 用rostopic ...

  2. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  3. python使用worldcloud模块、jieba模块做QQ消息记录词云

    一.导出QQ消息记录 然后选择[导出全部消息记录] 这里注意要将保存类型改为txt文件 二.函数处理 import re import wordcloud from PIL import Image ...

  4. 微信消息记录导出并制作图云(安卓版)

    2019-8-7 文中内容参考自博客:爱情大数据 | 你的专属微信聊天记录统计 前言: 准备在七夕那天给女朋友准备一份小礼物 就是把在一起之后的所有微信聊天记录生成一份词云 MENU 前期准备 数据文 ...

  5. ROS SMACH个人学习记录

    ROS SMACH学习个人记录 SMACH 关于抢占 一些Tips SMACH缺点 个人的结论 本文仅为个人学习记录,结论正确性待考究.欢迎大家讨论 SMACH 关于抢占 抢占需要在并发容器里面实现, ...

  6. ROS 中CompressedImage消息的发布与订阅

    背景:某些情况下需要录图像数据的包,非常占空间和带宽,尤其对于一些工业相机图像一张好几兆,每秒30帧的话一份钟好几个G,这时候可以选择的订阅压缩图像,下面直接来个demo. 先订阅一个sensor:: ...

  7. QQ群导出某人消息记录至文本【python版】

    快考试了,但是有的课没有教材也没有讲义,只有老师在群里的消息记录. QQ群里导出消息记录,发现不能导出单独的联系人. 通常解决方法 方案一:手机端查找消息记录->联系人->长截图 方案二: ...

  8. ROS知识:消息自定义的操作

    1 说明 我们一般用的消息,是系统定义的:然而系统定义的消息格式往往不够用,需要自定义消息数据, 这里介绍自定义消息的几个步骤. 2 首先定义xxx.msg文件 自定义消息,首先需要定义一个数据结构文 ...

  9. 用两个文件a.txt;b.txt.使用linux命令,复制,a.txt文档倒数第十行的记录to b.txt文档

    用两个文件a.txt;b.txt.使用linux命令,复制,a.txt文档倒数第十行的记录to b.txt文档 tail -n 10 a.txt | head -n 1 >> b.txt

最新文章

  1. 全球第三大手机操作系统!倒闭!
  2. mysql 语句 求比值_Mysql求百分比
  3. 抠图为什么要用绿布_《暮白首》为什么如此火爆?五个原因带你深度剖析
  4. 老黄历接口(免注册)
  5. Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle
  6. ORB-SLAM2和ORB-SLAM的区别
  7. 如何用excel做正交分析_使用Excel进行有交互作用的正交设计方差分析
  8. c语言全局变量默认值
  9. 实验6.2 定义一个基类BaseClass,观察构造函数和析构函数的执行情况。
  10. 2018 腾讯内部转岗面试题 1 —— 不用 sizeof 判断操作系统是 32 还是 64 位
  11. java获取系统所有字体_java获取本机所有可用字体
  12. Echarte柱状图文字位置
  13. 高德地图ios11 定位失败
  14. oracle if else嵌套,else能嵌入if吗
  15. PS如何快速简单的给人像美白
  16. 计算机按键不灵怎么回事,电脑键盘失灵,教您电脑键盘失灵怎么办
  17. Netbeans 8.0配置Python开发环境
  18. yolo imgaug数据增强 标签同时也增强
  19. 谷歌教你25招构建一个优秀的移动网站
  20. C++异常 和 SEH异常 的一点小结

热门文章

  1. matlab 求二值图像图形的面积和重心
  2. python 中的堆栈 用列表实现
  3. centos安装GNOME打开emacs
  4. Spyder has encountered an internal problem!问题解决过程
  5. 三.rocketmq-console
  6. 顺序表查找及其优化(Java)
  7. 学习总结 java 创建及其练习
  8. String和包装类Integer\Double\Long\Float\Character 都是final类型
  9. Python写入文件,但是发现文件为空,竟然未写入!
  10. 如何用C#对Gridview的项目进行汇总统计?