ROS学习之消息包
一个包是ROS中用于存储ROS 消息数据的文件格式。包 的扩展名为.bag - 在ROS中具有重要作用,并且已经编写了各种各样的工具来允许您存储,处理,分析和可视化它们。
在线计算图中使用
包通常由诸如rosbag的工具创建,该工具订阅一个或多个ROS 主题,并且将序列化的消息数存储在接收到的文件中。这些包文件也可以在ROS中回放到与他们记录的相同的主题,甚至重新映射到新的主题。
使用ROS计算图中的包文件与ROS节点发送相同的数据通常没有区别,尽管您可能遇到存储在消息数据内的时间戳数据的问题。因此,rosbag 工具包括一个发布与数据记录在文件中的时间对应的模拟时钟的选项。
包文件格式对于记录和播放都非常有效,因为消息以与ROS的网络传输层中使用的相同的表示形式存储。
离线使用和数据迁移
消息包是数据记录在ROS中的主要机制,这意味着它们具有各种离线功能。研究人员使用包文件工具链来记录数据集,然后可视化,标记它们并存储以供将来使用。Bag文件也被用于执行PR2机器人的长期硬件诊断记录。
像rqt_bag这样的工具可让您可视化包文件中的数据,包括绘制字段和显示图像。您还可以使用rostopic命令从控制台快速检查包文件数据。rostopic支持列出包文件主题以及回显数据到屏幕。
在rosrecord软件包中也有程序化的API,使C ++和Python软件包能够迭代存储的消息。为了更快地操作bag文件,rosbag工具支持重新包装一个bag文件,这样可以将匹配特定过滤器的消息提取到一个新的包文件。
存储在包文件中的数据通常非常有价值,所以袋子文件也被设计为在更新msg文件时容易地迁移。包文件格式存储相应消息数据的msg文件,并且像rosbagmigration这样的工具可以让您编写规则,以便在包装文件过期时自动更新。
包工具
较旧的工具
以下工具已被rosbag 取代,但仍然支持:
包格式
包文件的基本格式不应与普通用户相关。它可以更改,但向后兼容性将由程序化访问库或自定义转换库维护。