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