As a researcher deeply involved in aerial robotics, I have spent considerable time addressing the core challenges in controlling a quadrotor drone. The platform’s agility and mechanical simplicity are often offset by its inherent underactuation, strong nonlinearities, and acute sensitivity to external disturbances like wind gusts. Traditional control strategies frequently fall short, either in performance or in the practicality of their tuning process. In this article, I will detail a comprehensive methodology that combines an improved cascade Active Disturbance Rejection Control (ADRC) structure with an efficient Teaching-Learning-Based Optimization (TLBO) algorithm for parameter tuning. This synergy aims to produce a robust, high-performance controller that is both effective and practical to implement.
The fundamental flight dynamics of a quadrotor drone are governed by the forces and torques generated by its four rotors. By independently varying the speed of each rotor, the drone can achieve lift, roll, pitch, and yaw motions. The standard “X” or “+” configuration is common, and its basic structure is pivotal to understanding the control decoupling strategy.

To facilitate controller design, we begin by establishing a mathematical model. Let us define the inertial frame *E* and the body-fixed frame *B* attached to the drone’s center of mass. The system’s states are the position $(x, y, z)$ and the Euler angles $(\phi, \theta, \psi)$ representing roll, pitch, and yaw, respectively. Using the Newton-Euler formulation, and assuming a symmetric, rigid structure, the nonlinear dynamics can be derived. A crucial step is introducing virtual control inputs $U_z$, $U_\phi$, $U_\theta$, and $U_\psi$ which are linear combinations of the individual rotor forces $F_i$:
$$
\begin{bmatrix}
U_z \\ U_\phi \\ U_\theta \\ U_\psi
\end{bmatrix} =
\begin{bmatrix}
1 & 1 & 1 & 1 \\
0 & 0 & 1 & -1 \\
-1 & 1 & 0 & 0 \\
1 & 1 & -1 & -1
\end{bmatrix}
\begin{bmatrix}
F_{front} \\ F_{back} \\ F_{left} \\ F_{right}
\end{bmatrix}
$$
The complete dynamic model, including aerodynamic damping and external disturbances $d_i$, is given by:
$$
\begin{aligned}
\ddot{x} &= (\cos\phi \sin\theta \cos\psi + \sin\phi \sin\psi)\frac{U_z}{m} – \frac{k}{m}\dot{x} + d_x \\
\ddot{y} &= (\cos\phi \sin\theta \sin\psi – \sin\phi \cos\psi)\frac{U_z}{m} – \frac{k}{m}\dot{y} + d_y \\
\ddot{z} &= (\cos\phi \cos\theta)\frac{U_z}{m} – g – \frac{k}{m}\dot{z} + d_z \\
\ddot{\phi} &= \frac{l U_\phi}{J_x} + \dot{\theta}\dot{\psi}\frac{J_y – J_z}{J_x} + d_\phi \\
\ddot{\theta} &= \frac{l U_\theta}{J_y} + \dot{\phi}\dot{\psi}\frac{J_z – J_x}{J_y} + d_\theta \\
\ddot{\psi} &= \frac{K_\psi U_\psi}{J_z} + \dot{\phi}\dot{\theta}\frac{J_x – J_y}{J_z} + d_\psi
\end{aligned}
$$
where $m$ is mass, $g$ is gravity, $l$ is the arm length, $k$ is a damping coefficient, $J_i$ are moments of inertia, and $K_\psi$ is a moment scale factor. This model clearly shows the coupling between translational and rotational motions. For instance, lateral movement ($x$, $y$) is achieved by tilting the drone, creating a horizontal component of the total thrust $U_z$.
Controller Architecture: A Cascade ADRC Framework
The control problem for a quadrotor drone naturally decomposes into an outer-loop position subsystem and an inner-loop attitude subsystem. The position subsystem ($x$, $y$, $z$) is underactuated, as it is controlled only through the total thrust vector’s orientation. The attitude subsystem ($\phi$, $\theta$, $\psi$) is fully actuated. This leads to a cascade control structure: the outer loop generates desired attitude commands for the inner loop to track. For this, I propose a refined cascade ADRC design.
Firstly, the underactuated horizontal channels ($x$, $y$) are controlled by defining virtual control inputs $U_x$ and $U_y$, which represent the horizontal components of the total thrust:
$$
U_x = (\cos\phi \sin\theta \cos\psi + \sin\phi \sin\psi)\frac{U_z}{m} \\
U_y = (\cos\phi \sin\theta \sin\psi – \sin\phi \cos\psi)\frac{U_z}{m}
$$
From these, the required desired roll and pitch angles for the inner loop can be computed:
$$
\phi_d = \arcsin\left( \frac{m(\sin\psi U_x – \cos\psi U_y)}{U_z} \right) \\
\theta_d = \arcsin\left( \frac{m(\cos\psi U_x + \sin\psi U_y)}{U_z \cos\phi_d} \right)
$$
Each individual channel—$x$, $y$, $z$, $\phi$, $\theta$, $\psi$—is then regulated by a dedicated ADRC unit. A standard ADRC consists of three key components: a Tracking Differentiator (TD), an Extended State Observer (ESO), and a Nonlinear State Error Feedback (NLSEF) law. My improvement focuses on the TD and the parameterization of the ESO and NLSEF.
Traditional TDs can introduce phase lag. To mitigate this, I employ a linear second-order TD with a feedforward term. For a general reference signal $r(t)$, it generates smoothed tracking signals $v_1$ and $v_2$ (which approximates $\dot{r}$):
$$
\begin{aligned}
\dot{v}_1 &= v_2 + \alpha r \\
\dot{v}_2 &= R^2 \left[ -k_1 (v_1 – r) – \frac{k_2}{R}(v_2 + \alpha r) \right]
\end{aligned}
$$
Parameters $R$, $\alpha$, $k_1$, $k_2$ can be tuned for a desired balance between tracking speed and noise filtration. This improved TD provides a smoother, more accurate reference profile for the controller to follow.
The core of ADRC is the ESO. It treats the combination of internal model uncertainties and external disturbances as a generalized, or “total,” disturbance, and estimates it as an extended state. For a second-order system like a single channel of the quadrotor drone (e.g., the $\theta$ channel: $\ddot{\theta} = f(\cdot) + b U_\theta$), a third-order linear ESO is designed:
$$
\begin{aligned}
\dot{z}_1 &= z_2 – \beta_1 (z_1 – y) \\
\dot{z}_2 &= z_3 – \beta_2 (z_1 – y) + b_0 U \\
\dot{z}_3 &= -\beta_3 (z_1 – y)
\end{aligned}
$$
Here, $y$ is the measured output (e.g., $\theta$), $U$ is the control input, $z_1$ and $z_2$ estimate the state and its derivative, and $z_3$ estimates the total disturbance. The key innovation in parameterization is to use the bandwidth parameterization method. The observer gains $[\beta_1, \beta_2, \beta_3]$ are set as $[3\omega_o, 3\omega_o^2, \omega_o^3]$, where $\omega_o$ is the observer bandwidth. Similarly, the control law uses a linear Proportional-Derivative (PD) form with disturbance compensation:
$$
U = \frac{u_0 – z_3}{b_0}, \quad \text{where} \quad u_0 = k_p (v_1 – z_1) + k_d (v_2 – z_2)
$$
The controller gains $[k_p, k_d]$ are parameterized as $[\omega_c^2, 2\xi\omega_c]$, where $\omega_c$ is the controller bandwidth and $\xi$ is the damping ratio (typically set to 1). This elegant parameterization reduces the daunting task of tuning 5+ gains per channel to tuning just two intuitive parameters per channel: $\omega_o$ and $\omega_c$.
The overall control system architecture for the quadrotor drone is summarized in the table below:
| Control Loop | Subsystem | ADRC Input | ADRC Output / Command | Key Parameters |
|---|---|---|---|---|
| Outer Loop (Position) | $z$ | $z_{des}$ | Virtual thrust $U_z$ | $\omega_{oz}, \omega_{cz}$ |
| $x$ | $x_{des}$ | Virtual control $U_x$ → $\theta_d$ | $\omega_{ox}, \omega_{cx}$ | |
| $y$ | $y_{des}$ | Virtual control $U_y$ → $\phi_d$ | $\omega_{oy}, \omega_{cy}$ | |
| Inner Loop (Attitude) | $\theta$ | $\theta_d$ (from $x$ loop) | Control torque $U_\theta$ | $\omega_{o\theta}, \omega_{c\theta}$ |
| $\phi$ | $\phi_d$ (from $y$ loop) | Control torque $U_\phi$ | $\omega_{o\phi}, \omega_{c\phi}$ | |
| $\psi$ | $\psi_{des}$ | Control torque $U_\psi$ | $\omega_{o\psi}, \omega_{c\psi}$ |
Parameter Tuning as an Optimization Problem
While bandwidth parameterization simplifies the problem, selecting the optimal $\omega_o$ and $\omega_c$ for each channel of the quadrotor drone controller remains non-trivial. Manual tuning is time-consuming and often yields suboptimal results. Therefore, I frame this as a multi-objective optimization problem. The goal is to find the parameter set $\Omega = \{\omega_{o,i}, \omega_{c,i}\}$ that minimizes a cost function reflecting closed-loop performance.
I construct a composite fitness function $J$ that balances tracking performance and control effort smoothness:
$$
J(\Omega) = w_1 \cdot \text{ITAE} + w_2 \cdot \text{IADU}
$$
where:
- $\text{ITAE} = \int_{0}^{T_{sim}} t \, |e(t)| \, dt$ is the Integral of Time-weighted Absolute Error. It penalizes persistent errors more heavily, encouraging fast settling and low steady-state error.
- $\text{IADU} = \int_{0}^{T_{sim}} |\dot{U}(t)| \, dt$ is the Integral of the Absolute Derivative of the Control signal. It penalizes abrupt control changes, promoting smoother actuator operation and reducing wear.
- $w_1$ and $w_2$ are weighting coefficients that prioritize tracking accuracy versus control smoothness (e.g., $w_1=0.98$, $w_2=0.02$).
- $T_{sim}$ is the simulation time for evaluation.
To solve this optimization problem efficiently, I employ the Teaching-Learning-Based Optimization (TLBO) algorithm. It is a population-based metaheuristic that mimics a classroom. Its advantages are particularly appealing for tuning our quadrotor drone controller: it requires no algorithm-specific parameters (unlike PSO which needs inertia weight, social/cognitive coefficients), and it generally converges rapidly with good solution quality.
The TLBO process operates on a “population” of candidate solutions (students), each represented by a vector of parameters $\Omega_i$. It proceeds in two phases:
1. Teacher Phase: The best solution (the teacher) tries to improve the class mean.
$$ \Omega_{i,new} = \Omega_{i,old} + r_i \cdot (\Omega_{teacher} – T_F \cdot M) $$
where $M$ is the population mean, $r_i$ is a random number in [0,1], and $T_F = \text{round}(1 + \text{rand}(0,1))$ is a teaching factor of either 1 or 2.
2. Learner Phase: Students interact randomly with each other to enhance knowledge.
$$ \Omega_{i,new} = \begin{cases}
\Omega_{i,old} + r_i \cdot (\Omega_i – \Omega_j), & \text{if } J(\Omega_i) < J(\Omega_j) \\
\Omega_{i,old} + r_i \cdot (\Omega_j – \Omega_i), & \text{otherwise}
\end{cases} $$
where $\Omega_j$ is a randomly selected peer student different from $\Omega_i$.
These two phases are repeated until a maximum iteration count is reached. The algorithm’s parameter-less nature and effective search make it ideal for optimizing our 12-parameter set (2 parameters x 6 channels) for the quadrotor drone ADRC.
Simulation and Experimental Verification
To validate the proposed method, I conducted both numerical simulations and real-world flight tests. The model parameters for the quadrotor drone used were: $m = 1.79\ kg$, $J_x = J_y = 0.03\ kg\cdot m^2$, $J_z = 0.04\ kg\cdot m^2$, $l = 0.2\ m$, $k = 0.01\ N/m \cdot s^{-1}$, $g = 9.81\ m/s^2$.
First, the TLBO algorithm was deployed to optimize the altitude ($z$-channel) controller. With a population size of 80 and 50 maximum iterations, the algorithm searched for $\omega_{oz}$ and $\omega_{cz}$ between 0 and 100. The convergence was compared against a standard Particle Swarm Optimization (PSO) method.
The results were compelling. The TLBO algorithm converged to a stable optimum in approximately 10 iterations, whereas PSO required around 18 iterations. The final optimized parameters for the altitude channel were $\{\omega_{oz}, \omega_{cz}\} = \{5.21, 32.84\}$. The performance of the optimized ADRC was compared against a manually-tuned ADRC and the PSO-optimized ADRC in a step response test, as summarized below:
| Performance Metric | Manually-Tuned ADRC | PSO-Optimized ADRC | TLBO-Optimized ADRC (Proposed) |
|---|---|---|---|
| Rise Time | Medium | Fast | Fastest |
| Settling Time | Longest | Medium | Shortest |
| Overshoot | ~5% | ~1% | 0% |
| Steady-State Error | Negligible | Negligible | Negligible |
The TLBO-optimized controller demonstrated a critically damped, fast response without overshoot. Following this, all other channels were optimized similarly, yielding the complete parameter set:
$$
\begin{aligned}
&\text{x-θ: } \{\omega_{ox}, \omega_{cx}, \omega_{o\theta}, \omega_{c\theta}\} = \{25.54, 2.63, 84.44, 56.42\} \\
&\text{y-φ: } \{\omega_{oy}, \omega_{cy}, \omega_{o\phi}, \omega_{c\phi}\} = \{28.35, 2.55, 81.88, 52.48\} \\
&\text{ψ: } \{\omega_{o\psi}, \omega_{c\psi}\} = \{47.25, 7.54\}
\end{aligned}
$$
For physical validation, flight experiments were performed on a Quanser QBall2 platform indoors. The quadrotor drone was tasked with tracking a square trajectory in the XY-plane at a fixed height of 1 meter, while maintaining a yaw angle of 0°. This test evaluates tracking precision, disturbance rejection (from ground effect, air currents near walls), and the decoupling capability of the cascade structure. The performance was benchmarked against a well-tuned cascade PID controller.
The experimental results were decisive. The proposed ADRC+TLBO controller outperformed the PID controller in all key aspects:
| Aspect | Cascade PID Controller | Proposed ADRC+TLBO Controller |
|---|---|---|
| XY Position Tracking Error | Up to 0.25 m, with noticeable oscillation. | Consistently below 0.1 m, smooth tracking. |
| Altitude (z) Maintenance | Significant fluctuation (±0.15 m) during turns. | Tightly maintained at 1 m (±0.03 m), excellent decoupling. |
| Yaw (ψ) Regulation | Drift of up to ±5°. | Maintained within ±1°. |
| Control Signal Smoothness | Jittery, indicative of high-frequency actuation. | Significantly smoother actuator commands. |
These results confirm that the optimized ADRC provides superior dynamic response, robustness against unmodeled disturbances, and effective decoupling of the highly coupled quadrotor drone dynamics.
Conclusion and Final Remarks
In this detailed exposition, I have presented a holistic design and optimization strategy for controlling a quadrotor drone. The method integrates a refined cascade Active Disturbance Rejection Control (ADRC) structure with an efficient Teaching-Learning-Based Optimization (TLBO) algorithm. The key contributions are threefold. First, the cascade ADRC structure with bandwidth parameterization effectively manages the underactuated, nonlinear dynamics while actively estimating and rejecting a wide range of disturbances. Second, formulating the parameter tuning as an optimization problem with a composite ITAE-IADU cost function directly links parameters to desirable closed-loop performance metrics. Third, employing the parameter-free TLBO algorithm automates and accelerates the search for the optimal parameter set, overcoming the limitations of manual tuning or more complex metaheuristics like PSO.
Both simulation and physical flight tests on a real quadrotor drone platform demonstrate the efficacy of the proposed approach. The optimized controller achieves precise trajectory tracking (errors < 0.1 m), robust altitude and yaw holding, and smooth control signals. The TLBO algorithm proves to be a particularly effective tool for this engineering optimization task, converging quickly to high-quality solutions. This methodology provides a practical and powerful framework for developing high-performance, robust flight controllers for agile aerial vehicles like the quadrotor drone, bridging the gap between advanced control theory and real-world implementation.
