ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 15 录制与回放数据
程序员文章站
2022-07-13 15:45:25
...
http://wiki.ros.org/cn/ROS/Tutorials/Recording%20and%20playing%20back%20data
引言
本节教程的将描述如何录制ROS系统运行过程中的数据到一个.bag文件中,然后通过回放该数据来重现之前的运动过程。
1.录制
1.1 先决条件
我们打开两个节点:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
查看当前存在话题的详细消息:
$ rostopic list -v
1.2 录制数据
一旦产生了消息,就可以录制了。
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
这里创建了一个新文件夹,使用rosbag record -a 命令录制所以话题的数据。
此时我们使用箭头移动小龟。使得在话题上产生数据。
1.3 查看.bag文件
使用rosbag info命令来查看录制的bag文件。
$ rosbag info <recorded bagfile>
此命令只会看到详细的统计信息,看不懂实际的数据记录。
1.4 回放.bag文件
现在,我们退出turtle_teleop_key
节点。
执行以下命令:
$ rosbag play <your bagfile>
$ rosbag play -r 2 <your bagfile>
“-r”选项可以改变消息发布的速率,用于加快回放。
1.5 录制数据子集
当运行复制系统时,会有大量的数据发布(如摄像头的视频流),在这种情况下录制数据是不实际的,因此可以选择性的录制某些数据.
例如:
$ rosbag record -O subset /turtle1/command_velocity /turtle1/pose
- -O 选项指定了.bag文件的名字,这里为“subset”
- 后面两个参数指定了要记录的话题。
1.6 局限性
在前述部分中你可能已经注意到了turtle的路径可能并没有完全地映射到原先通过键盘控制时产生的路径上——整体形状应该是差不多的,但没有完全一样。造成该问题的原因是turtlesim的移动路径对系统定时精度的变化非常敏感。rosbag受制于其本身的性能无法完全复制录制时的系统运行行为,rosplay也一样。对于像turtlesim这样的节点,当处理消息的过程中系统定时发生极小变化时也会使其行为发生微妙变化,用户不应该期望能够完美的模仿系统行为。