SYS_FMU_TASK affects output message rates

When I set SYS_FMU_TASK to 0, actuator_outputs and multirotor_motor_limits messages are output at ~330Hz.
When I set SYS_FMU_TASK to 1, actuator_outputs and multirotor_motor_limits messages are output at ~275Hz.

The SYS_FMU_TASK description implies that latency would be affected. But I didn’t realize that it would result in different output rates for these messages.

Is this the expected behavior?

Thanks.

Interesting. @bkueng does that make sense to you?

Yes: if disabled, fmu is scheduled at a fixed frequency, around 330Hz. If enabled, it runs in sync with the publication of actuator controls, which is what you see.
Note that the lower frequency is actually not worse, because running faster than actuator controls gets updated does not improve the result. If running on the work queue it just runs a bit faster to account for scheduling overhead.
In (near) future we want to increase the actuator controls rate to 1kHz.

1 Like