Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
shift_tracking module

Pilot nav shift variable to track an offset in navigation

Typical use is to Control a fixed-wing to use both GPS and local position (from Decawave modules for instance) to land it with precision or in a net.

Data are coming from POSITION_ESTIMATE ABI message.

See https://hal-enac.archives-ouvertes.fr/hal-01936955 for more information on UAV landing in a net.

Example for airframe file

Add to your firmware section:

<module name="shift_tracking"/>

Module configuration options

Airframe file section

  • section name: SHIFT_TRACKING prefix: SHIFT_TRACKING_
    • name ID value: ABI_BROADCAST
      Description: ABI binding ID
    • name DIR value: 1.0, 0., 0.
      Description: direction to track expressed in the local pos frame
    • name KP value: 1.5
      Description: proportional gain
    • name KI value: 0.5
      Description: integral gain
    • name KD value: 1.0
      Description: derivative gain
    • name MAXSHIFT value: 30.
      Description: maximum offset control
    • name MAXSUM value: 30.
      Description: maximum integral part

Module functions

Init Functions

These initialization functions are called once on startup.

Files

Header Files

The following headers are automatically included in modules.h

Source Files

Raw shift_tracking.xml file:

<!DOCTYPE module SYSTEM "module.dtd">
<module name="shift_tracking" dir="ctrl">
<doc>
<description>
Pilot nav shift variable to track an offset in navigation
Typical use is to Control a fixed-wing to use both GPS and
local position (from Decawave modules for instance) to land it
with precision or in a net.
Data are coming from POSITION_ESTIMATE ABI message.
See https://hal-enac.archives-ouvertes.fr/hal-01936955 for more information on UAV landing in a net.
</description>
<section name="SHIFT_TRACKING" prefix="SHIFT_TRACKING_">
<define name="ID" value="ABI_BROADCAST" description="ABI binding ID"/>
<define name="DIR" value="1.0, 0., 0." type="float[]" description="direction to track expressed in the local pos frame"/>
<define name="KP" value="1.5" description="proportional gain"/>
<define name="KI" value="0.5" description="integral gain"/>
<define name="KD" value="1.0" description="derivative gain"/>
<define name="MAXSHIFT" value="30." description="maximum offset control"/>
<define name="MAXSUM" value="30." description="maximum integral part"/>
</section>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="shift tracking">
<dl_setting MAX="5." MIN="0." STEP="0.05" VAR="shift_tracking.kp" module="modules/ctrl/shift_tracking" handler="SetKp"/>
<dl_setting MAX="5." MIN="0." STEP="0.05" VAR="shift_tracking.ki" module="modules/ctrl/shift_tracking" handler="SetKi"/>
<dl_setting MAX="5." MIN="0." STEP="0.05" VAR="shift_tracking.kd" module="modules/ctrl/shift_tracking" handler="SetKd"/>
</dl_settings>
</dl_settings>
</settings>
<header>
<file name="shift_tracking.h"/>
</header>
<init fun="shift_tracking_init()"/>
<makefile>
<file name="shift_tracking.c"/>
</makefile>
</module>