In recent years, quadrotor unmanned aerial vehicles (UAVs) have garnered significant attention due to their vertical take-off and landing capabilities, high maneuverability, and stable hovering performance. These attributes make quadrotor systems ideal for applications such as agricultural monitoring, disaster response, and aerial photography. However, the inherent dynamic coupling between attitude and position, combined with strong nonlinearities and underactuation, poses substantial challenges for precise control, especially under complex disturbances like wind gusts and payload variations. Traditional control methods, such as PID, often struggle to achieve robust performance in such scenarios due to their linear framework and limited disturbance rejection capabilities. In this research, I propose a robust control strategy based on Active Disturbance Rejection Control (ADRC) to address these issues. The ADRC approach leverages a three-channel architecture to decouple dynamics, estimate disturbances in real-time, and optimize responses, offering a novel solution for quadrotor control in unpredictable environments.

The quadrotor UAV is characterized by its “X” configuration, where four rotors generate lift and control moments. To model the quadrotor, I define an inertial earth frame $o_e x_e y_e z_e$ and a body frame $o_b x_b y_b z_b$. The position vector in the inertial frame is denoted as $\mathbf{P}^e = [x, y, z]^T$, and the attitude vector is $\mathbf{\Theta}^e = [\phi, \theta, \psi]^T$, where $\phi$, $\theta$, and $\psi$ represent roll, pitch, and yaw angles, respectively. The kinematic model of the quadrotor describes the relationship between the body frame velocities and the inertial frame positions. The position kinematics can be expressed as:
$$ \dot{\mathbf{P}}^e = \mathbf{R}_b^e \mathbf{V}^b $$
Here, $\mathbf{R}_b^e$ is the rotation matrix from the body frame to the inertial frame, derived using the ZYX Euler angle sequence:
$$ \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$ and $c$ denote sine and cosine functions, respectively. For attitude representation, I employ a quaternion-based model to avoid singularities. The unit quaternion $\mathbf{q}_e^b = [q_0, q_1, q_2, q_3]^T$ represents the rotation from the inertial to the body frame, and the attitude kinematics are given by:
$$ \dot{\mathbf{q}}_e^b = \frac{1}{2} \mathbf{W}(\mathbf{\Omega}^b) \mathbf{q}_e^b $$
with $\mathbf{\Omega}^b = [\omega_\phi, \omega_\theta, \omega_\psi]^T$ as the angular velocity vector in the body frame, and $\mathbf{W}(\mathbf{\Omega}^b)$ defined as:
$$ \mathbf{W}(\mathbf{\Omega}^b) = \begin{bmatrix}
0 & -\omega_\phi & -\omega_\theta & -\omega_\psi \\
\omega_\phi & 0 & \omega_\psi & -\omega_\theta \\
\omega_\theta & -\omega_\psi & 0 & \omega_\phi \\
\omega_\psi & \omega_\theta & -\omega_\phi & 0
\end{bmatrix} $$
The dynamics of the quadrotor account for forces and moments acting on the system. Assuming a rigid body with constant mass and inertia, and neglecting ground effects, the position dynamics are described by:
$$ m \dot{\mathbf{V}}^b = -\mathbf{\Omega}^b \times (m \mathbf{V}^b) + \mathbf{F}^b $$
where $m$ is the mass, and $\mathbf{F}^b$ includes gravitational, thrust, and drag forces. Specifically, $\mathbf{F}^b = \mathbf{T}^b + m \mathbf{R}_e^b \mathbf{G} + \mathbf{D}^b$, with $\mathbf{G} = [0, 0, -g]^T$ as gravity, $\mathbf{T}^b = [0, 0, f]^T$ as the total thrust from rotors, and $f = C_t \sum_{i=1}^4 \varpi_i^2$, where $C_t$ is the thrust coefficient and $\varpi_i$ is the rotational speed of the $i$-th rotor. The drag force $\mathbf{D}^b = -C_d \mathbf{V}^b | \mathbf{V}^b |$ models air resistance, with $C_d$ as the drag coefficient.
The attitude dynamics are governed by:
$$ \mathbf{I} \dot{\mathbf{\Omega}}^b = -\mathbf{\Omega}^b \times (\mathbf{I} \mathbf{\Omega}^b) + \mathbf{M}^b $$
Here, $\mathbf{I}$ is the inertia matrix, which includes coupling terms due to non-diagonal elements:
$$ \mathbf{I} = \begin{bmatrix}
I_{xx} & -I_{xy} & -I_{xz} \\
-I_{xy} & I_{yy} & -I_{yz} \\
-I_{xz} & -I_{yz} & I_{zz}
\end{bmatrix} $$
These off-diagonal elements, such as $I_{xz}$, introduce dynamic coupling, where acceleration in one axis induces moments in others. The total moment $\mathbf{M}^b$ comprises propeller moments $\mathbf{T}_b$, gyroscopic effects $\mathbf{T}_{gyro}$, and aerodynamic damping $\mathbf{M}_d$. The propeller moments are derived from the rotor speeds:
$$ \mathbf{T}_b = \begin{bmatrix}
\tau_\phi \\ \tau_\theta \\ \tau_\psi
\end{bmatrix} = \begin{bmatrix}
d C_t (\varpi_2^2 – \varpi_4^2) \\
d C_t (\varpi_3^2 – \varpi_1^2) \\
C_q (\varpi_1^2 – \varpi_2^2 + \varpi_3^2 – \varpi_4^2)
\end{bmatrix} $$
where $d$ is the distance from the center to a rotor, and $C_q$ is the torque coefficient. The gyroscopic moments account for rotor inertia effects:
$$ \mathbf{T}_{gyro} = \begin{bmatrix}
I_m \omega_\theta (\varpi_1 – \varpi_2 + \varpi_3 – \varpi_4) \\
-I_m \omega_\phi (\varpi_1 – \varpi_2 + \varpi_3 – \varpi_4) \\
0
\end{bmatrix} $$
with $I_m$ as the motor and propeller inertia. The damping moment $\mathbf{M}_d = -C_{dm} \mathbf{\Omega}^b | \mathbf{\Omega}^b |$ captures air resistance to rotation.
To address the control challenges, I design an ADRC-based controller that actively estimates and compensates for disturbances. The ADRC framework consists of three main components: a Tracking Differentiator (TD), an Extended State Observer (ESO), and a Nonlinear State Error Feedback (NLSEF). For the quadrotor, I implement a three-channel ADRC for roll, pitch, and yaw control, enabling decoupled management of attitude dynamics.
The TD smooths reference signals and provides derivative estimates, reducing overshoot and coupling effects. For a desired roll angle $\phi_d$, the TD is implemented as:
$$ \begin{aligned}
\phi_{d1}(k+1) &= \phi_{d1}(k) + h \phi_{d2}(k) \\
\phi_{d2}(k+1) &= \phi_{d2}(k) + h fh \\
fh &= fhan(\phi_{d1}(k) – \phi_d, \phi_{d2}(k), r, h_0)
\end{aligned} $$
where $h$ is the sampling step, $r$ is the speed factor, $h_0$ is the filter factor, and $fhan$ is a nonlinear function that minimizes tracking error. The ESO estimates the total disturbance, including internal couplings and external forces. For the roll channel, the linear ESO is:
$$ \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} $$
Here, $z_1$, $z_2$, and $z_3$ estimate the roll angle, its derivative, and the total disturbance, respectively; $\beta_{01}$, $\beta_{02}$, $\beta_{03}$ are observer gains; $b_0$ is the control gain estimate; and $u$ is the control input. The NLSEF generates the control signal based on error feedback:
$$ u_0 = fhan(e_1, c e_2, r_1, h_1) $$
where $e_1 = \phi_{d1} – z_1$ and $e_2 = \phi_{d2} – z_2$ are errors, $c$ is a damping factor, $r_1$ is a speed factor, and $h_1$ is a precision factor. The final control input compensates for disturbances: $u = (u_0 – z_3) / b_0$.
For control allocation, I map the ADRC outputs to rotor speeds. The throttle commands $\Gamma_i$ for each rotor are derived from the control inputs $u_\phi$, $u_\theta$, $u_\psi$:
$$ \begin{bmatrix}
\Gamma_1 \\ \Gamma_2 \\ \Gamma_3 \\ \Gamma_4
\end{bmatrix} = \begin{bmatrix}
1 & 1 & 1 & 1 \\
1 & -1 & -1 & 1 \\
-1 & -1 & 1 & 1 \\
-1 & 1 & -1 & 1
\end{bmatrix} \begin{bmatrix}
u_1 \\ u_\phi \\ u_\theta \\ u_\psi
\end{bmatrix} $$
where $u_1$ is the collective thrust command. The rotor dynamics are modeled as a first-order system: $\varpi_i = \frac{C_R \Gamma_i + b}{t_m s + 1}$, with $C_R$ as the throttle coefficient, $b$ as a bias, and $t_m$ as the motor time constant.
To validate the ADRC controller, I conduct simulations in MATLAB/Simulink, comparing its performance with a conventional PID controller. The quadrotor parameters are based on standard models, and the ADRC parameters are tuned for optimal disturbance rejection. The table below summarizes the ADRC parameters for each channel:
| Parameter | TD ($r$, $h$) | ESO ($\beta_{01}$, $\beta_{02}$, $\beta_{03}$) | NLSEF ($r_1$, $h_1$, $c$) |
|---|---|---|---|
| Roll ($\phi$) | 20, 0.004 | 360, 43200, 8000 | 100, 8, 5 |
| Pitch ($\theta$) | 20, 0.004 | 360, 43200, 8000 | 100, 8, 5 |
| Yaw ($\psi$) | 28, 0.004 | 200, 50000, 8000 | 100, 8, 5 |
In attitude tracking experiments, the quadrotor starts at zero attitude, and step commands are applied sequentially: yaw at $t=1$ s, pitch at $t=3$ s, and roll at $t=5$ s. The ADRC controller demonstrates superior performance, with minimal overshoot and faster settling times compared to PID. The results are quantified in the following table:
| Parameter | Controller | Rise Time (s) | Settling Time (s) | Overshoot (%) |
|---|---|---|---|---|
| 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 |
For disturbance rejection tests, I introduce internal coupling effects by applying step commands that violate the Euler angle sequence, followed by external rectangular wave disturbances at $t=8$ s. The ADRC controller effectively suppresses coupling-induced oscillations and recovers faster from external disturbances. Key metrics are shown below:
| Disturbance Time | Controller | Settling Time (s) | Overshoot (%) |
|---|---|---|---|
| $t=3$ s (internal) | PID | 0.936 | 1.41 |
| $t=3$ s (internal) | ADRC | 0.000 | 0.09 |
| $t=5$ s (internal) | PID | 0.856 | 13.82 |
| $t=5$ s (internal) | ADRC | 0.000 | 0.68 |
| $t=8$ s (external) | PID | 2.848 | 16.48 |
| $t=8$ s (external) | ADRC | 0.000 | 1.99 |
The ADRC’s ESO accurately estimates and compensates for both internal couplings, such as roll-yaw interactions, and external disturbances, reducing recovery times by over 50% compared to PID. This highlights the robustness of the ADRC approach for quadrotor systems operating in dynamic environments.
In conclusion, my research demonstrates that ADRC provides a effective solution for managing dynamic coupling and disturbances in quadrotor UAVs. By integrating TD, ESO, and NLSEF, the controller achieves precise tracking and enhanced robustness without relying on precise model parameters. Future work will focus on adapting ADRC parameters using reinforcement learning for improved adaptability and deploying the strategy on embedded platforms for real-world quadrotor applications.
