# Why can't quadcopters handle failure of one rotor?

Ardupilot can detect (and it logs) motor output mismatch. I think detecting in flight motor failure is possible with modern firmware and flight controllers. Then if one rotor fails, why can't we have the quadcopter fly like a tricopter, since we now have ESCs that can change rotation directions?

# It depends on what you mean by "fly"

Raff d'Andrea's team at EPFL wrote a stunningly good paper on this subject, with practical demonstrations indoors and outdoors. The paper, Relaxed hover solutions for multicopters: application to algorithmic redundancy and novel vehicles, can be found at https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/155683/2/ETH23137.pdf#page=108

They accomplish this feat of flight by relaxing the constraints on the vehicle. If the goal is to simply stay put in XYZ space, and allow as much banking, pitching, and yawing as required, then this can be done all the way down to one motor.

If, however, you would like your quadcopter to be able to lose a motor and retain full control over roll, pitch, yaw, and thrust, then it cannot be done.

## Normal flight with all four motors

I'll pull from an answer at How does a quadcopter yaw?, only I'll work the example of what happens when we lose a motor.

$$\begin{pmatrix} \tau_x \\ \tau_y \\ \tau_z \\ F_z \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 & -1 \\ 1 & 0 & -1 & 0 \\ -1 & 1 & -1 & 1 \\ 1 & 1 & 1 & 1 \end{pmatrix} \begin{pmatrix} \omega_1^2 \\ \omega_2^2 \\ \omega_3^2 \\ \omega_4^2 \end{pmatrix}$$

What this does is it maps rotor speeds (squared) to torques about the roll, pitch, and yaw axes, as well as the net vertical thrust.

What we need to do for any desired torques and thrust is to solve for the required propeller RPM. So that means we need to multiply by the inverse of that 4x4 matrix:

$$\begin{pmatrix} 0 & 1 & 0 & -1 \\ 1 & 0 & -1 & 0 \\ -1 & 1 & -1 & 1 \\ 1 & 1 & 1 & 1 \end{pmatrix}^{-1} \begin{pmatrix} \tau_x \\ \tau_y \\ \tau_z \\ F_z \end{pmatrix} = \begin{pmatrix} \omega_1^2 \\ \omega_2^2 \\ \omega_3^2 \\ \omega_4^2 \end{pmatrix}$$

For reasons we won't get into here, the inverse of that matrix exists and thus we can find the solution.

## "Normal" flight with three motors

Let's eliminate a motor. It doesn't matter which one, so let's arbitrarily remove $$\omega_4$$.

$$\begin{pmatrix} \tau_x \\ \tau_y \\ \tau_z \\ F_z \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & -1 \\ -1 & 1 & -1 \\ 1 & 1 & 1 \end{pmatrix} \begin{pmatrix} \omega_1^2 \\ \omega_2^2 \\ \omega_3^2 \end{pmatrix}$$

Note that we still have the four reactions: roll, pitch, yaw, and thrust. But we only have three motors to control those four concepts, and we wind up with this 4x3 matrix. And we cannot invert a non-square matrix. So there is no ability to find three motor speeds which will independently control the four variables.

### A different perspective

The takeaway from the above might not feel completely satisfactory, because it's not necessarily intuitive. So let's think about things in terms of trying to work out what happens when we try to stabilize the craft with three motors.

For the sake of argument, let's say that we are flying a + configuration where we lose the forward motor. If you look at the equations in How does a quadcopter yaw?, then you see that the reason a quadcopter can be stable in roll and pitch is that as one motor in the pair speeds up, the other slows down.

Let's allow for the remaining pitch motor to spin backwards and forwards so we can always produce a stabilizing pitching force. In this case, I think we can both agree that the average speed is going to be 0 (or close to 0). However, our roll forces remain unaffected, and so those two motors will have identical speeds, W. So what happens to yaw?

torque_z = 1*(W^2) - 1*(0^2) + 1*(W^2) - 1*(0^2) = 2W^2


So in other words, when we keep the quad from rolling and pitching, we get a really bad yaw moment!

And thus this is how Raff's team keeps their quad in the sky. They give up control of yaw.

I saw a TED talk from a guy who had written quadcopter software to handle losing one motor. Perhaps you can find it.

With nothing to counter the unbalanced torque, the quad spun in yaw quite rapidly. Most software would attempt to counter this by increasing power on the motor opposite the dead motor, and decreasing power to the other two. Instead they allowed the quad to yaw and concentrated on maintaining stability.

Although the unbalanced lift would tend to tip the quad over, it would tip the quad back a fraction of a second later when it had spun 180 degrees. I guess the software also had to take account of gyroscopic effects, and the time taken to spin a motor up or down.

The demonstration was indoors, so I couldn't tell if the quad was capable of 'forward' flight, but it hovered and descended under control.

You may well ask why this isn't part of common quadcopter firmware. I can only speculate that it's because:

1. It's rare to loose a motor in flight (failures are usually a result of crashes)
2. The algorithm for 3 motor flight isn't public domain (maybe the above team sold it to the military or something)
3. Landing while spinning rapidly does almost as much damage as crashing.