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文件,这就是成功生成的数据记录文件
2.回放数据
可以使用如下命令(rosbag info)查看数据记录文件的详细信息
rosbag info <your bagfile>
可以看到数据记录包中包含了话题、消息类型、消息数量等信息,按Ctrl+C终止之前打开的turtle_teleop_key控制节点病重新启动turtlesim_node节点,使用以下命令进行回放
$ rosbag play <your bagfile>
这里我们看到小海龟运动的路径并不是和原始键盘控制的完全一致,这就是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文件
使用rosbag info查看,确实只记录了我们希望记录的,而不是记录所有的
$ rosbag info subset.bag