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

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.