Control loop update frequency

Hey there, I just recently bought a Pixhawk 4 to build a multicopter from a default DJI frame.
I was thinking about developing and testing some custom flight control algorithms and was
therefore interested in the update rates of the default multicopter controller, specifically the
attitude controller.
As seen with the uorb top command, the controller gets the desired attitude and publishes the desired angular rates at 250 Hz. The actuator_controls_0 topic, which has the control inputs for the actuators, is also at 250 Hz. Why is then the actuator_output topic, representing the values given to the PWMs, at 50 Hz? I’ve also inspected the SERVO_OUTPUT_RAW topic with the Mavlink inspector on QGroundControl, this gives me about 50 Hz signal. How does this work with ESCs, which have a default frequency of 400 Hz (PWM_Rate parameter in PX4)? There seems to be a discrepancy between the controller rates and the actually published actuator commands?

1 Like