One rotor idled in flight and caused poor atitude control

Hi!
Today my boss was flying with client and during descent there was a little loss of attitude control. It is quite big (about 5kg+), long endurance (about 40 minutes) quadrotor. He was descenting while moving horizontally. During that aducopter has lowered one engine control signal to idle, which caused temporary loss of attitude control.
Is there any parameter I can change to prevent this behavior? Maybe some early warning system (this motor was near idle during whole descent)?
Please look at attached log (about line 205000)
https://drive.google.com/open?id=1blViPOdR0hDbqk49w9OnpWQJY7PNKJJX

Karol

The attitude divergence wasn’t caused by motor 4 bottoming out; it’s the other way around. Motor 4 went to minimum throttle to try and correct the loss of attitude control. The drone pitched down and rolled left, so motor 4 (back right motor) throttled down to correct this.

But why did the drone lose control of its attitude? The drone was trying to control altitude and attitude. Sometimes, both of these cannot be controlled perfectly at the same time, because the altitude controller requires a certain amount of total thrust, while the attitude controller requires a particular amount of thrust from each motor. Sometimes, there is no way for the attitude controller’s thrust requirements can match the total thrust requirement of the altitude controller, so a loss of control results. In your case, this is probably why motor 3 did not throttle up to prevent the loss of attitude control: it would have exceeded the thrust required to achieve the commanded altitude climb rate.

So how can you prevent this? There’s a few things you can do.

  1. Increase the available throttle range for your motors
    1.1. The drone lost control because motor 4 couldn’t throttle down any more. You can increase control range by lowering the minimum throttle. This is controlled by the MOT_SPIN_MIN parameter, which is 15% by default. You can lower this, but it must be greater or equal to MOT_SPIN_ARM. You can lower _ARM as well, but you will want to test that your motors spin up reliably when you arm the drone.

  2. Give higher priority to the attitude controller
    2.1 Large, powerful drones often benefit by increasing the priority of the attitude controller. This is changed with the ATC_THR_MIX_MAX parameter. Increasing this will tell the flight controller that maintaining attitude is more important than perfectly maintaining climb rate. The default is 0.5, I recommend trying values up to 0.9.

As as example, my drones are also about 5kg, and I fly with
MOT_SPIN_ARM = 0.07
MOT_SPIN_MIN = 0.09
ATC_THR_MIX_MAX = 0.9

By the way, what motors and ESCs are you using? There is one additional parameter that may be important, depending on what ESCs you have.

The log looks like it’s Copter-3.5.7 so I’m moving it to the Copter-3.5.6 category, hope that’s OK.

Thank you Anubis!
That’s exactly what I was hoping for. Especially ATC_THR_MIX_MAX. We will try both things in next flight.
Our drive train is MAD 5010 310kv with MAD AMPX 30A (or 40A don’t remember). As far as I know this is dumb PWM ESC.
Thank you rmackay9!
I didn’t noticed there was update.