将一组消息从rosbag加载到Matlab中

时间:2019-03-07 16:27:09

标签: matlab time-series ros bag

我很好奇,是否有更好的方法可以将ROS bag文件中的信息加载到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

当必须加载许多不同的消息集时,这变得非常麻烦。我不确定如何从计时器系列中提取消息集,例如,我可以通过编写以下命令来拉出一个轴的角速度:

timeseries(bagSel,'AngularVelocity.X')

理想情况下,我想写一些类似的东西:

timeseries(bagSel,'AngularVelocity')

并从主题(x,y和z)中提取所有角速度消息,但我不确定是否有可能,也不确定该怎么做?

1 个答案:

答案 0 :(得分:0)

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