Paparazzi UAS  v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Hovers the drone based on optical flow made for Linux video Devices

Module XML file: opticflow_hover.xml

Computes Pitch- and roll attide from downward looking camera looking at a textured floor.

  • Sonar is required.
  • Controller can hold position

Example for airframe file

1 <modules>
2  <load name="opticflow_hover.xml"/>
3 </modules>

Module configuration options

Airframe file section

  • section name: VISION prefix: VISION_
    • name PHI_PGAIN value: 400
      Description: Optic flow proportional gain on the roll velocity error
    • name PHI_IGAIN value: 20
      Description: Optic flow integrated gain on the summed roll velocity error
    • name THETA_PGAIN value: 400
      Description: Optic flow proportional gain on the pitch velocity error
    • name THETA_IGAIN value: 20
      Description: Optic flow integrated gain on the summed pitch velocity error
    • name DESIRED_VX value: 0
      Description: The desired velocity in the body frame x direction
    • name DESIRED_VY value: 0
      Description: The desired velocity in the body frame y direction

Files

Header Files

The following headers are automatically included in modules.h

Source Files

Raw opticflow_hover.xml file:

<!DOCTYPE module SYSTEM "module.dtd">
<module name="opticflow_hover" dir="guidance_opticflow">
<doc>
<description>
Hovers the drone based on optical flow made for Linux video Devices.
Computes Pitch- and roll attide from downward looking camera looking at a textured floor.
- Sonar is required.
- Controller can hold position
</description>
<!-- Satbilization parameters and gains -->
<section name="VISION" prefix="VISION_">
<define name="PHI_PGAIN" value="400" description="Optic flow proportional gain on the roll velocity error"/>
<define name="PHI_IGAIN" value="20" description="Optic flow integrated gain on the summed roll velocity error"/>
<define name="THETA_PGAIN" value="400" description="Optic flow proportional gain on the pitch velocity error"/>
<define name="THETA_IGAIN" value="20" description="Optic flow integrated gain on the summed pitch velocity error"/>
<define name="DESIRED_VX" value="0" description="The desired velocity in the body frame x direction"/>
<define name="DESIRED_VY" value="0" description="The desired velocity in the body frame y direction"/>
</section>
</doc>
<settings>
<dl_settings NAME="Vision stabilization">
<!-- Satabilization loop parameters and gains -->
<dl_settings name="vision_stab">
<dl_setting var="opticflow_stab.phi_pgain" module="guidance_opticflow/guidance_opticflow_hover" min="0" step="1" max="10000" shortname="kp_v_phi" param="VISION_PHI_PGAIN"/>
<dl_setting var="opticflow_stab.phi_igain" module="guidance_opticflow/guidance_opticflow_hover" min="0" step="1" max="1000" shortname="ki_v_phi" param="VISION_PHI_IGAIN"/>
<dl_setting var="opticflow_stab.theta_pgain" module="guidance_opticflow/guidance_opticflow_hover" min="0" step="1" max="10000" shortname="kp_v_theta" param="VISION_THETA_PGAIN"/>
<dl_setting var="opticflow_stab.theta_igain" module="guidance_opticflow/guidance_opticflow_hover" min="0" step="1" max="1000" shortname="ki_v_theta" param="VISION_THETA_IGAIN"/>
<dl_setting var="opticflow_stab.desired_vx" module="guidance_opticflow/guidance_opticflow_hover" min="-5" step="0.01" max="5" shortname="desired_vx" param="VISION_DESIRED_VX"/>
<dl_setting var="opticflow_stab.desired_vy" module="guidance_opticflow/guidance_opticflow_hover" min="-5" step="0.01" max="5" shortname="desired_vy" param="VISION_DESIRED_VY"/>
</dl_settings>
</dl_settings>
</settings>
<!--depends>cv_opticflow</depends-->
<header>
<file name="guidance_opticflow_hover.h"/>
</header>
<makefile>
<file name="guidance_opticflow_hover.c"/>
<raw>
ap.CFLAGS += -DGUIDANCE_V_MODE_MODULE_SETTING=GUIDANCE_V_MODE_HOVER
ap.CFLAGS += -DGUIDANCE_H_MODE_MODULE_SETTING=GUIDANCE_H_MODE_MODULE
</raw>
</makefile>
</module>