主要内容

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:叫rosbag以及加载和创建文件的文件路径BagSelection

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

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

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

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

下图还显示了工作流。

挑选手提包的工作流程。

限制

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

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

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

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

另请参阅

||

相关的话题

Baidu
map