This section explains how the quadcopter physical characteristics and dynamics are
implemented in the
parrotMinidroneHover project and
Parrot Minidrone Simulink template.
The following schematic shows the quadcopter physical characteristics:
Mass and Inertia
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
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 and adapted to a heavy-lift quadcopter by Ponds et al.
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
controllerVars file contains variables pertinent to 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.
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
The models implement several Aerospace
Blockset™ environment blocks, including those for atmosphere and gravity models.
To include these models, you can change the
variable in the workspace to toggle between variable and fixed environment
The model uses the
trimLinearizeOpPoint to linearize the
nonlinear model of the quadcopter using Simulink Control Design (R).
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.
 Prouty, R. Helicopter Performance, Stability, and Control. PWS Publishers, 2005.
 Ponds, P., Mahony, R., Corke, P. Modelling and control of a large quadrotor robot. Control Engineering Practice. 2010.