将一组消息从 rosbag 加载到 Matlab

Loading a set of messages from rosbag into Matlab

我很好奇是否有更好的方法将ROS包文件中的信息加载到Matlab中。

我目前的工作流程是:

bag = rosbag(FILE_LOCATION)
bagSel = select(bag,'Topic','/mavros/imu/data')
X_imu_raw = timeseries(bagSel)
t_imu_angvel = X_imu_raw.Time - bag.StartTime
X_imu_angvel = X_immu_raw.Data(:,8:10) % indices of X,Y, and Z

当必须加载大量不同的消息集时,这会变得非常麻烦。我不确定如何从 timerseries 中提取消息集,例如,我可以通过以下方式提取一个轴的 angular 速度:

timeseries(bagSel,'AngularVelocity.X')

理想情况下,我想写这样的东西:

timeseries(bagSel,'AngularVelocity')

并从主题(x、y 和 z)中提取所有 angular 速度消息,但我不确定这是否可行,也不确定如何做?

我假设您正在尝试将 ROSBAG 数据导入 Matlab。根据我们使用 IMU 消息的经验,我们发现 matlab 工具箱非常慢,因此分叉了一些现有代码来开发对我们有效的东西。这有点麻烦,但是一旦您添加了自己的定义,这段代码就会运行得非常快。我们可以在 10 秒内处理袋子,而使用 Matlab 工具箱可能需要 10 分钟。基本上它是用 C++ 编写的,带有硬编码的消息定义,并使用 Matlab 的 mex 模块直接转换为 .mat 文件。希望你觉得它有用 - https://github.com/neufieldrobotics/bag2mat