Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
flight_benchmark module

Flight benchmark.

This module allows a quantitative assessment of the flight. It calculates the sum of squared error of the two-dimensional course (x / y), the altitude and true airspeed. The sum of squared error of the course and altitude were separated, because they are regulated separately, and so they dependent on various parameters. The module was written to optimize the control parameters and has already been used successfully.

The measurement is not started until about the variable benchm_go is set to 1.

The sum of squared error can by reseted by changing the boolean variable benchm_reset to zero (will turn back to 1 automatically after it has done the reset). This can also be used in a flight plan, which allows a flight plan with auto-reset. So it is possible to fly an oval or a eight figure with a sum of squared error that will be reseted at the very same point of the figure.

Example for airframe file

Add to your firmware section: This example contains all possible configuration options, not all of them are mandatory!

1 <module name="flight_benchmark">
2  <define name="BENCHMARK_AIRSPEED" />
3  <define name="BENCHMARK_ALTITUDE" />
4  <define name="BENCHMARK_POSITION" />
5  <define name="BENCHMARK_TOLERANCE_AIRSPEED" value="0." />
6  <define name="BENCHMARK_TOLERANCE_ALTITUDE" value="0." />
7  <define name="BENCHMARK_TOLERANCE_POSITION" value="0." />
8 </module>

Module configuration options

Define Options

  • name: BENCHMARK_AIRSPEED value: None
    Description: enable airspeed benchmarking (only with airspeed module)
  • name: BENCHMARK_ALTITUDE value: None
    Description: enable altitude benchmarking
  • name: BENCHMARK_POSITION value: None
    Description: enable position (x/y) benchmarking. (shortest error to the path)
  • name: BENCHMARK_TOLERANCE_AIRSPEED value: 0.
    Description: define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance.
  • name: BENCHMARK_TOLERANCE_ALTITUDE value: 0.
    Description: define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance.
  • name: BENCHMARK_TOLERANCE_POSITION value: 0.
    Description: define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance.

Module functions

Init Functions

These initialization functions are called once on startup.

Periodic Functions

These functions are called periodically at the specified frequency from the module periodic loop.

Files

Header Files

The following headers are automatically included in modules.h

Source Files

Raw flight_benchmark.xml file:

<!DOCTYPE module SYSTEM "module.dtd">
<module name="flight_benchmark" dir="benchmark">
<doc>
<description>
Flight benchmark.
This module allows a quantitative assessment of the flight. It calculates the sum of squared error of the two-dimensional course (x / y), the altitude and true airspeed. The sum of squared error of the course and altitude were separated, because they are regulated separately, and so they dependent on various parameters. The module was written to optimize the control parameters and has already been used successfully.
The measurement is not started until about the variable benchm_go is set to 1.
The sum of squared error can by reseted by changing the boolean variable benchm_reset to zero (will turn back to 1 automatically after it has done the reset). This can also be used in a flight plan, which allows a flight plan with auto-reset. So it is possible to fly an oval or a eight figure with a sum of squared error that will be reseted at the very same point of the figure.
</description>
<define name="BENCHMARK_AIRSPEED" description="enable airspeed benchmarking (only with airspeed module)"/>
<define name="BENCHMARK_ALTITUDE" description="enable altitude benchmarking"/>
<define name="BENCHMARK_POSITION" description="enable position (x/y) benchmarking. (shortest error to the path)"/>
<define name="BENCHMARK_TOLERANCE_AIRSPEED" value="0." description="define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance."/>
<define name="BENCHMARK_TOLERANCE_ALTITUDE" value="0." description="define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance."/>
<define name="BENCHMARK_TOLERANCE_POSITION" value="0." description="define the tolerated value where the sum of squared error won't change. Set to zero to have no tolerance."/>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="Benchmark">
<dl_setting MAX="1" MIN="0" STEP="1" VAR="benchm_reset" shortname="bench_reset" module="modules/benchmark/flight_benchmark"/>
<dl_setting MAX="1" MIN="0" STEP="1" VAR="benchm_go" shortname="bench_go" />
<dl_setting MAX="20" MIN="0" STEP="0.1" VAR="ToleranceAispeed" shortname="AS_Tolerance" param="BENCHMARK_TOLERANCE_AIRSPEED"/>
<dl_setting MAX="20" MIN="0" STEP="0.1" VAR="ToleranceAltitude" shortname="Alt_Tolerance" param="BENCHMARK_TOLERANCE_ALTITUDE"/>
<dl_setting MAX="20" MIN="0" STEP="0.1" VAR="TolerancePosition" shortname="Pos_Tolerance" param="BENCHMARK_TOLERANCE_POSITION"/>
</dl_settings>
</dl_settings>
</settings>
<header>
<file name="flight_benchmark.h"/>
</header>
<init fun="flight_benchmark_init()"/>
<periodic fun="flight_benchmark_periodic()" freq="1" autorun="TRUE"/>
<makefile target="ap">
<file name="flight_benchmark.c"/>
</makefile>
</module>