主要内容

ROS日志文件(rosbags)

介绍

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

MATLAB rosbag结构

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

袋选择对象具有与rosbag相关的以下属性:

  • 文件路径: 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:包中每条消息的列表,其中的行按记录消息的时间戳排序。这个列表可以被索引,你可以这样选择列表的一部分。调用选择允许您根据时间戳、主题或消息类型选择子集。

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

rosbag选择的工作流程

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

  • 加载一个rosbag:叫rosbag以及加载和创建文件的文件路径袋选择

  • 检查可用的信息:检查袋选择性质(AvailableTopicsNumMessages开始时间EndTimeMessageList)来确定如何选择用于分析的消息子集。

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

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

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

下图还显示了工作流。

限制

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

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

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

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

另请参阅

||

相关话题