录制与回放数据
将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。
由于之前做过其他的tutorials,所以关闭ros,重新打开roscore等
还是用小乌龟的例子,检测系统中所有的话题
rostopic list -v
[email protected]:~# rostopic list -v
Published topics:
* /turtle1/color_sensor [turtlesim/Color] 1 publisher
* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
* /rosout [rosgraph_msgs/Log] 2 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
上面所发布话题部分列出的话题消息是唯一可以被录制保存到文件中的的话题消息,因为只有消息已经发布了才可以被录制
创建一个bag文件的临时目录,然后进入该目录执行
rosbag record -a ,其中-a表示将所有的事件都录制到一个文件中,从下图可以看到所有的发布的话题
在对应的目录,可以看到以日期命名的录制文件。
回放功能
rosbag info 文件名 可以查看记录了什么
rosbag play 文件名可以重新回放,按空格可以暂停。再按空格开始,还有一些参数可以调整。
录制子集,如果很大的系统,发布的话题可能非常多,如果都放到一个bag文件中不现实。rosbag record命令支持只录制某些特别指定的话题到单个bag文件中,这样就允许用户只录制他们感兴趣的话题。
执行下面的命令,只记录这两个事件。新的文件名叫subset.bag
rosbag record -O subset /turtle1/cmd_vel /turtle1/pose
通过rosbag info subset.bag 可以看到确实只记录了两个话题消息
[email protected]:~/bagfiles# rosbag info subset.bag
path: subset.bag
version: 2.0
duration: 49.2s
start: Feb 09 2020 11:40:38.15 (1581219638.15)
end: Feb 09 2020 11:41:27.38 (1581219687.38)
size: 257.7 KB
messages: 3240
compression: none [1/1 chunks]
types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
turtlesim/Pose [863b248d5016ca62ea2e895ae5265cf9]
topics: /turtle1/cmd_vel 164 msgs : geometry_msgs/Twist
/turtle1/pose 3076 msgs : turtlesim/Pose