Skip to content

© 2026 Rami Kronbi · Beirut, Lebanon

Back
Drones · control research

Rotor-fault detection and recovery for a quadrotor

Teaches a small quadrotor to notice a damaged or lost rotor within a fraction of a second and keep flying.

My partSole author

Complete loss of the front-right rotor in hover, simulated. The nominal controller flips within 0.3 s; the pipeline flags the fault in 22 ms, switches to a yaw-relaxed controller at 58 ms and keeps the drone within 39 cm of its hover point.

In short

A reproducible study of rotor-fault tolerance for a 5-inch quadrotor: estimate how well each rotor still works, detect and isolate a loss within tens of milliseconds, and recover, including from the complete loss of one rotor. Validated offline on PX4 software-in-the-loop flights; the test on the real vehicle is prepared, not done.

What it is
A detect, isolate and recover pipeline for rotor faults on a small quadrotor, built and evaluated in a 6-DOF simulator and then replayed on PX4 software-in-the-loop flights.
Why it matters
A quadrotor has no spare actuators. A chipped propeller or failing motor has to be noticed and compensated within tens of milliseconds, and a rotor that stops entirely can only be survived by giving up control of yaw. Flight software for small quadrotors mostly just disarms.
My part
I wrote the models, the algorithms, the simulator and the experiments, automated the PX4 software-in-the-loop runs, and wrote the paper.
Plot of position error after one rotor stops at two seconds in simulated hover: the nominal controller flips within a few tenths of a second, while the estimating pipeline and a controller told the true fault both recover, with the alarm and the switch to the yaw-relaxed controller marked.
Simulation: one rotor stops at 2 s. The nominal controller flips; the pipeline raises the alarm, switches to the yaw-relaxed controller and recovers.

Step by step

  1. 1

    Model

    A 5-inch FPV-class vehicle, about 0.64 kg with a thrust-to-weight ratio of 3.6, with sensor noise, 10 ms motion-capture latency, parameter spread and light turbulence.

  2. 2

    Diagnose

    Effectiveness regression with one common filter on every signal, a Kalman filter, a learned healthy baseline, and a CUSUM bank tuned for 15, 30 and 60 % losses and calibrated on separate fault-free flights.

    Scatter plot: detection delay falls from about 90 ms at 20 % rotor loss to about 22 ms at 90 %, median 30 ms over 200 runs. In PX4 SITL, all 40 partial and 16 complete losses are detected at medians of 120 and 132 ms, against 664 ms for PX4’s own detector.
    How fast a fault is caught: a 30 ms median over 200 simulated faults, and 120–132 ms in PX4 software-in-the-loop, where PX4’s own detector took 664 ms.
  3. 3

    Recover

    Thrust re-allocation for partial losses; a numerically solved relaxed-hover equilibrium and gain-scheduled LQR for a complete loss, accepting a spin of about 23 rad/s.

    Plot of median peak position deviation against the share of effectiveness lost on one rotor in simulated hover, for the nominal controller, a controller told the true fault, and the estimating pipeline.
    Simulation: up to 60 % loss, the pipeline holds position as well as a controller told the true fault.
  4. 4

    Stress

    Monte-Carlo experiments with passive and oracle baselines, an ablation, and robustness sweeps over actuator delay, motor lag and turbulence to find where recovery breaks.

  5. 5

    Validate

    110 headless PX4 software-in-the-loop flights of the x500 model in Gazebo, with motor faults injected in the simulated ESC and the diagnoser replayed offline on the flight logs. The log pipeline for Betaflight blackbox data and a tethered-test protocol are ready for the real quad.

    Chart of 16 complete rotor losses in PX4 software-in-the-loop: the diagnoser alarm at about 120 to 145 ms on every run, the vehicle tilting past 90 degrees at about 450 to 540 ms, and PX4’s failure detector at about 640 to 690 ms.
    PX4 software-in-the-loop: on every complete loss the diagnoser alarms long before the vehicle tilts past 90°; PX4’s own detector triggers after it.

Results

200 / 200
Detection, simulation
20–90 % losses detected and isolated to the right rotor; median 30 ms, 95th percentile 58 ms
56 / 56
Complete losses recovered, simulation
32 in hover, 24 during a 3.3 m/s figure-eight; the nominal controller lost every one
56 / 56
Detection, PX4 SITL
40 partial and 16 complete losses; median 120 and 132 ms. PX4’s own detector flagged no partial loss
0
False alarms
in 32 min of fault-free simulated flight and 22 min of fault-free SITL flight
For engineersHow it is built, its limits, and its keywords.

How it works

A Kalman filter estimates each rotor’s remaining effectiveness from a filtered rigid-body regression on gyro, accelerometer and velocity data, against a baseline learned in the first seconds of hover. A bank of CUSUM tests decides when a loss has happened and which rotor it hit. Partial losses are handled by re-allocating thrust; a complete loss switches to a gain-scheduled yaw-relaxed LQR controller after Mueller and D’Andrea.

Limits

  • The analysis panels are verified on simulated signals with known noise, vibration and distortion (the Noise Lab recovers the simulated white noise to within 1 %); long captures from the real unit are still to come.
  • Everything is simulation or software-in-the-loop. Nothing has flown with a fault yet, and the vehicle parameters are assumed rather than identified on a real frame.
  • Simulated and Gazebo sensors are far cleaner than a vibrating 5-inch frame, so the false-alarm numbers are optimistic.
  • In PX4 software-in-the-loop the diagnoser ran offline on the flight logs; no fault-tolerant controller ran inside PX4.
  • Complete-loss recovery started to fail at 24 ms of actuator delay (2 ms assumed), motors 3.2 times slower than modelled, and three times the default turbulence.
  • The tethered test on the real quadrotor is planned, not done.

Keywords

  • rotor fault detection
  • fault-tolerant control
  • quadrotor
  • CUSUM
  • Kalman filter
  • PX4 SITL

Read the write-up →