By default, throttle and pitch are used to track vertical speed and altitude. Airspeed or ground speed control can be activated.
These initialization functions are called once on startup.
<!DOCTYPE module SYSTEM "module.dtd">
<module name="guidance_full_pid_fw" dir="guidance" task="control">
<doc>
<description>
Vertical control for fixedwing aircraft based on PID
By default, throttle and pitch are used to track vertical speed and altitude.
Airspeed or ground speed control can be activated.
</description>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="ALTITUDE_PGAIN" value="0.12" description="altitude loop P gain"/>
<define name="ALTITUDE_MAX_CLIMB" value="4." description="max climb rate" unit="m/s"/>
<define name="AUTO_CLIMB_LIMIT" value="1." description="climb rate limiter" unit="ms/s/s"/>
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5" description="nominal throttle for cruise flight"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25" description="min cruise throttle"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85" description="max cruise throttle"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.088" description="feedforward throttle gain" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0.004" description="feedback throttle P gain"/>
<define name="AUTO_THROTTLE_DGAIN" value="0.0" description="feedback throttle D gain"/>
<define name="AUTO_THROTTLE_IGAIN" value="0." description="feedback throttle I gain"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.077" description="feedforward pitch gain"/>
<define name="AUTO_PITCH_PGAIN" value="0.027" description="feedback pitch P gain"/>
<define name="AUTO_PITCH_DGAIN" value="0.01" description="feedback pitch D gain"/>
<define name="AUTO_PITCH_IGAIN" value="0.0" description="feedback pitch I gain"/>
<define name="AUTO_PITCH_MAX_PITCH" value="20." description="max pitch up setpoint" unit="deg"/>
<define name="AUTO_PITCH_MIN_PITCH" value="-20." description="max pitch down setpoint" unit="deg"/>
<define name="AUTO_AIRSPEED_SETPOINT" value="16." description="default airspeed setpoint"/>
<define name="AUTO_AIRSPEED_THROTTLE_PGAIN" value="0.1" description="throttle P gain for airspeed control"/>
<define name="AUTO_AIRSPEED_THROTTLE_DGAIN" value="0.12" description="throttle D gain for airspeed control"/>
<define name="AUTO_AIRSPEED_THROTTLE_IGAIN" value="0.0" description="throttle I gain for airspeed control"/>
<define name="AUTO_AIRSPEED_PITCH_PGAIN" value="0.06" description="pitch P gain for airspeed control"/>
<define name="AUTO_AIRSPEED_PITCH_DGAIN" value="0.0" description="pitch D gain for airspeed control"/>
<define name="AUTO_AIRSPEED_PITCH_IGAIN" value="0.042" description="pitch I gain for airspeed control"/>
<define name="AIRSPEED_MAX" value="30" description="max airspeed setpoint"/>
<define name="AIRSPEED_MIN" value="10" description="min airspeed setpoint"/>
<define name="AUTO_GROUNDSPEED_SETPOINT" value="15" description="default ground speed setpoint"/>
<define name="AUTO_GROUNDSPEED_PGAIN" value="1." description="ground speed P gain"/>
<define name="AUTO_GROUNDSPEED_IGAIN" value="0." description="ground speed I gain"/>
<define name="PITCH_LOITER_TRIM" value="0." description="loiter pitch setpoint trim" unit="deg"/>
<define name="PITCH_DASH_TRIM" value="0." description="dash pitch setpoint trim" unit="deg"/>
<define name="THROTTLE_SLEW" value="0.1" description="throttle slew rate limiter"/>
</section>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="control vert">
<dl_settings name="alt">
<dl_setting MAX="0.2" MIN="0" STEP="0.01" VAR="v_ctl_altitude_pgain" shortname="alt_pgain" param="V_CTL_ALTITUDE_PGAIN"/>
</dl_settings>
<dl_settings name="climb">
<dl_setting MAX="2" MIN="0" STEP="1" var="v_ctl_speed_mode" shortname="speed mode" values="THROTTLE|AIRSPEED|GROUNDSPEED">
<strip_button name="TH" value="0" group="speed_mode"/>
<strip_button name="AS" value="1" group="speed_mode"/>
<strip_button name="GS" value="2" group="speed_mode"/>
</dl_setting>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_min_cruise_throttle" shortname="min cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_max_cruise_throttle" shortname="max cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="guidance/guidance_v" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
<dl_setting MAX="15" MIN="-15" STEP="0.1" VAR="v_ctl_pitch_trim" shortname="pitch trim" param="V_CTL_PITCH_TRIM" unit="rad" alt_unit="deg"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_dgain" shortname="pitch_d" param="V_CTL_AUTO_PITCH_DGAIN" module="guidance/guidance_v_n"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_p" param="V_CTL_AUTO_THROTTLE_PGAIN"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_throttle_igain" shortname="throttle_i" param="V_CTL_AUTO_THROTTLE_IGAIN"/>
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_throttle_dgain" shortname="throttle_d" param="V_CTL_AUTO_THROTTLE_DGAIN"/>
<dl_setting MAX="1" MIN="0" STEP="0.01" VAR="v_ctl_auto_throttle_climb_throttle_increment" shortname="throttle_incr" param="V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT"/>
<dl_setting MAX="1" MIN="0" STEP="0.01" VAR="v_ctl_auto_throttle_pitch_of_vz_pgain" shortname="pitch_of_vz" param="V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_PGAIN"/>
</dl_settings>
</dl_settings>
</dl_settings>
</settings>
<dep>
<depends>@navigation</depends>
<provides>guidance,attitude_command</provides>
</dep>
<header>
<file name="guidance_v_n.h"/>
<file name="guidance_h.h"/>
</header>
<init fun="v_ctl_init()"/>
<makefile target="ap|sim|nps" firmware="fixedwing">
<file name="guidance_v_n.c" dir="$(SRC_FIRMWARE)/guidance"/>
<file name="guidance_h.c" dir="$(SRC_FIRMWARE)/guidance"/>
<define name="CTRL_TYPE_H" value="firmwares/fixedwing/guidance/guidance_v_n.h" type="string"/>
</makefile>
</module>