ros-infrastructure / rep

ROS Enhancement Proposals
http://www.ros.org/reps/rep-0000.html
149 stars 136 forks source link

REP-147 mandating covariances in messages is too much data for embedded #392

Open Ryanf55 opened 6 months ago

Ryanf55 commented 6 months ago

Problem

REP-147 recommends the use Odometry and Imu messages. These have covariance arrays. When using MicroXRCEDDS, this translates into 36 doubles of data, which is a ton of overhead for a tiny little STM32 running ArduPilot. Couple that with trying to push hundreds of messages a second, and we have a bit of a bandwidth problem, even when using ethernet.

I don't think the REP should be recommending using this messages with large covariances if they aren't used in embedded.

Use Case

ArduPilot supporting a REP-147 compliant MicroXRCEDDS interface.

References

px4_msgs only uses 9 elements for variances in Odometry. https://github.com/PX4/px4_msgs/blob/6c5a8e74eb2d173c0decb3feacd7e1932b64095b/msg/VehicleOdometry.msg#L23

px4_msgs doesn't even have covariances in the IMU message: https://github.com/PX4/px4_msgs/blob/6c5a8e74eb2d173c0decb3feacd7e1932b64095b/msg/VehicleImu.msg#L9

This talk from the 2023 PX4 developer conference is great: https://youtu.be/qly4tXj-aaA?si=umf_XRdErrm2Ll9f&t=1121

Thoughts from the ArduPilot dev team

Tridge, the lead dev of ArduPlane, says it's a "huge waste of bandwidth": https://github.com/ArduPilot/ardupilot/pull/26187#discussion_r1495073830

Alternatives

Modify the messages to allow leaving the covariances empty if they can't be populated. This won't be a good solution for humble which is what ~32% of people use according to the last ROS developer survey because it would break ABI.

ros-discourse commented 6 months ago

This issue has been mentioned on ROS Discourse. There might be relevant details there:

https://discourse.ros.org/t/february-2024-meetings-aerial-robotics/35981/5