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.