ROS Noetic入门笔记(十一)使用rosbag实现数据记录与回放

11 篇文章 19 订阅

ROS Noetic入门笔记(一)在ubuntu20.04中安装ROS Noetic并简单测试
ROS Noetic入门笔记(二)ROS Noetic创建工作空间和功能包
ROS Noetic入门笔记(三)ROS Noetic中的常用命令及工具
ROS Noetic入门笔记(四)使用rqt_console和roslaunch
ROS Noetic入门笔记(五)创建ROS话题消息(msg)和服务数据(srv
ROS Noetic入门笔记(六)使用C++编写简单的Publisher与Suscriber
ROS Noetic入门笔记(七)使用Python编写简单的Publisher与Suscriber
ROS Noetic入门笔记(八)运行Publisher与Suscriber
ROS Noetic入门笔记(九)使用C++编写简单的Server与Client
ROS Noetic入门笔记(十)使用Python编写简单的Server与Client
ROS Noetic入门笔记(十一)使用rosbag实现数据记录与回放


rosbag可以实现ROS运行时记录数据到.bag文件,然后在离线状态下可以回放这些数据

1.记录数据到.bag文件

开三个终端分别运行以下三条命令

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

启动成功后就可以用键盘来控制小海龟运动了
输入以下命令查看当前系统中发布的话题都有哪些

$ rostopic list -v

话题列表
输入余下命令创建个bagfiles文件夹用于存放rosbag记录的文件

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

-a表示记录所有发布的消息,之后控制小海龟运动一段时间,然后在数据记录终端中按Ctrl+C终止数据记录,进入bagfiles文件夹中就会看到一个以年月日时间命名的.bag文件,这就是成功生成的数据记录文件
rosbag record
.bag

2.回放数据

可以使用如下命令(rosbag info)查看数据记录文件的详细信息

rosbag info <your bagfile>

rosbag info
可以看到数据记录包中包含了话题、消息类型、消息数量等信息,按Ctrl+C终止之前打开的turtle_teleop_key控制节点病重新启动turtlesim_node节点,使用以下命令进行回放

$ rosbag play <your bagfile>

rosbag play
这里我们看到小海龟运动的路径并不是和原始键盘控制的完全一致,这就是rosbag记录和回放的局限性,原因是turtlesim跟踪的路径对时间变化非常敏感,所以rogbag难以精确复制,用户需要知悉这点
如果需要更改发布速率,请使用-r

$ rosbag play -r 2 <your bagfile>

-r 2即为以2倍的速率发布

3.只记录部分主题而不是全部

仍然启动小海龟及其键盘控制节点

$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

输入以下命令只记录/turtle1/cmd_vel 和 /turtle1/pose

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

-O subset表示记录到一个名为subset的.bag文件
按Ctrl+C终止记录,可以看到bagfiles目录下刚刚记录的subset.bag文件
subset.bag
使用rosbag info查看,确实只记录了我们希望记录的,而不是记录所有的

$ rosbag info subset.bag

rosbag info subset.bag
上一篇:ROS Noetic入门笔记(十)使用Python编写简单的Server与Client

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值