主要内容

BagSelection

用于存储ROSBAG选择的对象

描述

BagSelection对象是ROSBAG中的消息的索引。您可以使用它来从ROSBAG中提取消息数据,根据特定条件选择邮件,或创建一个时间序列消息属性。

Rosbag.加载一个rosbag并创建BagSelection目的。

选择以时间和主题(如时间和主题)过滤rosbag。

创建

描述

= rosbag (文件名创造一个可索引的BagSelection对象,,它包含在输入路径处的rosbag的所有消息索引,文件名。要访问数据,可以调用readMessages时间序列提取相关数据。

Rosbag.其他语法。

例子

bagsel=选择(返回一个对象,bagsel,包含所有消息BagSelection对象,

此功能不会更改原始内容BagSelection目的。返回对象,bagsel,是包含指定消息选择的新对象。

选择用于其他语法,并按时间和主题等标准进行筛选。

特性

展开全部

此属性是只读的。

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

数据类型:字符

此属性是只读的。

选择中第一个消息的时间戳,指定为标量(单位为秒)。

数据类型:

此属性是只读的。

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

数据类型:

此属性是只读的。

选择中的消息数,指定为标量。当您第一次加载ROSBAG时,此属性包含ROSBAG中的消息数。选择带有的消息子集后选择,该属性显示此子集中的消息数。

数据类型:

此属性是只读的。

选择中的主题表,指定为表格。表中的每一行列出了一个主题,此主题的消息数,消息类型和类型的定义。例如:

NumMessages MessageType MessageDefinition  ___________ _________________ _______________________________________________________________ / 奥多姆99 nav_msgs /测程法' #这是位置和速度的估计……”

数据类型:表格

此属性是只读的。

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

数据类型:单元阵列

此属性是只读的。

选择中的消息列表,指定为表。表中的每一行都列出了一条消息。

数据类型:表格

对象功能

canTransform 验证转换是否可用
getTransform. 检索两个坐标帧之间的变换
readMessages 阅读来自rosbag的信息
选择 在ROSBAG中选择消息的子集
时间序列 为所选消息属性创建时间序列对象

例子

全部折叠

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

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

bagMsgs = rosbag (“ex_multiple_topics.bag”);

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

BAGMSGS2 = SELECT(BAGMSGS,'时间'......[bagMsgs。StartTime bagMsgs。开始时间+ 1),“主题”' /奥多姆');

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

公司= readMessages (bagMsgs2);

以时间序列的形式返回某些消息属性。

ts = timeeries(bagmsgs2,“Pose.Pose.Position.X”......'twist.twist.angular.y');

从rosbag中获取信息。如果在MATLAB®路径上尚未可用,请指定到robag的完整路径。

bagselect = rosbag (“ex_multiple_topics.bag”);

选择按时间和主题筛选的消息子集。

BAGSELECT2 = SELECT(BAGSELECT,'时间'......[bagselect。开始时间bagselect.StartTime + 1],“主题”' /奥多姆');

查看有关ROSBAG日志文件的信息,请使用Rosbag Info.文件名在哪里文件名是一个rosbag(。包) 文件。

Rosbag.信息“ex_multiple_topics.bag”
路径:/ tmp / Bdoc21a_1622859_205151 tp61fad796 / ros-ex32890909 / ex_multiple_topics。包Version: 2.0 Duration: 2:00s (120s) Start: Dec 31 1969 19:03:21.34 (201.34) End: Dec 31 1969 19:05:21.34 (321.34) Size: 23.6 MB Messages: 36963 Types: gazebo_msgs/LinkStates [48c080191eb15c41858319b4d8a609c2] nav_msgs/Odometry [cd5e73d190d741a2f92e81eda573aca7] rosgraph_msgs/Clock [a9c97c1d230cfc112e270351a944ee47] sensor_msgs/LaserScan [90c7ef2dc6895d81024acba2ac42f369] Topics: /clock 12001 msgs : rosgraph_msgs/Clock /gazebo/link_states 11999 msgs : gazebo_msgs/LinkStates /odom 11998 msgs : nav_msgs/Odometry /scan 965 msgs : sensor_msgs/LaserScan

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

加载rosbag。

bag = rosbag(“ros_turtlesim.bag”);

获取可用框架的列表。

框架= bag.availableframes;

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

tf = getTransform(包,“世界”,框架{1});

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

tftime = rostime(bag.starttime + 1);如果(Cantransform(袋,“世界”tf2 = getTransform(bag,“世界”{1},帧,tfTime);结尾

加载rosbag。

bag = rosbag(“ros_turtlesim.bag”);

选择一个特定的主题。

bsel = select(包,“主题”“turtle1 /姿势”);

以结构形式读取消息。指定dataformat.读取消息时的名称值对。检查返回的单元结构阵列中的第一个结构。

msgstructs = ReadMessages(BSEL,“DataFormat”“结构”);msgstructs {1}
ans =.结构体字段:MessageType: ' turturlesim /Pose' X: 5.5016 Y: 6.3965 Theta: 4.5377线性速度:1角速度:0

提取XY.来自消息的点并绘制机器人轨迹。

cellfun提取所有的Xy结构中的字段。这些字段表示XY.记录时机器人的位置。

xpoints = Cellfun(@(m)双(m.x),msgstructs);ypoints = Cellfun(@(m)双(m.y),msgstructs);绘图(Xpoints,YPoints)

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

在R2019B中介绍