Загрузка набора сообщений из rosbag в Matlab - PullRequest
0 голосов
/ 07 марта 2019

Мне любопытно, есть ли лучший способ загрузить информацию из файлов пакетов 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

Когда приходится загружать много разных наборов сообщений, это становится очень громоздким. Я не уверен, как вытащить наборы сообщений из серии таймеров, например, я могу вытащить угловую скорость только одной оси, написав:

timeseries(bagSel,'AngularVelocity.X')

В идеале я хотел бы написать что-то вроде:

timeseries(bagSel,'AngularVelocity')

и извлеките все сообщения об угловой скорости из темы (x, y и z), но я не уверен, возможно ли это и как это сделать?

1 Ответ

0 голосов
/ 08 марта 2019

Я предполагаю, что вы пытаетесь передать данные ROSBAG в Matlab.По нашему опыту работы с сообщениями IMU мы обнаружили, что набор инструментов matlab очень медленный, поэтому разветвил некоторый существующий код, чтобы разработать что-то, что эффективно работает для нас.Это немного громоздко, но как только вы добавите свои собственные определения, этот код работает очень быстро.Мы могли бы обрабатывать пакеты за 10 секунд, что могло занять 10 минут с помощью набора инструментов Matlab.В основном он написан на C ++ с жестко заданными определениями сообщений и использует mex-модуль Matlab для непосредственного преобразования в файл .mat.Надеюсь, вы найдете это полезным - https://github.com/neufieldrobotics/bag2mat

...