17.2 检查并回放bag文件
现在我们已经使用rosbag record命令录制了一个bag文件,接下来我们可以使用rosbag info检查看它的内容,使用rosbag play命令回放出来。接下来我们首先会看到在bag文件中都录制了哪些东西。我们可以使用info命令,该命令可以检查看bag文件中的内容而无需回放出来。在bag文件所在的目录下执行以下命令:
你应该会看到如下类似信息:
这些信息告诉你bag文件中所包含话题的名称、类型和消息数量。我们可以看到,在之前使用rostopic命令查看到的五个已公告的话题中,其实只有其中的四个在我们录制过程中发布了消息。因为我们带-a参数选项运行rosbag record命令时系统会录制下所有节点发布的所有消息。
下一步是回放bag文件以再现系统运行过程。首先在turtle_teleop_key节点运行时所在的终端窗口中按Ctrl+C退出该节点。让turtlesim节点继续运行。在终端中bag文件所在目录下运行以下命令:
在这个窗口中你应该会立即看到如下类似信息:
默认模式下,rosbag play命令在公告每条消息后会等待一小段时间(0.2秒)后才真正开始发布bag文件中的内容。等待一段时间的过程可以通知消息订阅器消息已经公告了消息数据可能会马上到来。如果rosbag play在公告消息后立即发布,订阅器可能会接收不到几条最先发布的消息。等待时间可以通过-d选项来指定。
最终/turtle1/command_velocity
话题将会被发布,同时在turtuelsim
虚拟画面中turtle应该会像之前你通过turtle_teleop_key
节点控制它一样开始移动。从运行rosbag play
到turtle
开始移动时所经历时间应该近似等于之前在本教程开始部分运行rosbag record
后到开始按下键盘发出控制命令时所经历时间。你可以通过-s参数选项让rosbag play
命令等待一段时间跳过bag文件初始部分后再真正开始回放。最后一个可能比较有趣的参数选项是-r
选项,它允许你通过设定一个参数来改变消息发布速率。如果你执行:
你应该会看到turtle的运动轨迹有点不同了,这时的轨迹应该是相当于当你以两倍的速度通过按键发布控制命令时产生的轨迹。
Last updated