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
属性(AvailableTopics
,NumMessages
,开始时间
,EndTime
,MessageList
)以确定如何选择一个消息子集进行分析。选择消息:叫
选择
根据所需的属性创建消息的选择。提取消息数据:叫
readMessages
或timeseries
以单元格数组或时间序列数据结构的形式获取消息数据。可视化,分析或处理数据:将提取的数据用于您的特定应用。您可以绘制数据图或开发处理数据的算法。
下图还显示了工作流。
限制
在MATLAB中的rosbag支持中有一些限制:
另请参阅
rosbag
|readMessages
|BagSelection