主要内容

readMessages

从ROSBAG阅读消息

描述

例子

公司= ReadMessages(控件中的所有消息返回数据袋式选择目的,.消息以消息单元数组的形式返回。

得到一个袋式选择对象,使用rosbag

例子

公司= ReadMessages(指定行中的消息返回数据.行的范围是[1,bag.nummessages]。

例子

公司= ReadMessages(___“DataFormat”,“结构”)使用先前输入参数的任何一组将数据返回为结构单元阵列。使用结构比使用消息对象要快得多,而且可以直接读取自定义消息数据,而无需使用使用加载消息定义RosgenMsg.

请注意

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

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

例子

全部折叠

阅读rosbag和过滤话题和时间。

bagselect = rosbag ('ex_multiple_topics.bag');bagselect2 =选择(bagselect,“时间”...[bagselect.startTime Backselect.startTime + 1],“主题”'/ odom');

以单元格数组的形式返回所有消息。

allMsgs = readMessages (bagselect2);

以单元格数组的形式返回前10条消息。

firstMsgs = readMessages (bagselect2 1:10);

加载ROSBAG。

袋= rosbag ('ros_turtlesim.bag');

选择特定主题。

bSel =选择(包,“主题”'/ turtle1 / pose');

将消息作为结构。指定DataFormat读取消息时的名称-值对。检查返回的结构单元数组中的第一个结构。

msgStructs = readMessages (bSel,'datomformat''struct');msgStructs {1}
ans =结构体字段:MessageType:'turtlesim / pose'x:5.5016 y:6.3965θ:4.5377线性透视:1 Angularvelocity:0

提取xy从信息点并绘制机器人轨迹。

使用cellfun提取所有XY来自结构的字段。这些字段代表xyROSBAG录制期间机器人的位置。

xPoints = cellfun(@(m) double(m. x),msgStructs);yPoints = cellfun(@(m) double(m.Y),msgStructs);情节(xPoints yPoints)

图中包含一个轴。轴包含一个类型为line的对象。

输入参数

全部折叠

一个包中包含的所有消息,指定为袋式选择目的。

袋式选择对象指定为n元向量,n从中检索消息的行数。向量中的每个条目对应于袋子中的一个编号消息。行的范围是[1,bag.nummessage.]。

输出参数

全部折叠

ROS消息数据,作为一个对象、消息对象的单元数组或结构的单元数组返回。数据来自袋式选择对象创建使用rosbag.您必须指定“DataFormat”、“结构”在函数中获取消息作为单元格数组的结构。使用结构比使用消息对象要快得多,而且可以直接读取自定义消息数据,而无需使用使用加载消息定义RosgenMsg.

兼容性考虑因素

全部展开

行为将在未来的版本中改变

另请参阅

||

介绍了R2019b