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) |
|