Mixer (control Allocation matrix) parameters


I try to fully understand the mixer modules from the PX4. Has the library mention PX4 is using the geometries files (.toml) to find the pseudo-inverse of the matrix from equation T = Gu.

From my previous research I found out that the thrust is define has the sum of the forces applied on the drone (Fx and Fy omitted). This force can be define by the the equation Fri = Kfwi². Which then Kf is define has Ctair_densityradius_props²*A_props. At this line from the script which define one part of the control allocation matrix, we only use the Ct parameter (https://github.com/PX4/Firmware/blob/master/src/lib/mixer/MultirotorMixer/geometries/tools/px_generate_mixers.py#L162). I was wondering if the property from the drone was omitted? If so, why and how does it works? I mean the command send to the actuator should not be the same for a props of 18in vs 13in?

Thank you

Hi @D0z1,

I thing your misunderstanding is just caused by a notation difference. In the px4 case, Ct is the value containing all the constants of a motor, which is the same as your kf (it contains the radius of the prop, etc.). So if you have a different prop size, you just need to change that Ct value.

Good luck

1 Like

Thank you @bresch for this quick answer!

So it would be the same for the Drag Coefficient (Cm)?

Then if I understand well from this topic , you only multiplied the Pseudo-Inverse Matrix (on the left side) of the matrix command (roll, pitch, yaw. thrust)? But the command are limited from [-1;1] for the Roll, Pitch, Yaw and from [0;1] for the thrust. Which gives you a normalise result.

After that you find a normalise PWM based on the command with a curve fitting from previous model?

Finally, you applied a scale factor base only from the parameter chosen, which is arbitrary to anyone. This value is then send to the rotor.

Thank you

Yes, that’s correct.

1 Like