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

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

记录数据(创建一个bag文件)

首先运行小海龟例程:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

记录所有的topics

mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a

记录指定的topics

在运行一个特别复杂的程序时,可能有成百上千个topics,这时记录所有的topics就有些不太现实了。而rosbag record支持记录指定的topics上的数据:

ros record -O subset /turtle1/cmd_vel /turtle1/pose

其中的-O选项说明输出的bag文件为subset.bag文件,要记录的topics就是后面指定的两个。

检验并重放数据

检验数据

可以利用rosbag info来查看bag文件的信息:

rosbag info subset.bag
path:        subset.bag
version:     2.0
duration:    27.9s
start:       Aug 28 2016 10:33:08.22 (1472351588.22)
end:         Aug 28 2016 10:33:36.10 (1472351616.10)
size:        154.3 KB
messages:    1889
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]turtlesim/Pose      [863b248d5016ca62ea2e895ae5265cf9]
topics:      /turtle1/cmd_vel    146 msgs    : geometry_msgs/Twist/turtle1/pose      1743 msgs    : turtlesim/Pose

重放数据

关闭发布数据的节点turtle_teleop_key,然后在一个终端中输入如下命令:

rosbag play subset.bag

在turtlesim图形窗口中可以看到小海龟又在运动了,按照subset.bag文件中的数据。默认情况下rosbag play会先等待一段时间0.2秒钟,这是因为他要告诉所有订阅了这个topic的节点都知道这个topic要发布信息了,让节点们做好接收信息的准备,否则刚开始发布的几条信息节点有可能收不到。当然我们可以自定义重放的参数。

rosbag record/play的局限性

在前面进行重放演示的时候就应该已经发现,演示时小海龟的路径和原始输入时的路径并不一致。主要原因是turtlesim的路径跟踪在系统中对于微小的变化都十分敏感,然而rosbag在精确复制系统的运行情况的能力是有限的,所以这个功能好像基本没有什么用途。。。

总结

rosbag record:记录运行系统中的数据并生成bag文件
rosbag info:查看bag文件的信息
rosbag play:根据bag文件中的数据,重放系统

祝枫
2016年8月28日于哈尔滨

ROS学习笔记十一:ROS中数据的记录与重放相关推荐

  1. ROS学习笔记(十)——ROS试用练习(一)

    ROS学习笔记(十)--ROS试用练习 在此说明:之前使用的ROS是indigo,前两天电脑"炸"了,所以换了kinetic. 一.ROS文件系统导览 1.1如果你想找到turtl ...

  2. 【theano-windows】学习笔记十一——theano中与神经网络相关函数

    前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客[theano-windows]学习笔记五--theano中张量部分函数提到的张量的定义和基本运算外, 还有 ...

  3. ROS学习笔记-编码器的脉冲数据转化成ROS的odom数据

    int main(int argc, char **argv) {ros::init(argc, argv, "Odom"); //初始化一个节点ros::NodeHandle n ...

  4. 【ROS学习笔记】11.服务数据(srv)的定义与使用

    基于B站ROS公开课:[古月居]古月·ROS入门21讲 基于Ubuntu 20.04.1.Noetic版本 修正错误,并详述Python版本部署 文章目录 1 模型图 2 创建功能包 3 自定义服务数 ...

  5. 吴恩达《机器学习》学习笔记十一——神经网络代码

    吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...

  6. ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行

    ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...

  7. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  8. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  9. ROS学习笔记六:理解ROS服务和参数

    ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...

最新文章

  1. numpy.array()基本操作
  2. 快速下载Centos7:Centos镜像地址(阿里云镜像)
  3. 【JLOI2011】飞行路线
  4. Spring之Bean的配置(一)
  5. C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)
  6. 笔记本电脑桌面的计算机不见了,小编为你分析win7系统笔记本电脑桌面计算机图标不见了的设置方案....
  7. 深入解析AsyncTask
  8. UITableView分段加载数据
  9. 你想要的宏基因组-微生物组知识全在这(2022.8)
  10. 【CSS】flex布局平分三等分中间间距相等且两端对齐
  11. 重装服务器系统步骤,服务器系统重装步骤
  12. 寻找与黄金分割点最近的商
  13. linux直接点击iso安装win10,iso安装win10,win10iso直接解压安装
  14. python:实现newton_forward_interpolation牛顿前插算法(附完整源码)
  15. 北京交通大学云平台实验虚拟机踩坑
  16. scJoint integrates atlas-scale single-cell RNA-seq and ATAC-seq data with transfer learning
  17. 分组卷积/转置卷积/空洞卷积/反卷积/可变形卷积/深度可分离卷积/DW卷积/Ghost卷积/
  18. 浅析PHS无线市话市场、技术发展前景及运营思路
  19. 移动应用测试场景的五个重点
  20. Java核心技术 卷1-总结-11

热门文章

  1. 洛谷P1273 有线电视网
  2. python装饰器之函数作用域
  3. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章
  4. BZOJ 2969 期望
  5. 05章项目: QuickHit快速击键
  6. 二叉树与树、森林之间的转换
  7. 开源项目:底部动作条(BottomSheet)
  8. Unity3D游戏开发之开发游戏带来的问题
  9. jQuery 自定义选择器
  10. 网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)