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.
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.
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.