How is accurate body rate tracking achieved with control allocation?

Hi all,

I’m new to PX4 and would like to learn more about how control allocation is currently handled. I tried to read the docs to understand mixers/geometry files/actuator effectiveness and came out more confused than when I started. What are each of those and how do they affect performance? I also watched this video on improvements being made to control allocation: Control Allocation: reworking the PX4 mixing system — PX4 Developer Summit Virtual 2020 - YouTube. Has this version been released yet? It seems like their new approach to allocation is more physically intuitive (albeit harder to implement) because it relies on measured quantities like inertia and arm length.

Generally I understand the concept of mapping control outputs to desired collective thrust and body torques and taking the inverse (or pseudo-inverse for >4 rotors) to eventually get PWM outputs, but there seems to be a lot of normalization that is occurring throughout the entire process? Normalized torques + thrust, normalized outputs on each axis, normalized thrust/drag coefficients. What is the purpose of that normalization and how can I understand it all?

Importantly I want to answer the question: how does PX4 still manage to achieve accurate body rate tracking performance with little knowledge about arm length, mass, and inertia?. I suspect gain tuning, specifically the integral gain, on body rates is helping account for unmodeled effects and improve performance, but I also wonder if I’m missing parts of the code where one specifies these values or a filter that estimates them.

I’d appreciate any insights on this.