[转]ROS学习笔记十一:ROS中数据的记录与重放
本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况。本例子还是以小海龟例程为例。
记录数据(创建一个bag文件)
首先运行小海龟例程:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
- 1
- 2
- 3
记录所有的topics
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
- 1
- 2
- 3
记录指定的topics
在运行一个特别复杂的程序时,可能有成百上千个topics,这时记录所有的topics就有些不太现实了。而rosbag record支持记录指定的topics上的数据:
ros record -O subset /turtle1/cmd_vel /turtle1/pose
- 1
其中的-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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
重放数据
关闭发布数据的节点turtle_teleop_key,然后在一个终端中输入如下命令:
rosbag play subset.bag
- 1
在turtlesim图形窗口中可以看到小海龟又在运动了,按照subset.bag文件中的数据。默认情况下rosbag play会先等待一段时间0.2秒钟,这是因为他要告诉所有订阅了这个topic的节点都知道这个topic要发布信息了,让节点们做好接收信息的准备,否则刚开始发布的几条信息节点有可能收不到。当然我们可以自定义重放的参数。
rosbag record/play的局限性
在前面进行重放演示的时候就应该已经发现,演示时小海龟的路径和原始输入时的路径并不一致。主要原因是turtlesim的路径跟踪在系统中对于微小的变化都十分敏感,然而rosbag在精确复制系统的运行情况的能力是有限的,所以这个功能好像基本没有什么用途。。。
总结
rosbag record:记录运行系统中的数据并生成bag文件
rosbag info:查看bag文件的信息
rosbag play:根据bag文件中的数据,重放系统
[转]ROS学习笔记十一:ROS中数据的记录与重放的更多相关文章
- ROS学习笔记十一:创建URDF 文件并在RVIZ中查看模型
Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.创建第一个URDF文件 ...
- Java学习笔记十一:Java中的方法
Java中的方法 一:什么是方法: 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 学过C语言或者其他语言的应该都知道函数这个东西,在Java中,其实方法就是函数,只不过叫法不同,在 ...
- DevExtreme学习笔记(一) DataGrid中数据提交注意事项
1.数据提交的{}数据需转化json格式 syncPost('/controller/action', { values: JSON.stringify({d:x}) }, function (res ...
- DevExtreme学习笔记(一) DataGrid中数据筛选
config.filterRow = { visible: true, applyFilter: "auto" }; config.headerFilter = { visible ...
- ROS学习笔记七:在ROS中使用USB摄像头
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...
- ROS学习笔记1-引言
该学习笔记参考ROS官方wiki的内容,见:http://wiki.ros.org/ROS/Introduction 什么是ROSROS的全称是Robot Operating System,即机器人操 ...
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
随机推荐
- Java——介绍
Java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过彼此的方法来协同工作. 对象: 对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行 ...
- HaspMap源码分析(JDK 1.8)
底层结构分析 上面这两张图分别画出了JDK 1.7.1.8底层数据结构,在JDK 1.7.1.8中都使用 了散列算法,但是在JDK 1.8中引入了红黑树,在链表的长度大于等于8并且hash桶的长度大于 ...
- java HashMap and HashMultimap 区别
http://stackoverflow.com/questions/19222029/what-is-difference-between-hashmap-and-hashmultimap The ...
- hdu 1696 Oulipo(KMP算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意 查询字符串 $p$ 在字符串 $s$ 中出现了多少次,可重叠. 题解 KMP模板题. Ti ...
- Codeforces Round #643 (Div. 2) 题解 (ABCDE)
目录 A. Sequence with Digits B. Young Explorers C. Count Triangles D. Game With Array E. Restorer Dist ...
- 【noi 2.6_162】Post Office(DP)
这题和"山区建小学"除了输入不同,其他都一样.(解析可见我的上一篇随笔) 但是,这次我对dis[][]加了一个优化,画一下图就可明白. 1 #include<cstdio&g ...
- Redundant Paths POJ - 3177 把原图变成边—双连通图
无向图概念:(这里的x->y表示x和y之间有一条无向边)1.桥:对于一个无向图,如果删除某条边后,该图的连通分量增加,则称这条边为桥 比如1->2->3->4这样一个简单得图一 ...
- 使用docker时报错“net/http: TLS handshake timeout”
问题原因 :该命令默认从docker远端镜像仓库中拉取镜像,但由于远端仓库的服务器是在国外,我们国内有的用户很可能都访问不到 解决:使用国内镜像仓库 docker pull registry.dock ...
- PowerShell随笔5---添加.NET类型
有些情况下,有些脚本命令不能满足我们的需求,而手头却能用C#很方便的实现. 我们就可以把自定义的类型Add到PowerShell中使用,使用方法和PowerShell调用.NET类库方法是一样的. 以 ...
- 二、Jmeter 后置处理器(BeanShell PostProcessor)
1.新建JDBC Request,如下图所示: 重要的参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable N ...