主要内容

ROS日志文件(rosbags)

简介

rosbag或bag是ROS中用于存储ROS消息数据的文件格式。这些包通常是通过订阅一个或多个ROS主题创建的,并将接收到的消息数据存储在有效的文件结构中。MATLAB®可以读取这些rosbag文件,并帮助过滤和提取消息数据。下面几节详细介绍了MATLAB中rosbags的结构®以及从它们中提取数据的工作流。

MATLAB rosbag结构

访问rosbag日志文件时,调用rosbag并指定对象的文件路径。MATLAB然后创建一个BagSelection对象,该对象包含来自rosbag的所有消息的索引。

BagSelection对象具有与rosbag相关的以下属性:

  • FilePath: rosbag文件绝对路径的字符向量。

  • 开始时间:表示记录第一条消息的时间的标量

  • EndTime:表示最后一条消息被记录的时间的标量

  • NumMessages:表示文件中包含多少消息的标量

  • AvailableTopics:记录在包中的主题和消息类型的列表。这将存储为表数据,其中列出每个主题的消息数量、消息类型和消息定义。有关表数据类型的详细信息,请参见访问表中的数据.下面是这个表的输出示例:

    ans = NumMessagesMessageTypeMessageDefinition___________ ______________________ _________________ /clock 12001 rosgraph_msgs/ clock [1x185 char] /gazebo/link_states 11999 gazebo_msgs/LinkStates [1x1247 char] /odom 11998 nav_msgs/Odometry [1x2918 char] /scan 965 sensor_msgs/LaserScan [1x2123 char]
  • MessageList:包中每条消息的列表,按记录消息的时间戳排序。可以对该列表进行索引,并且可以通过这种方式选择该列表的一部分。调用选择允许您根据时间戳、主题或消息类型选择子集。

另外,请注意BagSelection对象包含所有消息的索引。但是,仍然必须使用函数来提取数据。有关提取此信息,请参见readMessages获取基于索引作为单元格数组的消息或参见timeseries用于将指定属性的数据作为时间序列读取。

罗斯袋选择的工作流程

在使用rosbag时,有一个关于如何提取数据的一般过程。

  • 装上玫瑰袋:叫rosbag以及加载和创建文件的文件路径BagSelection

  • 检查可用的消息:检查BagSelection属性(AvailableTopicsNumMessages开始时间EndTime,MessageList),以确定如何选择用于分析的消息子集。

  • 选择消息:叫选择根据所需的属性创建消息选择。

  • 提取消息数据:叫readMessagestimeseries获取单元格数组或时间序列数据结构形式的消息数据。

  • 可视化、分析或处理数据:将提取的数据用于特定的应用程序。您可以绘制数据图或开发算法来处理数据。

下图还显示了工作流。

rosbag选择的工作流。

限制

在MATLAB中的rosbag支持中有一些限制:金宝app

  • MATLAB只能解析未压缩的rosbag。看到ROS维基用于解压压缩的rosbag的工具。

  • 仅支持v2.0格式的rosbag。金宝app看到ROS维基有关不同袋子格式的更多信息

  • rosbag的文件路径必须始终可访问。因为消息选择过程不检索任何数据,所以在访问消息数据时,文件需要可用来读取。

另请参阅

||

相关的话题