ROS下bag包的录制与回放数据

本文的主要内容是将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。

bag包的录制(创建一个bag文件)

首先我们要明白bag包中记录了ROS系统运行时的***话题***数据
首先,执行以下命令:

$ roscore
$ rosrun turtlesim turtlesim_node 
$ rosrun turtlesim turtle_teleop_key

其中 turtlesim为可视化节点
turtlesim为键盘控制节点

这时按下键盘上的方向键应该会让turtle运动起来

现在让我们录制所有发布的话题
首先让我们看看目前有哪些话题:

$ rostopic list -v

这生成以下输出:

Published topics:
 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
 * /turtle1/command_velocity [turtlesim/Velocity] 1 publisher
 * /rosout [roslib/Log] 2 publishers
 * /rosout_agg [roslib/Log] 1 publisher
 * /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:
 * /turtle1/command_velocity [turtlesim/Velocity] 1 subscriber
 * /rosout [roslib/Log] 1 subscriber

/turtle1/command_velocity话题是 teleop_turtle 节点所发布的命令消息并作为 turtlesim 节点的输入。
/turtle1/color_sensor和/turtle1/pose是 turtlesim 节点发布出来的话题消息

开始录制:
打开新的终端,输入

$ mkdir ~/savebag //创建新的文件夹
$ cd ~/savebag     //到这个文件夹下
$ rosbag record -a    //录制 -a表示录制了所有节点发布的话题

录制完成后 Ctrl-C 退出该命令,检查看 ~/savebag 目录,会有一个以年份、日期和时间命名并以 .bag 作为后缀的文件。、

此处有一个需要注意的点,小海龟是一个很经典的小程序,他运行的节点数量是比较少的。当我们运行一些比较复杂的系统时我们可以选择只录取一部分话题,即不使用-a。

$ rosbag record -O setbagname  /turtle1/cmd_vel  /turtle1/pose

上述命令中的-O参数告诉rosbag record将数据记录保存到名为setbagname.bag的文件中,同时后面的话题参数告诉rosbag record只能录制这两个指定的话题cmd_vel和pose

回放bag包内容

回放就很简单了,直接输入

$ rosbag play  xxxxx.bag //你想回放的bag包的名字

如果你是接续上面的小海龟程序,这里你需要先在 turtle_teleop_key 节点运行时所在的终端窗口中按 Ctrl+C 退出该节点。让 turtlesim 节点继续运行。再在终端中 bag 文件所在目录下运行命令

此处如果你只是想查看bag包里的内容,并不需要回放可以这样做(bag 文件中所包含话题的名称、类型和消息数量)
在 bag 文件所在的目录下执行以下命令:

rosbag info xxxxxx.bag  //你想查看的bag包的名字
  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值