<!DOCTYPE module SYSTEM "module.dtd">

<module name="stabilization_int_euler" dir="stabilization">
  <doc>
    <description>
      Stabilization controller for rotorcraft using integer euler implementation
    </description>
    <section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
      <define name="SP_MAX_PHI"   value="45." description="max setpoint for roll angle" unit="deg"/>
      <define name="SP_MAX_THETA" value="45." description="max setpoint for pitch angle" unit="deg"/>
      <define name="SP_MAX_R"     value="90." description="max setpoint for yaw rate" unit="deg/s"/>
      <define name="DEADBAND_R"   value="250" description="deadband on yaw rate input"/>
      <define name="REF_OMEGA_P"  value="400" description="reference generator omega param on roll rate" unit="deg/s"/>
      <define name="REF_ZETA_P"   value="0.9" description="reference generator zeta param on roll rate"/>
      <define name="REF_MAX_P"    value="300." description="reference generator max roll rate" unit="deg/s"/>
      <define name="REF_MAX_PDOT" value="RadOfDeg(7000.)" description="reference generator max roll acceleration"/>
      <define name="REF_OMEGA_Q"  value="400" description="reference generator omega param on pitch rate" unit="deg/s"/>
      <define name="REF_ZETA_Q"   value="0.9" description="reference generator zeta param on pitch rate"/>
      <define name="REF_MAX_Q"    value="300." description="reference generator max pitch rate" unit="deg/s"/>
      <define name="REF_MAX_QDOT" value="RadOfDeg(7000.)" description="reference generator max pitch acceleration"/>
      <define name="REF_OMEGA_R"  value="250" description="reference generator omega param on yaw rate" unit="deg/s"/>
      <define name="REF_ZETA_R"   value="0.9" description="reference generator zeta param on yaw rate"/>
      <define name="REF_MAX_R"    value="180." description="reference generator max yaw rate" unit="deg/s"/>
      <define name="REF_MAX_RDOT" value="RadOfDeg(1800.)" description="reference generator max yaw acceleration"/>
      <define name="PHI_PGAIN"    value="400" description="feedback roll P gain"/>
      <define name="PHI_DGAIN"    value="300" description="feedback roll D gain"/>
      <define name="PHI_IGAIN"    value="100" description="feedback roll I gain"/>
      <define name="THETA_PGAIN"  value="400" description="feedback pitch P gain"/>
      <define name="THETA_DGAIN"  value="300" description="feedback pitch D gain"/>
      <define name="THETA_IGAIN"  value="100" description="feedback pitch I gain"/>
      <define name="PSI_PGAIN"    value="380" description="feedback yaw P gain"/>
      <define name="PSI_DGAIN"    value="320" description="feedback yaw D gain"/>
      <define name="PSI_IGAIN"    value="100" description="feedback yaw I gain"/>
      <define name="PHI_DDGAIN"   value="300" description="feedforward roll acceleration gain"/>
      <define name="THETA_DDGAIN" value="300" description="feedforward pitch acceleration gain"/>
      <define name="PSI_DDGAIN"   value="300" description="feedforward yaw acceleration gain"/>
    </section>
  </doc>
  <settings target="ap|nps">
    <dl_settings>
      <dl_settings NAME="Att Loop">
        <dl_setting var="stabilization_gains.p.x" min="1" step="1" max="8000" shortname="pgain phi" param="STABILIZATION_ATTITUDE_PHI_PGAIN" type="int32" persistent="true" module="stabilization/stabilization_attitude_common_int"/>
        <dl_setting var="stabilization_gains.d.x" min="1" step="1" max="4000" shortname="dgain p" param="STABILIZATION_ATTITUDE_PHI_DGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.i.x" min="0" step="1" max="800" shortname="igain phi" param="STABILIZATION_ATTITUDE_PHI_IGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.dd.x" min="0" step="1" max="1000" shortname="ddgain p" param="STABILIZATION_ATTITUDE_PHI_DDGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.p.y" min="1" step="1" max="8000" shortname="pgain theta" param="STABILIZATION_ATTITUDE_THETA_PGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.d.y" min="1" step="1" max="4000" shortname="dgain q" param="STABILIZATION_ATTITUDE_THETA_DGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.i.y" min="0" step="1" max="800" shortname="igain theta" param="STABILIZATION_ATTITUDE_THETA_IGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.dd.y" min="0" step="1" max="1000" shortname="ddgain q" param="STABILIZATION_ATTITUDE_THETA_DDGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.p.z" min="1" step="1" max="4000" shortname="pgain psi" param="STABILIZATION_ATTITUDE_PSI_PGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.d.z" min="1" step="1" max="4000" shortname="dgain r" param="STABILIZATION_ATTITUDE_PSI_DGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.i.z" min="0"  step="1" max="400" shortname="igain psi" param="STABILIZATION_ATTITUDE_PSI_IGAIN" type="int32" persistent="true"/>
        <dl_setting var="stabilization_gains.dd.z" min="0" step="1" max="1000" shortname="ddgain r" param="STABILIZATION_ATTITUDE_PSI_DDGAIN" type="int32" persistent="true"/>
      </dl_settings>
    </dl_settings>
  </settings>
  <autoload name="stabilization" type="rotorcraft"/>
  <header>
    <file name="stabilization_attitude.h"/>
    <file name="stabilization_attitude_euler_int.h"/>
  </header>
  <init fun="stabilization_attitude_init()"/>
  <makefile target="ap|nps" firmware="rotorcraft">
    <file name="stabilization_attitude_euler_int.c" dir="$(SRC_FIRMWARE)/stabilization"/>
    <file name="stabilization_attitude_ref_euler_int.c" dir="$(SRC_FIRMWARE)/stabilization"/>
    <file name="stabilization_attitude_rc_setpoint.c" dir="$(SRC_FIRMWARE)/stabilization"/>
    <define name="STABILIZATION_ATTITUDE_TYPE_INT"/>
    <define name="STABILIZATION_ATTITUDE_TYPE_H" value="stabilization_attitude_euler_int.h" type="string"/>
  </makefile>
</module>
