分享

如何学会使用BagSelection函数?

 魔都嘟嘟 2020-06-28

BagSelection

用于存储rosbag选择的对象

描述

BagSelection对象是rosbag中消息的索引。 您可以使用它从rosbag中提取消息数据,

根据特定条件选择邮件,或创建消息属性的时间序列。

使用rosbag加载rosbag并创建BagSelection对象。

使用select按时间和主题等条件过滤rosbag。

创建

句法

bag = rosbag(filename)

bagsel = select(bag)

描述

bag = rosbag(filename)创建一个可索引的BagSelection对象bag,其中包含rosbag在输入路径filename下的所有消息索引。 要访问数据,可以调用readMessages或时间序列来提取相关数据。

有关其他语法,请参见rosbag。

bagel = select(bag)返回一个对象bagsel,其中包含BagSelection对象bag中的所有消息。

此函数不会更改原始BagSelection对象的内容。 返回对象Bagsel是一个包含指定消息选择的新对象。

请参阅select以获取其他语法,并按时间和主题等条件进行过滤。

属性

FilePath — rosbag文件的绝对路径(字符向量)

此属性是只读的。

rosbag文件的绝对路径,指定为字符向量。

数据类型:char

StartTime —选择中的第一条消息的时间戳(标量)

此属性是只读的。

所选内容中第一条消息的时间戳,以秒为单位指定为标量。

数据类型:双精度

EndTime-选择中最后一条消息的时间戳

标量

此属性是只读的。

所选内容中最后一条消息的时间戳,以秒为单位指定为标量。

数据类型:双精度

NumMessages —选择标量中的消息数

此属性是只读的。

所选内容中的消息数,指定为标量。 首次加载rosbag时,此属性包含rosbag中的消息数。 使用select选择消息的子集后,该属性将显示该子集中的消息数。

数据类型:双精度

AvailableTopics —选择表中的主题表

此属性是只读的。

选择中的主题表,指定为表。 表中的每一行都列出一个主题,该主题的消息数,消息类型以及类型的定义。 例如:

数据类型:表

AvailableFrames —字符向量的可用坐标系单元列表

此属性是只读的。

可用坐标系列表,以字符向量的单元格数组形式返回。 使用canTransform检查帧之间的特定转换是否可用,或使用getTransform查询转换。

数据类型:单元格数组

MessageList —选择中的消息列表(表)

此属性是只读的。

所选内容中的消息列表,指定为表格。 表中的每一行列出了一条消息。

数据类型:表

对象功能

canTransform 验证转换是否可用

getTransform 检索两个坐标系之间的变换

readMessages 阅读来自rosbag的消息

select        在rosbag中选择消息子集

timeseries    为所选消息属性创建时间序列对象

示例

使用BagSelection对象创建rosbag选择

加载rosbag日志文件,并根据所选条件解析特定消息。

在rosbag日志文件中为所有消息创建一个BagSelection对象。

根据消息的时间戳和主题选择消息的子集。

以单元格数组的形式检索选择中的消息。

msgs = readMessages(bagMsgs2);

返回某些消息属性作为时间序列。

从rosbag检索信息从rosbag检索信息。

如果rosbag在MATLAB路径上尚不可用,请指定它的完整路径。

选择消息的子集,并按时间和主题过滤。

从文件显示rosbag信息

要查看有关rosbag日志文件的信息,请使用rosbag info文件名,其中filename是rosbag(.bag)文件。

从rosbag文件获取转换

通过加载rosbag并检查可用的帧,从rosbag(.bag)文件中获取转换。 从这些框架中,使用getTransform查询两个坐标框架之间的转换。

加载rosbag。

获取可用框架的列表。

frames = bag.AvailableFrames;

获取两个坐标系之间的最新变换。

检查在特定时间可用的转换并检索该转换。 使用canTransform检查转换是否可用。 使用rostime指定时间。

tfTime = rostime(bag.StartTime + 1);

end

从rosbag读取消息作为结构

加载rosbag。

选择一个特定的主题。

阅读消息是一种结构。 阅读消息时,请指定“数据格式”名称/值对。 检查返回的单元格数组中的第一个结构。

msgStructs{1}

从消息中提取xy点,并绘制机器人轨迹。 使用cellfun从结构中提取所有X和Y字段。 这些字段表示在rosbag记录期间机器人的xy位置。

xPoints = cellfun(@(m) double(m.X),msgStructs);

yPoints = cellfun(@(m) double(m.Y),msgStructs);

plot(xPoints,yPoints)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多