Difference between revisions of "Control Loops"

From PaparazziUAV
Jump to navigation Jump to search
(file names)
Line 27: Line 27:
[[Image:Diagram_course_loop.png|Course loop]]
[[Image:Diagram_course_loop.png|Course loop]]


The course loop is the upper stage of the horizontal control. It is located in '''sw/airborne/fw_h_ctl.c'''.
The course loop is the upper stage of the horizontal control.
It is located in '''sw/airborne/firmwares/fixedwing/stabilization/stabilization_attitude.c''' (formerly fw_h_ctl.c).


== Roll loop ==
== Roll loop ==
Line 33: Line 34:
[[Image:Diagram_roll_loop.png|Roll loop]]
[[Image:Diagram_roll_loop.png|Roll loop]]


The roll loop is the lower stage of the horizontal control and is used for lateral attitude stabilization. It is located in '''sw/airborne/fw_h_ctl.c'''.
The roll loop is the lower stage of the horizontal control and is used for lateral attitude stabilization. It is located in '''stabilization_attitude.c'''.
If <tt>H_CTL_ROLL_ATTITUDE_GAIN</tt> is undefined, the code will fallback to a attitude-only loop, where <tt>estimator_p</tt> is disregarded and the gain for <tt>estimator_phi</tt> is <tt>H_CTL_ROLL_PGAIN</tt>.
If <tt>H_CTL_ROLL_ATTITUDE_GAIN</tt> is undefined, the code will fallback to a attitude-only loop, where <tt>estimator_p</tt> is disregarded and the gain for <tt>estimator_phi</tt> is <tt>H_CTL_ROLL_PGAIN</tt>.


Line 40: Line 41:
[[Image:Diagram_altitude_loop.png|Altitude loop]]
[[Image:Diagram_altitude_loop.png|Altitude loop]]


The altitude loop is the upper stage of the vertical control. It is located in '''sw/airborne/fw_v_ctl.c'''.
The altitude loop is the upper stage of the vertical control.
It is located in '''sw/airborne/firmwares/fixedwing/guidance/guidance_v.c''' (formerly fw_v_ctl.c)


== Auto Throttle and Auto Pitch climb loops ==
== Auto Throttle and Auto Pitch climb loops ==
Line 52: Line 54:
[[Image:Diagram_auto_pitch_loop.png|Auto Pitch climb loop]]
[[Image:Diagram_auto_pitch_loop.png|Auto Pitch climb loop]]


The climb loop is the intermediate stage of the vertical control. It is located in '''sw/airborne/fw_v_ctl.c'''.
The climb loop is the intermediate stage of the vertical control. It is located in '''guidance_v.c'''.


== Pitch loop ==
== Pitch loop ==
Line 58: Line 60:
[[Image:Diagram_pitch_loop.png|Pitch loop]]
[[Image:Diagram_pitch_loop.png|Pitch loop]]


The pitch loop is the lower stage of the vertical control and is used for longitudinal attitude stabilization. It is located in '''sw/airborne/fw_h_ctl.c (!)'''.
The pitch loop is the lower stage of the vertical control and is used for longitudinal attitude stabilization. It is located in '''stabilization_attitude.c'''.


== Control loops using Airspeed Sensor ==
== Control loops using Airspeed Sensor ==

Revision as of 03:52, 30 November 2010

This page presents the default control loops used by the Paparazzi airborne code for navigation, guidance and control.

General Information

All the possible combinations of control loops might not be fully detailed.

In the following diagrams, the block s is used for the derivative function and 1/s is used for the integrator function.

The variables' names are the one used in the airborne code (written in C). Most of this name can the used capitalized in the Airframe Configuration file in order to define the default value of these variables. If in capital letters in the diagrams, the value is fixed and cannot be changed using Settings mechanism.

Fixed-wing autopilot

Global view

General overview

The elements servos, rc_commands, commands and command_laws correspond to specific section of the Airframe Configuration file. Most of the code located in these blocks is generated from the xml of th configuration file.

The value +/-9600 correspond to +/-MAX_PPRZ. This pprz unit is used as a normalized internal unit for input and output values of the control_laws block.

Navigation loop

The navigation loop is located in sw/airborne/nav.*. The navigation routines are called from the Flight Plans.

Course loop

Course loop

The course loop is the upper stage of the horizontal control. It is located in sw/airborne/firmwares/fixedwing/stabilization/stabilization_attitude.c (formerly fw_h_ctl.c).

Roll loop

Roll loop

The roll loop is the lower stage of the horizontal control and is used for lateral attitude stabilization. It is located in stabilization_attitude.c. If H_CTL_ROLL_ATTITUDE_GAIN is undefined, the code will fallback to a attitude-only loop, where estimator_p is disregarded and the gain for estimator_phi is H_CTL_ROLL_PGAIN.

Altitude loop

Altitude loop

The altitude loop is the upper stage of the vertical control. It is located in sw/airborne/firmwares/fixedwing/guidance/guidance_v.c (formerly fw_v_ctl.c)

Auto Throttle and Auto Pitch climb loops

Two climb loops are available. The are called from the flight plan by changing the vertical navigation mode. The default mode is Auto Throttle.


Auto Throttle climb loop


Auto Pitch climb loop

The climb loop is the intermediate stage of the vertical control. It is located in guidance_v.c.

Pitch loop

Pitch loop

The pitch loop is the lower stage of the vertical control and is used for longitudinal attitude stabilization. It is located in stabilization_attitude.c.

Control loops using Airspeed Sensor

Adding an airspeed sensor measures actual airspeed resulting in better throttle control and aircraft performance especially in windy conditions. The control loops using an airspeed sensor are described here.

Multi-rotor (Booz) autopilot