ROS记录和回放数据

记录数据

打开3个终端,分别执行

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

检查一下当前系统中发布的所有话题。打开一个新终端:

rostopic list -v

现在我们将记录发布的数据。打开一个新终端:

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

控制小海龟一段时间,关闭rosbag record窗口,然后去~/bagfiles目录里寻找以时间为名臣的.bag文件,就是刚刚记录下来的文件

检查和回放数据

检查数据

在终端中打开.bag文件所在的文件夹,运行

rosbag info <your bagfile>

就可以看到.bag文件里储存的所有信息

回放数据

在终端中打开.bag文件所在的文件夹,运行

rosbag play <your bagfile>

默认模式下,rosbag play命令在公告每条消息后会等待一小段时间(0.2秒)才真正开始发布bag文件中的内容。等待一段时间是为了可以通知订阅者,消息已经公告且数据可能会马上到来。如果rosbag play在公告消息后立即发布,订阅者可能会接收不到几条最先发布的消息。等待时间可以通过-d选项来指定。
最终/turtle1/cmd_vel话题将会被发布,同时在turtuelsim中乌龟应该会像之前用turtle_teleop_key控制它那样开始移动。从运行rosbag play到乌龟开始移动时所经历时间应该近似等于开始部分运行rosbag record后到开始按下键盘发出控制命令时所经历时间。可以通过-s参数选项让rosbag play不从bag文件的开头开始,而是从某个指定的时间开始。-r选项,允许通过设定一个参数来改变消息发布速率。如果执行

rosbag play -r 2 <your bagfile>

会两倍速播放

录制数据

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

上述命令中的-O参数告诉rosbag record将数据记录到名为subset.bag的文件中,而后面的topic参数告诉rosbag record只能订阅这两个指定的话题。
通过此方法可以实现只记录想要的数据

posted @ 2023-11-04 21:43  不想要名字  阅读(155)  评论(0)    收藏  举报