QuasiStatic-FTC

Quasi-Static Fault-Tolerant Feedback Control of a Quadrotor under Rotor Failure with Provable Safety Guarantees

A nonlinear quasi-static feedback controller for path following of a quadrotor UAV under complete single-rotor failure, with path-invariance and local exponential convergence guarantees.

Mohamed Al Lawati and Adeel Akhtar

Mohamed Al Lawati is with the Department of Mechanical and Industrial Engineering, Sultan Qaboos University, Muscat, Oman.
Adeel Akhtar is with the Department of Mechanical and Industrial Engineering, New Jersey Institute of Technology, Newark, NJ, USA.
Quadrotor path-following simulation under rotor failure
Drake-Meshcat animation of a quadrotor following a circular spatial path. A complete rotor failure is introduced at \(t=20\) s, after which the fault-tolerant quasi-static feedback controller keeps the vehicle on the desired path.

Abstract

This project accompanies a nonlinear control framework for a quadrotor unmanned aerial vehicle experiencing a complete single-rotor failure. Given a geometric curve in three-dimensional space, the method characterizes and stabilizes the zero-dynamics manifold, also called the path-following manifold, which represents all feasible motions along the desired path. Stabilizing this manifold ensures path-invariance: if the UAV is initialized on the path with the appropriate transverse conditions, then the closed-loop vehicle remains on the path despite the rotor failure. The proposed quasi-static feedback controller achieves set stabilization without introducing additional dynamic controller states and provides local exponential convergence to the path-following manifold under regularity conditions. The approach is validated in a physics-based Drake simulation with Meshcat visualization.

Method

The desired path is represented as the intersection of two independent surfaces, \[ \mathcal{C} = \{p \in \mathbb{R}^3: h_1(p)=0,\; h_2(p)=0,\; \nabla h_1(p)\times \nabla h_2(p)\neq 0\}. \] The outputs \(h_1\) and \(h_2\) define transverse errors to the path, while a third output \(h_3=s(p)\) parameterizes motion along the path.

The main idea is to use quasi-static feedback to algebraically recover the thrust and then compute the remaining torque inputs through a reduced decoupling matrix. The thrust is obtained from the second derivative of \(h_2\):

\[ u_t = m \frac{\beta_2-\nu_2} {\langle \nabla h_2, R_3\rangle}, \qquad \nu_2 = -K_2 z^2. \]

The remaining inputs \(\tau_2\) and \(\tau_3\) are computed from the fourth derivatives of \(h_1\) and \(h_3\), using a \(2\times 2\) decoupling matrix.

Key features

  • Handles complete single-rotor failure.
  • Uses a static/quasi-static feedback law rather than dynamic extension.
  • Computes thrust algebraically.
  • Reduces the remaining inversion to a \(2\times 2\) decoupling matrix.
  • Separates transverse path stabilization from tangential path motion assignment.

Main guarantees

  • Local exponential convergence to the path-following manifold.
  • Forward invariance of the desired path under rotor failure.
  • Assignable tangential motion along the path.
  • Bounded internal yaw-related dynamics under locally bounded tangential input.

Simulation Results

The implementation uses Drake for physics-based rigid-body simulation and Meshcat for live browser visualization. The UAV tracks a circular path, then experiences a complete rotor failure at \(t=20\) s. The controller switches to the fault-tolerant quasi-static feedback law and continues enforcing path following.

Simulation snapshots showing quadrotor path convergence, nominal path following, and path following after rotor failure
Simulation snapshots from the paper. The motion unfolds in three stages: path convergence, nominal path following, and path following under complete rotor failure. The third stage highlights path invariance despite sudden rotor failure.

Stage 1: Path convergence

The quadrotor approaches the desired circular path from an off-path initial condition.

Stage 2: Nominal path following

Before failure, the vehicle follows the desired path with four healthy rotors.

Stage 3: Rotor failure

At \(t=20\) s, rotor 1 fails. The rotor color changes in the Meshcat visualization.

Time Observed behavior
0--20 s The quadrotor tracks the circular path in the nominal four-rotor configuration.
20 s Rotor 1 fails. The rotor color changes in the Meshcat visualization.
20--40 s The quasi-static fault-tolerant controller compensates for the failure and maintains path-following behavior.

Code and Reproducibility

The full implementation is available in the GitHub repository: gradslab/quasistatic-ftc.

The repository contains the Drake simulation, Meshcat visualization, the quasi-static feedback controller, and CSV logging for position, attitude, velocity, angular velocity, force, thrust, and torque signals.

Recommended environment

  • Ubuntu 22.04 or 24.04
  • Python 3.10 or 3.11
  • Drake / pydrake
  • Meshcat
  • NumPy, SciPy, Matplotlib

How to Run

# Clone the repository
git clone https://github.com/gradslab/quasistatic-ftc.git
cd quasistatic-ftc

# Create and activate a clean Python environment
python3.10 -m venv drake-env
source drake-env/bin/activate

# Upgrade pip
pip install --upgrade pip

# Install Drake
pip install drake

# Install additional dependencies
pip install numpy scipy matplotlib meshcat

# Verify Drake installation
python -c "import pydrake; print('Drake installed')"

# Run the simulation
python main.py

When the simulation starts, open the Meshcat URL printed in the terminal, typically:

http://localhost:7004

The simulation writes logged data to:

Drake_data.csv

Repository Structure

.
├── main.py
├── qsf_controller.py
├── draw_curve.py
├── UAV_visual.py
├── media/
│   └── conv.gif
├── docs/
│   ├── index.html
│   └── media/
│       ├── conv.gif
│       └── BigPicture.png
├── Drake_data.csv        # generated after running
└── README.md

BibTeX

@inproceedings{allawati2026quasistaticftc,
title     = {Quasi-Static Fault-Tolerant Feedback Control of a Quadrotor under Rotor Failure with Provable Safety Guarantees},
author    = {Al Lawati, Mohamed and Akhtar, Adeel},
booktitle = {Proceedings of the 2026 IEEE Conference on Control Technology and Applications (CCTA)},
year      = {2026},
address   = {Vancouver, BC, Canada},
note      = {Accepted}
}