- ROS机器人开发实践
- 胡春旭
- 687字
- 2022-05-18 19:41:29
4.6 rosbag数据记录与回放
为了方便调试测试,ROS提供了数据记录与回放的功能包——rosbag,可以帮助开发者收集ROS系统运行时的消息数据,然后在离线状态下回放。
本节将通过乌龟例程介绍rosbag数据记录和回放的实现方法。
4.6.1 记录数据
首先启动键盘控制乌龟例程所需的所有节点:
$ roscore $ rosrun turtlesim turtlesim_node $ rosrun turtlesim turtle_teleop_key
启动成功后,应该可以看到可视化界面中的小乌龟了,此时可以在终端中通过键盘控制小乌龟移动。
然后我们来查看在当前ROS系统中到底存在哪些话题:
$ rostopic list -v
应该会看到类似图4-27所示的话题列表。
图4-27 查看ROS系统中的话题列表
接下来使用rosbag抓取这些话题的消息,并且打包成一个文件放置到指定文件夹中:
$ mkdir ~/bagfiles $ cd ~/bagfiles $ rosbag record -a
rosbag record就是数据记录的命令,-a(all)参数意为记录所有发布的消息。现在,消息记录已经开始,我们可以在终端中控制小乌龟移动一段时间,然后在数据记录运行的终端中按下“Ctrl+C”,即可终止数据记录。进入刚才创建的文件夹~/bagfiles中,应该会有一个以时间命名并且以.bag为后缀的文件,这就是成功生成的数据记录文件了。
4.6.2 回放数据
数据记录完成后就可以使用该数据记录文件进行数据回放。rosbag功能包提供了info命令,可以查看数据记录文件的详细信息,命令的使用格式如下:
$ rosbag info <your bagfile>
使用info命令来查看之前生成的数据记录文件,可以看到类似图4-28所示的信息。
图4-28 查看数据记录文件的相关信息
从以上信息中我们可以看到,数据记录包中包含的所有话题、消息类型、消息数量等信息。终止之前打开的turtle_teleop_key控制节点并重启turtlesim_node,使用如下命令回放所记录的话题数据:
$ rosbag play <your bagfile>
在短暂的等待时间后,数据开始回放,小乌龟的运动轨迹应该与之前数据记录过程中的状态完全相同。在终端中也可以看到如图4-29所示的回放时间信息。
图4-29 回放数据记录文件