rosbag--ROS中数据的记录与重放

转载 2016年08月31日 14:37:11
将运行的ROS软件上的数据记录到一个.bag文件,然后重放数据再产生相同的效果。
 
1. 记录数据(创建一个bag文件)
从一个运行的ROS系统中记录topic的数据,这个topic数据会在一个bag文件中积累。
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

 
(1) 记录所有发布的topics
$ rostopic list -v

Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 2 publishers
* /rosout_agg [rosgraph_msgs/Log] 1 publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher
 
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber

* /rosout [rosgraph_msgs/Log] 1 subscriber

这些发布的topic只是可能被记录在数据记录文件上的message文件类型。


mkdir ~/bagfiles

cd ~/bagfiles

rosbag record -a

 
2. 检验和回放bag文件

(1) 用info命令检查bag的内容而不用回放它:

$ rosbag info <your bagfile>

path:        your bagfile
version:     2.0
duration:    1:38s (98s)
start:       
end:         
size:        865.0 KB
messages:    12471
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
rosgraph_msgs/Log   [acffd30cd6b6de30f120938c17c593fb]
turtlesim/Color     [353891e354491c51aabe32df673fb446]
turtlesim/Pose      [863b248d5016ca62ea2e895ae5265cf9]
topics:      /rosout                    4 msgs    : rosgraph_msgs/Log   (2 connections)
/turtle1/cmd_vel         169 msgs    : geometry_msgs/Twist
/turtle1/color_sensor   6149 msgs    : turtlesim/Color

/turtle1/pose           6149 msgs    : turtlesim/Pose

显示了topic的名字和类型还有每个topic在bag文件中包含的messages数量。
 

(2) 重放bag文件,以在运行系统上产生相同的效果。

在运行turtle_teleop_key的终端用Ctrl+c杀死上个部分还在运行的teleop程序。让turtle继续运行。

在产生原始bag文件的目录中运行以下命令:

$ rosbag play <your bagfile>

[ INFO] [1418271315.162885976]: Opening  your bagfile.bag
 
Waiting 0.2 seconds after advertising topics... done.
 

Hit space to toggle paused, or 's' to step.

等待可以用-d来特别指定。而是使用-s参数在不是bag文件开始的其他部分开始回放。
rosbag play -r 2 <your bagfile>   通过一个特定的因子改变发布数据的速度
 
3. 记录数据子集
允许用户值记录它们感兴趣的topics。在bag文件目录中运行:
$ rosbag record -O filename /turtle1/cmd_vel /turtle1/pose
 
检查bag文件的内容rosbag info subset.bag):
path:        filename.bag
version:     2.0
duration:    12.6s
start:       
end:         
size:        68.3 KB
messages:    813
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
turtlesim/Pose      [863b248d5016ca62ea2e895ae5265cf9]
topics:      /turtle1/cmd_vel    23 msgs    : geometry_msgs/Twist

/turtle1/pose      790 msgs    : turtlesim/Pose

4. rosbag record/play的局限
注意到小乌龟的路径跟你用键盘控制的路径不是非常准确的吻合,即使大概的形状是一样的,但是小乌龟没有非常完全跟踪那个路径。原因是小乌龟跟踪的路径对系统中时间变化非常敏感。在系统中,在messages被roscore记录和处理时以及使用rosplay 产生和处理messages时,rosbag复制运行系统的行为的能力是有限的。

ROS使用教程--关于rosbag

overviewrosbag package提供了一个命令行工具以及cpp类和python的API. rosbag使用命令行能够:录制,从包重新发布,获取包的概括信息,检查包的消息类型,使用Pytho...
  • wendox
  • wendox
  • 2016年08月30日 22:17
  • 4366

ros中使用rosbag记录数据及转换视频

1.查看.bag中包含的信息 : rosbag info 2.0回放.bag中包含的信息: rosbag play 2.1以某一频率发布消息 : rosbag play ...

ROS相关:使用rospy 编写ros程序并使用rosbag存储数据

为什么使用rospyROS支持C++和Python,由于ROS的底层是由C++编写,因此大多数的ROS程序都使用C++,但是Python语言接口简单,更容易编写。并且可以使用python与深度学习的一...

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

本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况。本例子还是以小海龟例程为例。记录数据(创建一个bag文件)首先运行小海龟例程:r...
  • mountzf
  • mountzf
  • 2016年08月28日 11:13
  • 2641

ROS进二阶学习笔记(6) -- ROS Bag

ROS Bag是ROS计算图级的一个概念: Bags: ref : http://wiki.ros.org/Bags 在 计算图里 在线使用    工具:rosbag    创建bags,...
  • sonictl
  • sonictl
  • 2017年01月03日 14:41
  • 1608

10、ROS记录和重现数据

在使用ROS系统的时候,我们可能会遇到这样的需求——重现机器人在的运行状况或者分析机器人的某些运行数据。这时候我们就十分需要对数据进行记录和备份的功能,好在ROS提供了非常方便的这样的功能。一、记录数...

rosbag的使用

1. 命令行使用,有两个方式:(1) 记录所有话题:rosbag record -o(2) 记录用户自定话题:rosbag record /temp /accl默认情况下,当运行前面的命令,rosba...

如何在ROS环境中解码.bag格式数据

由于Udacity开源的数据使用了.bag格式,所以在解码其数据的时候,废了一番周折。首先,查看.bag文件信息使用rosbag info **.bag,具体如图所示:然后,根据上面信息修改expor...

从ROS bag文件中提取图像

从ROS bag文件中提取图像

ROS入门_1.16 录制与回放数据

1. 录制数据(通过创建一个bag文件) 本小节将教你如何记录ROS系统运行时的话题数据,记录的话题数据将会累积保存到bag文件中。 首先,执行以下命令: roscore rosru...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:rosbag--ROS中数据的记录与重放
举报原因:
原因补充:

(最多只允许输入30个字)