Maybe Leonard will correct me this time. This is what I see in the code, and what I use in my development version of the coax frame. I’m talking about multicopters only, as I have no experience with planes as of now.
There is throttle commanded (input
), which is either something the autopilot decides in throttle-managed modes, or your input, divided by the cosine of the angle between the frame-down direction and the gravity for attitude compensation, in Stabilize, or your input plainly in Acro.
There is also hover throttle (hover
) which is initially read from MOT_THST_HOVER
and then possibly adjusted to the actual flight conditions. From these two, and yet another parameter which I would call mix
here, we derive the maximum average throttle that we must never exceed when figuring out the servo outputs. The exact expression is:
max(input, input * max(0, 1 - mix) + hover * mix)
and the function where this happens is AC_AttitudeControl_Multi::get_throttle_avg_max
. This controls thrust in the body frame, not in the earth frame, that is, force directed down from the aircraft not accounting for cosine losses. Any cosine loss accounting comes before that.
The easier way to think about this is when mix
is within the interval [0;1]
, which matches the default parameters. In this case, when input
is at least as large as hover
, this will be the final result, and your throttle will be the exactly commanded throttle (unless it must go down for sanity). If input
is less than hover
, however, the expression above becomes bigger than input
, but never bigger than hover
. This is the slack in throttle that the autopilot may use to keep angles better. The bigger the mix
, the higher that maximum allowed throttle. Obviously if you have some horizontal speed, you want better angle handling possibly at the cost of descent speed, so mix
should be bigger, and if you want to land vertically, mix
should be smaller: this is where ATC_THR_MIX_MIN
and ATC_THR_MIX_MAX
parameters come into play. The actual mix
will be between them based on what the autopilot thinks. In modes like Acro or Stabilize, you typically want roughly same angle handling all the time, so they use a third value for mix
, from ATC_THR_MIX_MAN
for “manual” modes. By default, this also switches to the minimum value at really low throttle to prevent bouncing on the ground, unless something called “air mode” is turned on.
(If you wish, you may think of this as follows: if ATC_THR_MIX_MIN
is zero, your machine will descend as quickly as commanded, but has the chances to lose attitude if throttle is too low to keep angles. If it is higher, the machine may decide to descend slower, but will lose attitude control with lower probability / under higher pressure, and the higher the value, the bigger the effect. In the extreme case of this being say 0.9, vertical descent in windy conditions may get slowed down several times)
Fun things start to happen when mix
is greater than 1. In this case - which should generally only be used in well-tuned agile copters, where “well-tuned” is important - maximum output throttle can go well beyond the hover throttle, if angle handling requires so. Which is an absolutely valid case if your machine typically flies well above the hover throttle, that is, very fast, think of racing quads. High ATC_THR_MIX_MAN
setting (it’s up to 4 currently despite the recommended range in parameter documentation is 0.1 to 0.9) helps immensely in things like flips and rolls, where you may drop throttle to zero and will still able to use most of the available power if required.
That said, this does allow a vertical flyaway. Sorry for the shameless plug of my own channel, but this (https://www.youtube.com/watch?v=9LjDJAumSJM) towards the end contains good examples of what happens when a high mix value meets an imperfectly tuned machine.
Regarding your question: I think that it is somewhat unlikely that this parameter will influence the behavior in your cases, because your cases are probably closer to an overloaded craft, and this parameter has the most influence on lightweight machines. As happens very often, logs of the events are needed to decide.