The Physics of Multirotor Drones: A Technical Breakdown

Ibrahim Ahmed's article on drone physics provides a rigorous mathematical foundation for multirotor UAV dynamics. Adapted from his research presented at AIAA DASC 2023 and his Python simulation framework 'multirotor', it covers coordinate systems, state variables, forces, and equations of motion. This is essential reading for developers building drone control systems or simulation tools.

Coordinate Systems

A multirotor UAV has six degrees of freedom: three linear (x, y, z) and three angular (roll φ, pitch θ, yaw ψ). The North-East-Down (NED) system is used: positive x is forward (North), y is right (East), z is down. Two reference frames are defined:

  • Inertial frame (n): static, global axes.
  • Body frame (b): attached to the drone's center of mass, moves and rotates with it.

State Variables

The vehicle's state is fully described by 12 variables:

  • Position: (\hat{r}^n = [x, y, z]^T) in inertial frame.
  • Velocity: (\hat{v}^b = [v_x^b, v_y^b, v_z^b]^T) in body frame.
  • Orientation: (\hat{\Phi} = [\phi, \theta, \psi]^T) (roll, pitch, yaw).
  • Angular velocity: (\hat{\omega} = [\omega_x, \omega_y, \omega_z]^T) in body frame.

Orientation Representation

Orientation uses Tait-Bryan angles with the order yaw → pitch → roll. The angular velocity vector relates to Euler angle rates via: $$ \begin{bmatrix} \omega_x \ \omega_y \ \omega_z \end{bmatrix} = \begin{bmatrix} \dot{\phi} + \dot{\psi} \sin{\theta} \ -\dot{\psi} \sin{\phi} \cos{\theta} + \dot{\theta} \ \dot{\psi} \cos{\phi} \cos{\theta} \end{bmatrix} $$

Rotation Matrices

To transform vectors between frames, rotation matrices are used. For roll, pitch, yaw:

  • (R(\phi) = \begin{bmatrix} 1 & 0 & 0 \ 0 & c\phi & -s\phi \ 0 & s\phi & c\phi \end{bmatrix})
  • (R(\theta) = \begin{bmatrix} c\theta & 0 & s\theta \ 0 & 1 & 0 \ -s\theta & 0 & c\theta \end{bmatrix})
  • (R(\psi) = \begin{bmatrix} c\psi & -s\psi & 0 \ s\psi & c\psi & 0 \ 0 & 0 & 1 \end{bmatrix})

The combined rotation from inertial to body frame is: $$ R_n^b = R(\phi) R(\theta) R(\psi) $$

Transport Theorem

When a vector changes in a rotating frame, its time derivative includes a fictitious term. The Transport theorem states: $$ \frac{d \hat{\mathcal{V}}^b}{dt} = \hat{b} \cdot \frac{d \hat{\mathcal{V}}}{dt} + \hat{\omega} \times \hat{\mathcal{V}}^b $$ This accounts for the rotation of the body frame axes.

Dynamics

Linear Equations

Newton's second law in body frame: $$ \hat{F}^b = m(\dot{\hat{v}}^b + \hat{\omega} \times \hat{v}^b) $$ Forces include gravity and thrust. Gravity in inertial frame: (\hat{F}_g^n = [0,0,mg]^T). In body frame: (\hat{F}_g^b = R_n^b \hat{F}_g^n). Thrust from p propellers: (\hat{T} = [0,0,\sum_i T_i]^T). Total force: (\hat{F}^b = \hat{T} + \hat{F}_g^b).

Angular Equations

Euler's rotation equations: $$ \hat{\tau}^b = I \dot{\hat{\omega}} + \hat{\omega} \times (I \hat{\omega}) $$ where (I) is the inertia tensor. Moments arise from thrust forces at a distance from center of mass.

Propeller Forces and Torques

Each propeller produces thrust (T_i = k_T \omega_i^2) and torque (\tau_i = k_\tau \omega_i^2), where (\omega_i) is the angular speed. The net thrust and moments are sums over all propellers.

Control System

A cascaded control structure is typical: outer loop controls position via desired attitude, inner loop controls attitude via desired angular rates, and motor mixer converts rates to propeller speeds.

Practical Implications

Understanding these dynamics is crucial for implementing state estimation (e.g., Kalman filters), control algorithms (PID, LQR), and simulation environments. Ahmed's 'multirotor' framework provides a Python implementation for testing controllers.

For developers, the key takeaway is that drone control is a solved mathematical problem, but real-world implementation requires careful handling of sensor noise, actuator delays, and aerodynamic effects. Start with the equations, simulate, then tune.

Next steps: Read the full article for detailed derivations. Clone the 'multirotor' repo. Implement a simple PID controller in simulation. Test with real hardware after thorough simulation.