主要内容

rosbag

打开并解析“rosbag”日志文件

描述

例子

= rosbag (文件名创建一个可转位BagSelection对象,,它包含来自罗斯包在path的所有消息索引文件名.得到一个BagSelection对象,使用rosbag.要访问数据,调用readMessagestimeseries提取相关数据。

一个rosbag是一种用于存储ROS消息数据的文件格式。它们主要用于记录ROS网络中的消息。您可以使用这些包进行离线分析、可视化和存储。看到ROS Wiki页面了解更多有关rosbags

bagInfo= rosbag(“信息”,文件名以结构形式返回信息,bagInfo,这是关于罗斯包的内容文件名

例子

rosbag信息文件名在MATLAB中显示信息®命令窗口关于罗斯包的内容在文件名.信息包括消息数量、开始和结束时间、主题和消息类型。

例子

全部折叠

从飞船上获取信息。如果在MATLAB®路径上不可用,请指定到rosbag的完整路径。

bagselect = rosbag (“ex_multiple_topics.bag”);

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

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

如果需要查看rosbag日志文件的信息,请使用rosbag信息文件名在哪里文件名是一个无赖(.bag)文件。

rosbag信息“ex_multiple_topics.bag”
路径:/ tmp / Bdoc21b_1757077_251445 tpa9e00cc8 / 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获得变换(.bag)文件通过加载rosbag和检查可用的帧。从这些框架中,使用getTransform查询两个坐标帧之间的转换。

加载rosbag。

袋= rosbag (“ros_turtlesim.bag”);

获取可用框架的列表。

帧= bag.AvailableFrames;

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

tf = getTransform(包,“世界”、帧{1});

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

tfTime = rostime(包。开始时间+ 1);如果(canTransform(包“世界”tf2 = getTransform(袋子,“世界”{1},帧,tfTime);结束

加载rosbag。

袋= rosbag (“ros_turtlesim.bag”);

选择一个特定的主题。

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

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

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

提取xy点从消息和绘制机器人的轨迹。

使用cellfun提取所有的XY字段来自结构。这些字段表示xy机器人在罗斯包记录期间的位置。

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

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

输入参数

全部折叠

要访问的rosbag的文件名和路径,指定为字符串标量或字符向量。这个路径可以是相对的,也可以是绝对的。

输出参数

全部折叠

选择rosbag消息,返回为BagSelection对象句柄。

关于罗斯包内容的信息,以结构形式返回。该结构包含与rosbag文件及其内容相关的字段。rosbag结构的输出示例如下:

路径:\ ros \ \ 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

介绍了R2019b