Drone Trajectory Tracking with Python#

The dynamics and kinematics of a drone are crucial in understanding and controlling its flight behavior.

1. Dynamics and Kinematics of the Drone#

The drone’s state can be described by its position $x, y, z$, orientation (roll $\phi$, pitch $\theta$, and yaw $\psi$), and their respective velocities and angular velocities.

Translational Motion#

The translational motion of the drone can be described by Newton’s second law of motion:

$$ m\ddot{\mathbf{r}} = \mathbf{F} - mg\hat{z} $$

where:

  • $m$ is the mass of the drone.

  • $\ddot{\mathbf{r}}$ represents the linear acceleration.

  • $\mathbf{F}$ is the total thrust force generated by the drone’s motors.

  • $g$ is the acceleration due to gravity.

  • $\hat{z}$ is the unit vector in the vertical direction.

Rotational Motion#

The rotational motion of the drone is described using Euler’s equations of motion for a rigid body:

$$ I \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (I \boldsymbol{\omega}) = \boldsymbol{\tau} $$

where:

  • $I$ represents the moment of inertia matrix.

  • $\boldsymbol{\omega}$ is the angular velocity vector (p, q, r).

  • $\boldsymbol{\tau}$ is the vector of external torques acting on the drone.

Dynamic System Matrix#

The dynamics of the drone can be represented in a state-space format:

$$ \dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u} $$

$$ \mathbf{y} = C\mathbf{x} + D\mathbf{u} $$

Where:

  • $\mathbf{x}$ is the state vector.

  • $\mathbf{u}$ is the input vector (like motor thrusts).

  • $\mathbf{y}$ is the output vector (like measured position and orientation).

  • $A$ is the system matrix.

  • $B$ is the input matrix.

  • $C$ is the output matrix.

  • $D$ is the direct transmission matrix.

2. Control System#

Control Inputs#

The control inputs for the drone include thrust $U_1$ and torques $U_2, U_3, U_4$. These are calculated as:

$$ U_1 = c_t(\omega_1^2 + \omega_2^2 + \omega_3^2 + \omega_4^2) $$

$$ U_2 = c_t l (\omega_2^2 - \omega_4^2) $$

$$ U_3 = c_t l (\omega_3^2 - \omega_1^2) $$

$$ U_4 = c_q (-\omega_1^2 + \omega_2^2 - \omega_3^2 + \omega_4^2) $$

3. Trajectory Generation#

The desired trajectory as a function of time $t$ is:

$$ X_{\text{ref}}(t),\quad Y_{\text{ref}}(t),\quad Z_{\text{ref}}(t),\quad \psi_{\text{ref}}(t) $$

4. Linear Parameter Varying (LPV) Systems#

LPV systems are described by:

$$ \dot{x}(t) = A(t)x(t) + B(t)u(t) $$

$$ y(t) = C(t)x(t) + D(t)u(t) $$

5. Model Predictive Control (MPC)#

MPC uses a dynamic model to optimize future control actions. The objective function is:

$$ \min_{u} \sum_{k=0}^{N-1} \left( (x_k - x_{\text{ref}})^T Q (x_k - x_{\text{ref}}) + (u_k - u_{\text{ref}})^T R (u_k - u_{\text{ref}}) \right) $$

Subject to:

$$ x_{k+1} = A x_k + B u_k $$

$$ x_{\min} \leq x_k \leq x_{\max} $$

$$ u_{\min} \leq u_k \leq u_{\max} $$

Where:

  • $x_k$: system state at step $k$.

  • $u_k$: control input at step $k$.

  • $x_{\text{ref}}, u_{\text{ref}}$: reference state and input.

  • $Q, R$: weighting matrices.

  • $N$: prediction horizon.

  • $x_{\min}, x_{\max}, u_{\min}, u_{\max}$: state/input bounds.