关闭

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

5405人阅读 评论(0) 收藏 举报
分类:
将运行的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复制运行系统的行为的能力是有限的。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14323次
    • 积分:185
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:11篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论