Quadcopter Dynamics

This section explains how the quadcopter physical characteristics and dynamics are implemented in the parrotMinidroneHover project and Hover Parrot Minidrone Simulink template.

Quadcopter Physical Characteristics

The following schematic shows the quadcopter physical characteristics:

  • Axis

  • Mass and Inertia

  • Rotors

Axis

The quadcopter body axis is centered in the center of gravity.

  • The x-axis starts at the center of gravity and points in the direction along the nose of the quadcopter.

  • The y-axis starts at the center of gravity and points to the right of the quadcopter.

  • The z-axis starts at the center of gravity and points downward from the quadcopter, following the right-hand rule.

Mass and Inertia

We assume that the whole body works as a particle. The file vehicleVars contains the values for the inertia and mass.

Rotors

  • Rotor #1 rotates positively with respect to the z-axis. It is located parallel to the xy-plane, -45 degrees from the x-axis.

  • Rotor #2 rotates negatively with respect to the body's z-axis. It is located parallel to the xy-plane, -135 degrees from the x-axis.

  • Rotor #3 has the same rotation direction as rotor #1. It is located parallel to the xy-plane, 135 degrees from the x-axis.

  • Rotor #4 has the same rotation direction as rotor #2. It is located parallel to the xy-plane, 45 degrees from the x-axis.

This example uses the approach defined by Prouty[1] and adapted to a heavy-lift quadcopter by Ponds et al[2].

Control

For control, the quadcopter uses a complementary filter to estimate attitude, and Kalman filters to estimate position and velocity. The example implements:

  • A PID controller for pitch/roll control

  • A PD controller for yaw

  • A PD controller for position control in North-East-Down coordinates

The controllerVars file contains variables pertinent to the controller. The estimatorVars file contains variables pertinent to the estimator.

The example implements the controller and estimators as model subsystems, enabling several combinations of estimators and controllers to be evaluated for design.

Sensors

The example uses a set of sensors to determine its states:

  • An Inertial Measurement Unit (IMU) to measure the angular rates and translational accelerations.

  • A camera for optical flow estimation.

  • A sonar for altitude measurement.

The example stores the characteristics for the sensors in the file sensorVars. To include sensor dynamics with these measurements, you can change the VSS_SENSORS variable in the workspace.

Environment

The models implement several Aerospace Blockset™ environment blocks, including those for atmosphere and gravity models. To include these models, you can change the VSS_ENVIRONMENT variable in the workspace to toggle between variable and fixed environment models.

Linearization

The model uses the trimLinearizeOpPoint to linearize the nonlinear model of the quadcopter using Simulink Control Design (R).

Visualization

You can visualize the variables for the quadcopter in one of the following ways:

  • Using Simulation Data Inspector.

  • Using the flight instrument blocks.

  • Toggling between the different visualization variant subsystems. You can toggle between the different variant subsystems by changing the VSS_VISUALIZATION variable. Note that one of these variants is a FlightGear animation. To use this animation, you must add a FlightGear compatible model of the quadcopter to the project. The software does not include this model.

References

[1] Prouty, R. Helicopter Performance, Stability, and Control. PWS Publishers, 2005.

[2] Ponds, P., Mahony, R., Corke, P. Modelling and control of a large quadrotor robot. Control Engineering Practice. 2010.