ROS录制和回放数据
本博客将总结如何通过rosbag将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。
1. 录制数据
本节将记录ROS系统运行时的话题数据,记录的话题数据将会累积保存到bag文件中。
首先,在三个不同的窗口中分别执行一下命令产生数据:
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
以上操作将会启动两个节点——一个turtlesim可视化节点和一个turtlesim键盘控制节点。在运行turtlesim键盘控制节点的终端窗口中,按下键盘上的方向可以让turtl运动起来。
1.1 录制发布的话题
首先让检查看当前系统中发布的所有话题:
$ rostopic list -v
Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 3 publishers
* /rosout_agg [rosgraph_msgs/Log] 1 publisher
* /turtle1/pose [turtlesim/Pose] 1 publisher
Subscribed topics:
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
* /rosout [rosgraph_msgs/Log] 1 subscriber
上面所发布话题部分列出的话题消息是唯一可以被录制保存到文件中的的话题消息,因为只有消息已经发布了才可以被录制。/turtle1/cmd_vel话题是teleop_turtle节点所发布的命令消息并作为turtlesim节点的输入。而/turtle1/color_sensor和/turtle1/pose是turtlesim节点发布出来的话题消息。
另打开一个新窗口,执行以下命令开始录制: