Files
paparazzi/conf/modules/guidance_rotorcraft.xml
T
Gautier Hattenberger eceffb8bd5 [ocaml] apply a second topological sort to modules (#2793)
* [ocaml] apply a second topological sort to modules

After the first one, all functionalities are checked, but corresponding
modules are not ordered with the other one.
This second sorting algorithm (simpler) is just checking that final
selection of modules is correctly ordered and check for possible cyclic
dependencies not yet found.
ahrs_common dep node is fixed to avoid such a situation.

* [modules] trying to fix cyclic dependency in rotorcraft gnc modules

the main issue is that the rotorcraft navigation is not explicitely
included by the user but automagically included, which is not a good
idea, same goes for guidance.

* [modules] fix dep

system_core is already provided by firmware module and @no_settings
was making a cyclic dep for fbw
2021-11-09 16:04:04 +01:00

73 lines
5.5 KiB
XML

<!DOCTYPE module SYSTEM "module.dtd">
<module name="guidance_rotorcraft" dir="guidance" task="control">
<doc>
<description>
Base guidance code for rotorcraft
It provides:
- horizontal guidance with reference
- vertical guidance with reference and adaptive control
- flip mode
</description>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="MAX_BANK" value="20" description="maximum commanded bank angle" unit="deg"/>
<define name="PGAIN" value="79" description="feedback horizontal control P gain"/>
<define name="DGAIN" value="100" description="feedback horizontal control D gain"/>
<define name="IGAIN" value="30" description="feedback horizontal control I gain"/>
</section>
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
<define name="HOVER_KP" value="283" description="feedback vertical control P gain"/>
<define name="HOVER_KD" value="82" description="feedback vertical control D gain"/>
<define name="HOVER_KI" value="13" description="feedback vertical control I gain"/>
<define name="NOMINAL_HOVER_THROTTLE" value="0.655" description="nominal throttle at hover (between 0 and 1)"/>
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE|TRUE" description="enable adaptive control by default"/>
</section>
</doc>
<settings target="ap|nps">
<dl_settings>
<dl_settings NAME="Vert Loop">
<dl_setting var="guidance_v_kp" min="0" step="1" max="600" shortname="kp" param="GUIDANCE_V_HOVER_KP" persistent="true" module="guidance/guidance_v"/>
<dl_setting var="guidance_v_kd" min="0" step="1" max="600" shortname="kd" param="GUIDANCE_V_HOVER_KD" persistent="true"/>
<dl_setting var="guidance_v_ki" min="0" step="1" max="300" shortname="ki" handler="SetKi" param="GUIDANCE_V_HOVER_KI" persistent="true" module="guidance/guidance_v"/>
<dl_setting var="guidance_v_nominal_throttle" min="0.2" step="0.01" max="0.8" shortname="nominal_throttle" param="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" persistent="true"/>
<dl_setting var="guidance_v_adapt_throttle_enabled" min="0" step="1" max="1" shortname="adapt_throttle" param="GUIDANCE_V_ADAPT_THROTTLE_ENABLED" values="FALSE|TRUE" persistent="true"/>
<dl_setting var="guidance_v_z_sp" min="-5" step="0.5" max="3" shortname="sp" unit="2e-8m" alt_unit="m" alt_unit_coef="0.00390625"/>
</dl_settings>
<dl_settings NAME="Horiz Loop">
<dl_setting var="guidance_h.use_ref" min="0" step="1" max="1" shortname="use_ref" values="FALSE|TRUE" handler="SetUseRef" param="GUIDANCE_H_USE_REF" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="gh_ref.max_speed" min="0.1" step="0.1" max="15.0" shortname="max_speed" handler="SetMaxSpeed" param="GUIDANCE_H_REF_MAX_SPEED" type="float" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="guidance_h.approx_force_by_thrust" min="0" step="1" max="1" shortname="approx_force" values="FALSE|TRUE" param="GUIDANCE_H_APPROX_FORCE_BY_THRUST" type="uint8" persistent="true"/>
<dl_setting var="gh_ref.tau" min="0.1" step="0.1" max="1.0" shortname="tau" handler="SetTau" param="GUIDANCE_H_REF_TAU" type="float" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="gh_ref.omega" min="0.1" step="0.1" max="3.0" shortname="omega" handler="SetOmega" param="GUIDANCE_H_REF_OMEGA" type="float" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="gh_ref.zeta" min="0.7" step="0.05" max="1.0" shortname="zeta" handler="SetZeta" param="GUIDANCE_H_REF_ZETA" type="float" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="guidance_h.gains.p" min="0" step="1" max="400" shortname="kp" param="GUIDANCE_H_PGAIN" type="int32" persistent="true"/>
<dl_setting var="guidance_h.gains.d" min="0" step="1" max="400" shortname="kd" param="GUIDANCE_H_DGAIN" type="int32" persistent="true"/>
<dl_setting var="guidance_h.gains.i" min="0" step="1" max="400" shortname="ki" handler="set_igain" param="GUIDANCE_H_IGAIN" type="int32" persistent="true" module="guidance/guidance_h"/>
<dl_setting var="guidance_h.gains.v" min="0" step="1" max="400" shortname="kv" param="GUIDANCE_H_VGAIN" type="int32" persistent="true"/>
<dl_setting var="guidance_h.gains.a" min="0" step="1" max="400" shortname="ka" param="GUIDANCE_H_AGAIN" type="int32" persistent="true"/>
<dl_setting var="guidance_h.sp.pos.x" MIN="-10" MAX="10" STEP="1" shortname="sp_x_ned" unit="1/2^8m" alt_unit="m" alt_unit_coef="0.00390625"/>
<dl_setting var="guidance_h.sp.pos.y" MIN="-10" MAX="10" STEP="1" shortname="sp_y_ned" unit="1/2^8m" alt_unit="m" alt_unit_coef="0.00390625"/>
</dl_settings>
</dl_settings>
</settings>
<dep>
<!--depends>@navigation</depends-->
<depends>nav_basic_rotorcraft,@stabilization</depends>
<provides>guidance,attitude_command</provides>
</dep>
<header>
<file name="guidance_h.h"/>
<file name="guidance_v.h"/>
</header>
<init fun="guidance_h_init()"/>
<init fun="guidance_v_init()"/>
<makefile target="ap|nps|hitl" firmware="rotorcraft">
<file name="guidance_h.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_h_ref.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_v.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_v_ref.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_v_adapt.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_flip.c" dir="$(SRC_FIRMWARE)/guidance"/>
</makefile>
</module>