<xml>
    <object name="FixedWingPathFollowerSettings" singleinstance="true" settings="true" category="Control">
        <description>Settings for the @ref FixedWingPathFollowerModule</description>

        <!-- these coefficients control desired movement in airspace -->
        <field name="HorizontalVelMax" units="m/s" type="float" elements="1" defaultvalue="20"/>
                <!-- Maximum speed the autopilot will try to achieve, usually for long distances -->
        <field name="HorizontalVelMin" units="m/s" type="float" elements="1" defaultvalue="10"/>
                <!-- V_y, Minimum speed the autopilot will try to fly, for example when loitering -->
        <field name="VerticalVelMax" units="m/s" type="float" elements="1" defaultvalue="10"/>
                <!-- maximum allowed climb or sink rate in guided flight-->

        <field name="CourseFeedForward" units="s" type="float" elements="1" defaultvalue="3.0"/>
                <!-- how many seconds to plan the flight vector ahead when initiating necessary heading changes - increase for planes with sluggish response -->

        <field name="HorizontalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.05"/>
                <!-- proportional coefficient for correction vector in path vector field to get back on course - reduce for fast planes to prevent course oscillations -->
        <field name="VerticalPosP" units="(m/s)/m" type="float" elements="1" defaultvalue="0.2"/>
                <!-- proportional coefficient for desired vertical speed in relation to altitude displacement-->

        <!-- these coefficients control actual control outputs -->
        <field name="CoursePI" units="deg/deg" type="float" elements="3" elementnames="Kp,Ki,ILimit" defaultvalue="0.2, 0, 0"/>
                <!-- coefficients for desired bank angle in relation to ground bearing error - this controls heading -->

        <field name="SpeedPI" units="deg / (m/s)" type="float" elements="3" elementnames="Kp,Ki,ILimit" defaultvalue="2.5, .25, 10"/>
                <!-- coefficients for desired pitch
                     in relation to speed error IASerror -->
        <field name="VerticalToPitchCrossFeed" units="deg / (m/s)" type="float" elementnames="Kp,Max" defaultvalue="5, 10"/>
                <!-- coefficients for adjusting desired pitch
                     in relation to "vertical speed error -->
        <field name="AirspeedToPowerCrossFeed" units="1 / (m/s)" type="float" elementnames="Kp,Max" defaultvalue="0.2, 1"/>
                <!-- proportional coefficient for adjusting vertical speed error for power calculation
                     in relation to airspeed error IASerror -->
        <field name="PowerPI" units="1/(m/s)" type="float" elements="3" elementnames="Kp,Ki,ILimit" defaultvalue="0.01,0.05,0.5"/>
                <!-- proportional coefficient for desired throttle
                     in relation to vertical speed error (absolute but including crossfeed) -->

        <!-- output limits -->
        <field name="RollLimit" units="deg" type="float" elements="3" elementnames="Min,Neutral,Max" defaultvalue="-35,0,35" />
                <!-- maximum allowed bank angles in navigates flight -->
        <field name="PitchLimit" units="deg" type="float" elements="3" elementnames="Min,Neutral,Max" defaultvalue="-10,5,20" />
                <!-- maximum allowed pitch angles and setpoint for neutral pitch -->
        <field name="ThrottleLimit" units="" type="float" elements="3" elementnames="Min,Neutral,Max" defaultvalue="0.1,0.5,0.9" />
                <!-- minimum and maximum allowed throttle and setpoint for cruise speed -->
        <field name="Safetymargins" units="" type="float"
                elementnames="Wind, Stallspeed, Lowspeed, Highspeed, Overspeed, Lowpower, Highpower, Pitchcontrol"
                defaultvalue="90, 1.0, 0.5, 1.5, 1.0, 1, 1, 1" />
                <!-- Wind: degrees of crabbing allowed
                     Speeds: percentage (1.0=100%) of the limit to be over/onder
                     Power & Control: flag to turn on/off 0.0 =off 1.0 = on -->
        <field name="UpdatePeriod" units="ms" type="int32" elements="1" defaultvalue="100"/>

        <access gcs="readwrite" flight="readwrite"/>
        <telemetrygcs acked="true" updatemode="onchange" period="0"/>
        <telemetryflight acked="true" updatemode="onchange" period="0"/>
        <logging updatemode="manual" period="0"/>
    </object>
</xml>