ROS Toolbox - Can't access a ROS Message Array

2 visualizaciones (últimos 30 días)
Jeff Vandegrift
Jeff Vandegrift el 29 de Oct. de 2019
Respondida: Cam Salzberger el 1 de Mayo de 2020
(cannot paste from clip board to here so I'm retyping by hand)
uwb_ts = timeseries(uwb, 'Pose.Pose.Position.X', Pose.Pose.Position.Y', 'Pose.Covariance')
where uwb is a nav_msgs/Odometry message
I can Read the scalars but I can't read the array. I don't see any examples of getting arrays.
Matlab sees this as: (can't paste into this buffer so trust me, it's Pose.Covariance) yet it crashes with a no such thing message
  1 comentario
Jeff Vandegrift
Jeff Vandegrift el 30 de Oct. de 2019
I switched from calling timeseries(<rosbag>, 'Pose.Covariance') which assumes timeseries() is working for all non-custom message types. So now I select the topic, execute readMessages(), and then iterate on the messages. So something like messages{1}.Pose.Covariance{1} gives me the XX covariance for the first message. This does appear to be slower than letting timeseries do the work, but I haven't proven that yet by removing only the covariance access and then comparing the two methods (timeseries will work with X,Y positions as long as I don't attempt to get the covariance vector).

Iniciar sesión para comentar.

Respuestas (2)

Jeff Vandegrift
Jeff Vandegrift el 30 de Oct. de 2019
I've attached more detail including the error message.

Cam Salzberger
Cam Salzberger el 1 de Mayo de 2020
Hello Jeff,
I know this is pretty old, but I wanted to get visibility on the reason for this error. I've just answered a similar question here.
The issue is that the timeseries method for BagSelection objects is only valid for use with numerical and scalar data. The Covariance field is an array, so timeseries cannot extract it. I understand that the error message is confusing, and have submitted a request to the appropriate team to look into improving it.
If you make use of readMessages(..., "DataFormat", "struct"), that is generally much faster than the standard "readMessages". It's a good way to get quick access to data.
-Cam

Categorías

Más información sobre Specialized Messages en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by