主要内容

readMessages

从rosbag阅读消息

自从R2019b

描述

例子

公司= readMessages ()从所有的消息返回数据BagSelectionrosbagreader对象。消息中返回单元阵列的消息。得到一个BagSelection对象,使用rosbag

例子

公司= readMessages (,)返回的数据在指定的行信息。的行范围是[1,bag.NumMessages]。

例子

公司= readMessages (___“DataFormat”格式)返回数据的单元阵列结构或单元阵列的消息对象使用的前一个输入参数。指定格式作为“结构”“对象”

使用结构可以显著高于使用消息对象,和自定义消息数据可以直接读没有加载消息定义使用rosgenmsg

请注意

在未来的版本中,ROS工具箱将使用的消息结构,而不是对象ROS的消息。

现在使用的消息结构,设置“DataFormat”名称-值参数“结构”。有关更多信息,请参见ROS消息结构

例子

全部折叠

读rosbag和过滤器按主题和时间。

bagselect = rosbag (“ex_multiple_topics.bag”);bagselect2 =选择(bagselect,“时间”,[bagselect。StartTime bagselect。开始时间+ 1),“主题”,' /奥多姆');

返回所有消息作为一个单元阵列。

allMsgs = readMessages (bagselect2);

返回第一个十消息作为一个单元阵列。

firstMsgs = readMessages (bagselect2 1:10);

加载rosbag。

袋= rosbag (“ros_turtlesim.bag”);

选择一个特定的主题。

bSel =选择(包,“主题”,“turtle1 /姿势”);

读取消息的结构。指定DataFormat当阅读消息名称-值对。检查返回的第一个结构单元阵列的结构。

msgStructs = readMessages (bSel,“DataFormat”,“结构”);msgStructs {1}
ans =结构体字段:MessageType:“turtlesim /姿势”X: 5.5016 Y: 6.3965θ:4.5377 LinearVelocity: 1 AngularVelocity: 0

提取xy机器人轨迹点的消息和阴谋。

使用cellfun提取所有的XY字段的结构。这些字段代表xy在rosbag记录位置的机器人。

xPoints = cellfun (@ (m)双(m.X) msgStructs);yPoints = cellfun (@ (m)双(m.Y) msgStructs);情节(xPoints yPoints)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

加载一个rosbag日志文件和解析具体消息基于所选择的标准。

创建一个rosbagreader对象的所有消息rosbag日志文件。

bagMsgs = rosbagreader (“ros_multi_topics.bag”)
bagMsgs = rosbagreader属性:FilePath:“mathworks /猛击/棒/ Bdoc23a /构建/ matlab工具箱/机器人/ robotexamples / ros /数据/袋/ ros_multi_topics。袋的开始时间:201.3400 EndTime: 321.3400 NumMessages: 36963 AvailableTopics: [4 x3表]AvailableFrames: {0 x1细胞}MessageList: (36963 x4表)

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

bagMsgs2 =选择(bagMsgs,时间= [bagMsgs。StartTime bagMsgs。开始时间+ 1),主题=' /奥多姆')
bagMsgs2 = rosbagreader属性:FilePath:“mathworks /猛击/棒/ Bdoc23a /构建/ matlab工具箱/机器人/ robotexamples / ros /数据/袋/ ros_multi_topics。袋的开始时间:201.3400 EndTime: 202.3200 NumMessages: 99 AvailableTopics: [1 x3表]AvailableFrames: {0 x1细胞}MessageList: [99 x4表)

检索单元阵列中的消息选择。

公司= readMessages (bagMsgs2)
公司=99×1单元阵列{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}⋮

返回特定消息属性作为时间序列。

ts = timeseries (bagMsgs2,“Pose.Pose.Position.X”,“Twist.Twist.Angular.Y”)
timeseries timeseries包含重复的时代。共同的属性:名称:“/奥多姆属性”:把TimeInfo设为[99 x1双]:tsdata。timemetadata数据:[99 x2双]DataInfo: tsdata.datametadata

输入参数

全部折叠

rosbag指数的消息,作为一个指定BagSelectionrosbagreader对象。

的行BagSelectionrosbagreader对象,指定为一个n元向量,n检索信息的行数。向量中的每个条目对应一个编号的消息在袋子里。的行范围是[1,bag.NumMessage]。

输出参数

全部折叠

ROS消息数据,作为一个对象,返回消息对象的单元阵列,或单元阵列结构。数据来自要么BagSelection对象创建使用rosbag或者是rosbagreader对象。

您必须指定“DataFormat”、“结构”的函数来获取消息的单元阵列结构。使用结构可以显著高于使用消息对象,和自定义消息数据可以直接读没有加载消息定义使用rosgenmsg

版本历史

介绍了R2019b

全部展开