Robust Control of Quadrotor Drones Using Active Disturbance Rejection Control

In the field of unmanned aerial systems, quadrotor drones have garnered significant attention due to their versatility in applications such as agricultural monitoring, disaster response, and surveillance. However, as a researcher focused on aerial robotics, I have observed that the inherent dynamic coupling and sensitivity to disturbances pose substantial challenges for precise control. The quadrotor drone is an underactuated, highly nonlinear system where interactions between rotational and translational motions can degrade performance in complex environments. Traditional linear controllers, like PID, often fall short in handling these issues, leading to oscillations, slow response, and poor disturbance rejection. In this paper, I propose a robust control strategy based on Active Disturbance Rejection Control (ADRC) to address dynamic coupling and anti-interference control in quadrotor drones. My approach leverages a three-channel ADRC architecture to decouple multi-axis dynamics and compensate for internal and external perturbations in real-time, offering a model-independent solution that enhances robustness without relying on precise system parameters. Through extensive simulations, I demonstrate that this method outperforms conventional techniques, providing a foundation for more reliable quadrotor drone operations in real-world scenarios.

The core of my research lies in overcoming the limitations of existing control methods for quadrotor drones. While PID controllers are widely used for their simplicity, they struggle with the nonlinearities and coupling effects inherent in quadrotor drone dynamics. Nonlinear approaches like backstepping or sliding mode control offer improvements but often require accurate models or introduce chattering. In contrast, ADRC provides a framework that treats all uncertainties—whether from model inaccuracies, dynamic coupling, or external winds—as a “total disturbance” to be estimated and canceled. This philosophy aligns well with the needs of quadrotor drone control, where operational conditions can vary rapidly. By integrating a tracking differentiator (TD) for smooth reference signals, an extended state observer (ESO) for disturbance estimation, and a nonlinear state error feedback (NLSEF) for optimized response, I aim to achieve superior tracking and disturbance rejection. My work contributes to the ongoing evolution of quadrotor drone technology by presenting a practical, simulation-validated strategy that balances performance and robustness, paving the way for more autonomous and resilient flight systems.

To understand the control challenges, it is essential to first establish the mathematical model of a quadrotor drone. I consider a standard “X”-configuration quadrotor drone, where the dynamics are derived under assumptions of rigidity, constant mass and inertia, and symmetry about the center of gravity. The motion can be described in two coordinate frames: an inertial earth frame $o_e x_e y_e z_e$ and a body frame $o_b x_b y_b z_b$ attached to the drone. Let $\mathbf{P}^e = [x, y, z]^T$ denote the position in the earth frame, and $\mathbf{\Theta}^e = [\phi, \theta, \psi]^T$ represent the Euler angles (roll, pitch, yaw). The kinematics relate the body frame velocities to the earth frame, with the rotation matrix $\mathbf{R}_b^e$ defined as:

$$
\mathbf{R}_b^e = \begin{bmatrix}
c_\theta c_\psi & s_\phi s_\theta c_\psi – c_\phi s_\psi & c_\phi s_\theta c_\psi + s_\phi s_\psi \\
c_\theta s_\psi & s_\phi s_\theta s_\psi + c_\phi c_\psi & c_\phi s_\theta s_\psi – s_\phi c_\psi \\
-s_\theta & s_\phi c_\theta & c_\phi c_\theta
\end{bmatrix},
$$

where $s_\cdot = \sin(\cdot)$ and $c_\cdot = \cos(\cdot)$. The translational kinematics are given by $\dot{\mathbf{P}}^e = \mathbf{R}_b^e \mathbf{V}^b$, with $\mathbf{V}^b = [u, v, w]^T$ as the linear velocity in the body frame. For attitude representation, I use unit quaternions $\mathbf{q}_e^b = [q_0, q_1, q_2, q_3]^T$ to avoid singularities, with the kinematics expressed as $\dot{\mathbf{q}}_e^b = \frac{1}{2} \mathbf{W}(\mathbf{\Omega}^b) \mathbf{q}_e^b$, where $\mathbf{\Omega}^b = [\omega_\phi, \omega_\theta, \omega_\psi]^T$ is the angular velocity vector and $\mathbf{W}$ is a skew-symmetric matrix based on $\mathbf{\Omega}^b$.

The dynamics of the quadrotor drone capture the forces and moments acting on the system. Let $m$ be the mass, $\mathbf{g} = [0, 0, g]^T$ with $g = 9.81 \, \text{m/s}^2$ as gravity, and $\mathbf{I}$ be the inertia matrix. The translational dynamics in the body frame are:

$$
\dot{\mathbf{V}}^b = -\mathbf{\Omega}^b \times \mathbf{V}^b + \frac{1}{m} \mathbf{F}^b,
$$

where $\mathbf{F}^b = \mathbf{T}^b – m \mathbf{R}_e^b \mathbf{g} + \mathbf{D}^b$, with $\mathbf{T}^b = [0, 0, f]^T$ as the total thrust from propellers, $f = C_t \sum_{i=1}^4 \varpi_i^2$ ($C_t$ is the thrust coefficient, $\varpi_i$ is rotor speed), and $\mathbf{D}^b = -C_d \mathbf{V}^b |\mathbf{V}^b|$ as aerodynamic drag ($C_d$ is drag coefficient). The rotational dynamics follow:

$$
\mathbf{I} \dot{\mathbf{\Omega}}^b = -\mathbf{\Omega}^b \times (\mathbf{I} \mathbf{\Omega}^b) + \mathbf{M}^b,
$$

where $\mathbf{M}^b = \mathbf{T}^b + \mathbf{T}_{\text{gyro}} + \mathbf{M}_d$ includes moments from propellers, gyroscopic effects, and drag. The propeller moments $\mathbf{T}^b = [\tau_\phi, \tau_\theta, \tau_\psi]^T$ are derived from rotor speeds:

$$
\begin{bmatrix} \tau_\phi \\ \tau_\theta \\ \tau_\psi \end{bmatrix} = \begin{bmatrix}
-dC_t & dC_t & -dC_t & dC_t \\
dC_t & dC_t & -dC_t & -dC_t \\
C_q & -C_q & C_q & -C_q
\end{bmatrix} \begin{bmatrix} \varpi_1^2 \\ \varpi_2^2 \\ \varpi_3^2 \\ \varpi_4^2 \end{bmatrix},
$$

with $d$ as the arm length and $C_q$ the torque coefficient. Gyroscopic moments $\mathbf{T}_{\text{gyro}}$ arise from rotor inertia, and $\mathbf{M}_d = -C_{dm} \mathbf{\Omega}^b |\mathbf{\Omega}^b|$ accounts for damping. These equations highlight the nonlinear couplings—for instance, cross-terms in $\mathbf{I}$ link roll, pitch, and yaw motions, making independent control of each axis challenging for a quadrotor drone.

In practice, many quadrotor drone platforms use embedded flight controllers like PX4, which implement cascaded PID loops for attitude control. The PX4 native firmware separates tilt (roll and pitch) and yaw control due to symmetry and inertia differences. It converts desired accelerations into quaternions, applies proportional control for angles, and PID for angular rates. However, as I have tested in simulations, this approach can suffer from overshoot and slow recovery under disturbances, especially when dynamic coupling is pronounced. For example, a step change in yaw can induce unwanted roll oscillations due to inertial coupling. To address this, my ADRC design replaces these linear loops with a more adaptive structure. The three-channel ADRC controller for roll, pitch, and yaw each consists of a TD to smooth reference signals, an ESO to estimate total disturbances, and an NLSEF to generate control inputs. This modular design allows for independent tuning while implicitly decoupling the axes through disturbance compensation.

The tracking differentiator in my ADRC setup for a quadrotor drone ensures that setpoints are approached smoothly, reducing abrupt changes that exacerbate coupling. For a desired roll angle $\phi_d$, the TD produces a transient signal $\phi_{d1}$ and its derivative $\phi_{d2}$ using a fast tracking function. In discrete form with step size $h$, it is implemented as:

$$
\begin{aligned}
\phi_{d1}(k+1) &= \phi_{d1}(k) + h \phi_{d2}(k), \\
\phi_{d2}(k+1) &= \phi_{d2}(k) + h f \text{han}(\phi_{d1}(k) – \phi_d(k), \phi_{d2}(k), r, h_0),
\end{aligned}
$$

where $f \text{han}(\cdot)$ is a nonlinear function that minimizes overshoot, $r$ is a speed factor, and $h_0$ filters noise. This step is crucial for a quadrotor drone as it preconditions inputs to avoid exciting resonant modes. The ESO then expands the system state to include disturbances. For the roll axis, with $\phi$ as the measured angle and $u$ as control input, the linear ESO estimates the state $z_1 \approx \phi$, its derivative $z_2 \approx \dot{\phi}$, and the total disturbance $z_3 \approx f_{\text{total}}$:

$$
\begin{aligned}
e &= z_1 – \phi, \\
z_1(k+1) &= z_1(k) + h (z_2(k) – \beta_{01} e), \\
z_2(k+1) &= z_2(k) + h (z_3(k) – \beta_{02} e + b_0 u), \\
z_3(k+1) &= z_3(k) – h \beta_{03} e,
\end{aligned}
$$

where $\beta_{01}, \beta_{02}, \beta_{03}$ are observer gains, and $b_0$ is an estimate of the control gain. For a quadrotor drone, the ESO lumped dynamics from coupling, wind gusts, or model errors into $z_3$, enabling real-time compensation. Finally, the NLSEF computes the control signal based on errors between the TD outputs and ESO estimates. For roll, with $e_1 = \phi_{d1} – z_1$ and $e_2 = \phi_{d2} – z_2$, the control law is:

$$
u_0 = f \text{han}(e_1, c e_2, r_1, h_1),
$$

where $c$ damps the response, $r_1$ and $h_1$ are tuning parameters. The actual control $u = (u_0 – z_3)/b_0$ cancels the estimated disturbance. This structure is replicated for pitch and yaw channels, with parameters tailored to each axis’s dynamics in the quadrotor drone.

To validate my ADRC approach, I conducted simulation studies comparing it with a standard PID controller for a quadrotor drone. The simulation environment was built in MATLAB/Simulink, using parameters from typical quadrotor drone models: mass $m = 1.5 \, \text{kg}$, inertia $\mathbf{I} = \text{diag}(0.03, 0.03, 0.04) \, \text{kg} \cdot \text{m}^2$, arm length $d = 0.2 \, \text{m}$, and aerodynamic coefficients $C_t = 1.5 \times 10^{-5}$, $C_q = 2.5 \times 10^{-7}$. The PID controller had gains tuned for stability, while ADRC parameters were optimized via a step-wise procedure, emphasizing ESO convergence first. The tables below summarize the parameters used in my tests for the quadrotor drone.

Table 1: PID Controller Parameters for Quadrotor Drone Attitude Control
Axis Angle Gain ($k_\Theta$) Angular Rate P ($k_{\omega p}$) Angular Rate I ($k_{\omega i}$) Angular Rate D ($k_{\omega d}$)
Roll ($\phi$) 6.5 0.1 0.02 0.001
Pitch ($\theta$) 6.5 0.1 0.02 0.001
Yaw ($\psi$) 3.0 0.5 0.02 0.001
Table 2: ADRC Controller Parameters for Quadrotor Drone Attitude Control
Parameter Roll ($\phi$) Pitch ($\theta$) Yaw ($\psi$)
TD speed factor ($r$) 20 20 28
TD step size ($h$) 0.004 0.004 0.004
ESO gain $\beta_{01}$ 360 360 200
ESO gain $\beta_{02}$ 43200 43200 50000
ESO gain $\beta_{03}$ 8000 8000 8000
NLSEF speed factor ($r_1$) 100 100 100
NLSEF damping ($c$) 5 5 5

The first experiment evaluated tracking performance for the quadrotor drone. Starting from zero attitudes, step commands of 30° were applied sequentially: yaw at $t = 1 \, \text{s}$, pitch at $t = 3 \, \text{s}$, and roll at $t = 5 \, \text{s}$. This sequence respects Euler angle conventions to minimize coupling. Both controllers achieved tracking, but ADRC showed superior transient response. For instance, in the roll channel, ADRC reduced the rise time from 0.332 s (PID) to 0.252 s and eliminated overshoot (0% vs. 0.045% for PID). The results are condensed in Table 3, highlighting how ADRC enhances the quadrotor drone’s agility by mitigating interactions between axes. The ESO effectively estimated coupling disturbances as internal perturbations, allowing the NLSEF to compensate preemptively. This is critical for a quadrotor drone performing maneuvers where smooth transitions are essential.

Table 3: Tracking Performance Metrics for Quadrotor Drone Attitude Control
Axis Controller Rise Time ($t_r$, s) Settling Time ($t_s$, s) Overshoot ($\sigma$, %)
Roll ($\phi$) PID 0.332 0.528 0.045
Roll ($\phi$) ADRC 0.252 0.300 0.000
Pitch ($\theta$) PID 0.328 0.524 0.086
Pitch ($\theta$) ADRC 0.252 0.300 0.002
Yaw ($\psi$) PID 0.680 1.032 0.019
Yaw ($\psi$) ADRC 0.540 1.024 0.006

The second experiment tested disturbance rejection for the quadrotor drone under combined internal coupling and external forces. Step commands were applied non-sequentially to induce coupling: roll at $t = 1 \, \text{s}$, pitch at $t = 3 \, \text{s}$, and yaw at $t = 5 \, \text{s}$, all to 30°. Then, at $t = 8 \, \text{s}$, a rectangular pulse disturbance with amplitudes 30 N·m for roll/pitch and 3 N·m for yaw was injected for 1 s, simulating a sudden wind gust or payload shift. The results, summarized in Table 4, demonstrate ADRC’s robustness. For example, during the pitch step at $t = 3 \, \text{s}$, PID caused a 37.15% overshoot in yaw due to coupling, whereas ADRC reduced it to 17.07%. After the external disturbance at $t = 8 \, \text{s}$, ADRC recovered in under 1.108 s for all axes, while PID took over 2.8 s for roll. The ESO’s ability to estimate and cancel the “total disturbance”—encompassing both dynamic coupling and external inputs—proved vital for the quadrotor drone’s stability. Control signals remained within saturation limits, avoiding actuator wear common in sliding mode approaches.

Table 4: Disturbance Rejection Performance for Quadrotor Drone Under Composite Interference
Time Axis Controller Settling Time ($t_s$, s) Overshoot ($\sigma$, %)
$t = 3 \, \text{s}$ (internal) Roll ($\phi$) PID 0.936 1.41
Roll ($\phi$) ADRC 0.000 0.09
Pitch ($\theta$) PID 0.904 4.24
Pitch ($\theta$) ADRC 0.296 0.00
Yaw ($\psi$) PID 0.808 37.15
Yaw ($\psi$) ADRC 0.872 17.07
$t = 5 \, \text{s}$ (internal) Roll ($\phi$) PID 0.856 13.82
Roll ($\phi$) ADRC 0.000 0.68
Pitch ($\theta$) PID 0.824 0.80
Pitch ($\theta$) ADRC 0.000 0.04
Yaw ($\psi$) PID 1.128 5.04
Yaw ($\psi$) ADRC 0.416 0.00
$t = 8 \, \text{s}$ (external) Roll ($\phi$) PID 2.848 16.48
Roll ($\phi$) ADRC 0.000 1.99
Pitch ($\theta$) PID 3.280 16.42
Pitch ($\theta$) ADRC 1.004 2.05
Yaw ($\psi$) PID 1.656 17.65
Yaw ($\psi$) ADRC 1.108 3.03

My analysis reveals several key advantages of ADRC for quadrotor drone control. Firstly, the decoupling capability stems from the ESO’s real-time estimation of cross-axis interactions as part of the total disturbance. For a quadrotor drone, this means that commands in one channel minimally affect others, improving precision in tasks like payload delivery or inspection. Secondly, the anti-interference performance is enhanced because the ESO does not distinguish between internal model uncertainties and external forces; it simply observes and compensates for their combined effect. This is particularly beneficial for a quadrotor drone operating in windy conditions or with varying payloads. Thirdly, the nonlinear feedback in NLSEF provides a faster response than linear PID, while the TD prevents setpoint jumps that could stress actuators. In terms of implementation, the ADRC structure is computationally efficient, with simple recursive equations suitable for embedded processors on a quadrotor drone. However, tuning the multiple parameters (e.g., ESO gains, NLSEF factors) requires careful consideration. In my work, I used a systematic approach: start with ESO to ensure disturbance observation, then adjust NLSEF for desired dynamics, and fine-tune TD for smoothness. This process, while iterative, yielded robust performance across different flight scenarios for the quadrotor drone.

Looking forward, the ADRC framework offers a promising foundation for advancing quadrotor drone autonomy. One direction is integrating adaptive or learning-based methods to auto-tune parameters online, using techniques like reinforcement learning to optimize ESO gains in response to changing environments. This could make the quadrotor drone more self-sufficient during long missions. Another area is extending ADRC to position control, where similar coupling issues arise between translational axes. By designing a nested ADRC structure—inner loops for attitude and outer loops for position—the overall flight performance of a quadrotor drone could be further enhanced. Additionally, hardware-in-the-loop testing on physical quadrotor drone platforms would validate simulation findings and address real-world noise and latency. From a broader perspective, the principles demonstrated here could apply to other multi-rotor systems or even fixed-wing drones, showcasing the versatility of disturbance rejection control.

In conclusion, my research demonstrates that Active Disturbance Rejection Control effectively addresses dynamic coupling and disturbance rejection in quadrotor drones. Through a detailed three-channel design and comprehensive simulations, I have shown that ADRC reduces overshoot, shortens settling times, and improves recovery under composite interferences compared to traditional PID control. The key lies in the unified treatment of uncertainties via the extended state observer, which enables robust performance without relying on precise models. For practitioners working with quadrotor drones, this approach offers a practical tool to enhance flight stability in challenging conditions. Future work will focus on adaptive tuning and real-world deployment, pushing the boundaries of what quadrotor drones can achieve in autonomous operations. The journey toward more resilient aerial robots continues, with ADRC serving as a robust controller.

Scroll to Top