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.

Let's start with the driving equation:

$$ \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.
  4. People who care about redundancy just add more motors.
  • 1
    $\begingroup$ Thanks for the answer. Didn't really think about damage from landing while spinning, and had sort of that idea in my mind. I went and found the TED talk you referred to. It appears to be really interesting. Hoping that these algos come to public domain soon $\endgroup$ – Kritik Agrawal Mar 22 at 3:59

I've never written control software for tri/quadcopters, but I'd assume it largely has to do with the fact that a quadcopter minus-one-prop is fundamentally set up quite physically differently from a tricopter. From my research, most tricopter designs work similarly to this:

enter image description here (src)

Aside from the fact that losing a motor on a quadcopter doesn't preserve the physical symmetries of either a tri/quadcopter, (i.e. there are now two 90° angles between two of the arms and a 180° angle between the others) there are also likely physical hardware differences preventing a "smart" flight control firmware from effectively transitioning to tricopter mode on-the-fly. Like, for example, the common use of a yaw servo on tricopters.

In all honesty, I'm not sure that the ability to control motor direction would help much here. It seems to me that the issues are more to do with physical design limitations than they are about control system capabilities.

AFAIK, the fewest amount of statically-angled propellers (i.e. not like the yaw servo) required to maintain stable flight is 4. This is why hexa/octacopters can be easily programmed to not fall out of the sky if a motor is lost.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.