syd & sandy wrote:
Hi all , I have another silly question.... how does one enable autopilot
passive mode ?
Im rewriting my flightdirector routines because I thought that having
the autopilot in passive mode would give me readouts of target roll
and pitch properties without the autopilot controlling the plane ... I
set /autopilot/settings/passive-mode to "true" but it appears thats not
enough ...
Thanks in advance , if anyone knows the answer.
I won't say this is the best way I could have implemented this feature,
but here's the logic. For controlling a flight director you want
something analogous to a running autopilot that is not driving the
servos. This is similar to a cascading controller where the final stage
is disabled.
For instance an altitude hold mode could be implemented in 3 stages.
Stage 1 sets a target climb rate based on your altitude error. Stage 2
sets a target pitch angle to achieve the stage 1 climb rate. Stage 3
drives the elevator trim to achieve the the stage 2 pitch angle.
In this example you want to run the first two stage and disable the
3rd/final stage which actually manipulates the elevator.
To achieve this you need to add a tag to the <enable> block in a stage
definition in the autopilot xml. This will look something like:
<enable>
<prop>/autopilot/locks/heading</prop>
<value>dg-heading-hold</value>
<honor-passive>true</honor-passive>
</enable>
What this says is that when passive mode is enabled, this stage will be
ignored. Any stage that doesn't have the <honor-passive> tag in it will
always run as per usual.
Syd, I can send you my personal testing autopilot config for the Bravo
if you like. Or, why don't I just waste some bandwidth and attach it
here. The nice thing about this approach is that you get nice target
pitch suggestions for the flight director.
I also have a perl-tk test control head with the KFC-200 buttons and
annunciators if you are interested in that at all.
Regards,
Curt.
--
Curtis Olson http://www.flightgear.org/~curt
HumanFIRST Program http://www.humanfirst.umn.edu/
FlightGear Project http://www.flightgear.org
Unique text: 2f585eeea02e2c79d7b1d8c4963bae2d
<?xml version="1.0"?>
<!-- Autopilot Version 4 Configuration for the Citation-Bravo or -->
<!-- Citation Based on 737-AutopilotV4.XML -->
<!-- This is still in development, so not all of the controllers are -->
<!-- currently used, or work properly. -->
<PropertyList>
<!-- =============================== -->
<!-- ====== Roll Axis Modes ====== -->
<!-- =============================== -->
<!-- Wing leveler -->
<pid-controller>
<name>Wing Leveler (Turn Coordinator based)</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>wing-leveler</value>
<honor-passive>true</honor-passive>
</enable>
<input>
<prop>/orientation/roll-deg</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.5</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for unfiltered -->
<!-- derivative error -->
<Ti>10.0</Ti> <!-- integrator time -->
<Td>0.01</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Heading Bug Hold. 2 stage cascade controller. -->
<!-- Stage #1 sets target roll based on diff between current heading -->
<!-- and heading bug. -->
<pi-simple-controller>
<name>Heading Bug Hold (DG based) Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>dg-heading-hold</value>
</enable>
<input>
<prop>/autopilot/internal/fdm-heading-bug-error-deg</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/internal/target-roll-deg</prop>
</output>
<config>
<Kp>-2.0</Kp> <!-- proportional gain -->
<Ki>0.0</Ki> <!-- integral gain -->
<u_min>-30.0</u_min> <!-- minimum output clamp -->
<u_max>30.0</u_max> <!-- maximum output clamp -->
</config>
</pi-simple-controller>
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
<pid-controller>
<name>Heading Bug Hold (DG based) Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>dg-heading-hold</value>
<honor-passive>true</honor-passive>
</enable>
<input>
<prop>/orientation/roll-deg</prop>
</input>
<reference>
<prop>/autopilot/internal/target-roll-deg</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.5</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti> <!-- integrator time -->
<Td>0.01</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- True Heading hold. 2 stage cascade controller. -->
<!-- Stage #1 sets target roll based on diff between current heading -->
<!-- and target heading. -->
<pi-simple-controller>
<name>True Heading Hold (DG based) Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>true-heading-hold</value>
</enable>
<input>
<prop>/autopilot/internal/true-heading-error-deg</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/internal/target-roll-deg</prop>
</output>
<config>
<Kp>-2.0</Kp> <!-- proportional gain -->
<Ki>0.0</Ki> <!-- integral gain -->
<u_min>-30.0</u_min> <!-- minimum output clamp -->
<u_max>30.0</u_max> <!-- maximum output clamp -->
</config>
</pi-simple-controller>
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
<pid-controller>
<name>True Heading Hold (DG based) Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>true-heading-hold</value>
<honor-passive>true</honor-passive>
</enable>
<input>
<prop>/orientation/roll-deg</prop>
</input>
<reference>
<prop>/autopilot/internal/target-roll-deg</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.5</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti> <!-- integrator time -->
<Td>0.01</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Nav1 hold. 2 stage cascade controller. -->
<!-- Stage #1 sets target roll based on nav1-heading-error-deg. -->
<pid-controller>
<name>Nav1 Hold Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>nav1-hold</value>
</enable>
<input>
<prop>/autopilot/internal/nav1-heading-error-deg</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/internal/target-roll-deg</prop>
</output>
<config>
<Kp>-1.3</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>40</Ti> <!-- integrator time -->
<Td>0.00001</Td> <!-- derivator time -->
<u_min>-30.0</u_min> <!-- minimum output clamp -->
<u_max>30.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
<pid-controller>
<name>Nav1 Hold Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>nav1-hold</value>
<honor-passive>true</honor-passive>
</enable>
<input>
<prop>/orientation/roll-deg</prop>
</input>
<reference>
<prop>/autopilot/internal/target-roll-deg</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.5</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti> <!-- integrator time -->
<Td>0.02</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- ================================ -->
<!-- ======= Pitch Axis Modes ======= -->
<!-- ================================ -->
<!-- Simple pitch hold -->
<pid-controller>
<name>Pitch hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>pitch-hold</value>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/target-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.15</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>5.0</Ti> <!-- integrator time -->
<Td>0.1</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple pitch hold with yoke -->
<pid-controller>
<name>Pitch hold w/ yoke</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>pitch-hold-yoke</value>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/target-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator</prop>
</output>
<config>
<Kp>-0.05</Kp>
<!-- proportional gain (was 0.05)-->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>.5</Ti>
<!-- integrator time (was 1.0) -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple angle of attack hold -->
<pid-controller>
<name>AOA hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>aoa-hold</value>
</enable>
<input>
<prop>/orientation/alpha-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/target-aoa-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.05</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>0.5</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Altitude hold. 3 stage cascade controller. -->
<!-- Stage #1 sets target rate of climb based on diff between current -->
<!-- alt and target altitude. -->
<pi-simple-controller>
<name>Altitude Hold (Altimeter based) Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>altitude-hold</value>
</enable>
<input>
<prop>/position/altitude-ft</prop>
</input>
<reference>
<prop>/autopilot/settings/target-altitude-ft</prop>
</reference>
<output>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</output>
<config>
<Kp>0.3</Kp>
<!-- proportional gain -->
<Ki>0.0</Ki>
<u_min>-33.3</u_min>
<!-- minimum output clamp -->
<u_max>33.3</u_max>
<!-- maximum output clamp -->
</config>
</pi-simple-controller>
<!-- Stage #2 drives the target-pitch to achieve the desired climb -->
<!-- rate. -->
<pid-controller>
<name>Altitude Hold (Altimeter based) Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>altitude-hold</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</reference>
<output>
<prop>/autopilot/settings/target-pitch-deg</prop>
</output>
<config>
<Kp>0.06</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti> <!-- integrator time -->
<Td>0.00001</Td> <!-- derivator time -->
<u_min>-5.0</u_min> <!-- minimum output clamp -->
<u_max>5.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #3 drives the elevator trim to achieve the desired pitch -->
<!-- angle -->
<pid-controller>
<name>Pitch hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>altitude-hold</value>
<honor-passive>true</honor-passive>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/target-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.15</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>5.0</Ti> <!-- integrator time -->
<Td>0.1</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!--
Altitude hold. 2 stage cascade controller.
Stage #1 sets target rate of climb based on diff between current alt
and target altitude.
-->
<pi-simple-controller>
<name>Altitude Hold (Altimeter based) Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>altitude-hold-old</value>
</enable>
<input>
<prop>/position/altitude-ft</prop>
</input>
<reference>
<prop>/autopilot/settings/target-altitude-ft</prop>
</reference>
<output>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</output>
<config>
<Kp>0.3</Kp>
<!-- proportional gain -->
<Ki>0.0</Ki>
<u_min>-33.3</u_min>
<!-- minimum output clamp -->
<u_max>33.3</u_max>
<!-- maximum output clamp -->
</config>
</pi-simple-controller>
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
<pid-controller>
<name>Altitude Hold (Altimeter based) Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>altitude-hold-old</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.002</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!--
AGL hold. 2 stage cascade controller.
Stage #1 sets target rate of climb based on diff between current agl
and target agl.
-->
<pid-controller>
<name>AGL Hold (Altimeter based) Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>agl-hold</value>
</enable>
<input>
<prop>/position/altitude-agl-ft</prop>
</input>
<reference>
<prop>/autopilot/settings/target-agl-ft</prop>
</reference>
<output>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</output>
<config>
<Kp>0.3</Kp>
<!-- proportional gain -->
<Ki>0.0</Ki>
<beta>1.0</beta>
<!-- input value weighing factor -->
<u_min>-33.33</u_min>
<!-- minimum output clamp -->
<u_max>33.33</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
<pid-controller>
<name>Altitude Hold (Altimeter based) Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>afl-hold</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.001</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Glideslope hold. -->
<pid-controller>
<name>Glideslope Hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>gs1-hold</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/instrumentation/nav[0]gs-rate-of-climb</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.004</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-.68</u_min>
<!-- minimum output clamp -->
<u_max>.68</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!--
==============
Velocity Modes
==============
-->
<!-- Simple Auto throttle -->
<pid-controller>
<name>Auto Throttle</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/speed</prop>
<value>speed-with-throttle</value>
</enable>
<input>
<prop>/velocities/airspeed-kt</prop>
</input>
<reference>
<prop>/autopilot/settings/target-speed-kt</prop>
</reference>
<output>
<prop>/controls/engines/engine[0]/throttle</prop>
<prop>/controls/engines/engine[1]/throttle</prop>
<prop>/controls/engines/engine[2]/throttle</prop>
<prop>/controls/engines/engine[3]/throttle</prop>
<prop>/controls/engines/engine[4]/throttle</prop>
<prop>/controls/engines/engine[5]/throttle</prop>
</output>
<config>
<Kp>0.1</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.001</Td>
<!-- derivator time -->
<u_min>0.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Hold speed by varying pitch (Two stage cascading controller) -->
<pid-controller>
<name>Speed hold (vary pitch) Stage #1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/speed</prop>
<value>speed-with-pitch</value>
</enable>
<input>
<prop>/velocities/airspeed-kt</prop>
</input>
<reference>
<prop>/autopilot/settings/target-speed-kt</prop>
</reference>
<output>
<prop>/autopilot/settings/target-pitch-deg</prop>
</output>
<config>
<Kp>.05</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>0.2</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-15.0</u_min><!-- minimum output clamp -->
<u_max>15.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<pid-controller>
<name>Speed hold (vary pitch) Stage #2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/speed</prop>
<value>speed-with-pitch-trim</value>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/target-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.05</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>1.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- ==========================================================-->
<!-- Custom Controllers -->
<!-- ==========================================================-->
<!-- Modified pitch hold for take-offs -->
<pid-controller>
<name>T-O Pitch hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>take-off</value>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/take-off-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.8</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>8.0</Ti>
<!-- integrator time -->
<Td>0.1</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Modified pitch hold for initial climb-out -->
<pid-controller>
<name>Climb Out Pitch hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>climb-out</value>
</enable>
<input>
<prop>/orientation/pitch-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/climb-out-pitch-deg</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.06</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.01</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Auto throttle (Mach Hold)-->
<pid-controller>
<name>Auto Throttle (Mach Hold)</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/speed</prop>
<value>mach-with-throttle</value>
</enable>
<input>
<prop>/velocities/mach</prop>
</input>
<reference>
<prop>/autopilot/settings/target-mach</prop>
</reference>
<output>
<prop>/controls/engines/engine[0]/throttle</prop>
<prop>/controls/engines/engine[1]/throttle</prop>
<prop>/controls/engines/engine[2]/throttle</prop>
<prop>/controls/engines/engine[3]/throttle</prop>
<prop>/controls/engines/engine[4]/throttle</prop>
<prop>/controls/engines/engine[5]/throttle</prop>
</output>
<config>
<Kp>20.0</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>0.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!--
Mach Climb Hold.
Two stage controller based on modified Altitude hold.
Stage #1 sets target rate of climb based on diff between
current mach and target mach.
-->
<pid-controller>
<name>Mach Lock Climb Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>mach-climb</value>
</enable>
<input>
<prop>/autopilot/settings/target-mach</prop>
</input>
<reference>
<prop>/velocities/mach</prop>
</reference>
<output>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</output>
<config>
<Kp>1600.0</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.01</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>40.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>50.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
<pid-controller>
<name>Mach lock Climb Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>mach-climb</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.008</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!--
Modified AGL hold for autopilot landing - 2 stage cascade controller.
Stage #1 sets target rate of climb based on diff between current agl
and target (zero) agl
-->
<pid-controller>
<name>Auto Landing Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>Touch Down</value>
</enable>
<input>
<prop>/position/altitude-agl-ft</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</output>
<config>
<Kp>0.051</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.001</Td>
<!-- derivator time -->
<u_min>-12.0</u_min>
<!-- minimum output clamp -->
<u_max>-0.10</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #2 drives the elevator-trim to achieve the desired climb rate. -->
<pid-controller>
<name>Auto Landing Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>Touch Down</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/internal/target-climb-rate-fps</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.02</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>2.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple Ground Roll Rudder Heading Hold -->
<pid-controller>
<name>Ground Roll Rudder hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/rudder-control</prop>
<value>rudder-hold</value>
</enable>
<input>
<prop>/orientation/heading-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/ground-roll-heading-deg</prop>
</reference>
<output>
<prop>/controls/flight/rudder</prop>
</output>
<config>
<Kp>0.5</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>5.0</Ti>
<!-- integrator time -->
<Td>0.1</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple AoA-by-speed Hold -->
<pid-controller>
<name>AoA-by-speed Hold</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/AoA-lock</prop>
<value>Engaged</value>
</enable>
<input>
<prop>/orientation/alpha-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/AoA-deg</prop>
</reference>
<output>
<prop>/autopilot/settings/target-speed-kt</prop>
</output>
<config>
<Kp>-3.0</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.001</Td>
<!-- derivator time -->
<u_min>90.0</u_min>
<!-- minimum output clamp -->
<u_max>160.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple Flap Control -->
<pid-controller>
<name>Simple Flap Control</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/auto-flap-control</prop>
<value>Engaged</value>
</enable>
<input>
<prop>/orientation/alpha-deg</prop>
</input>
<reference>
<prop>/autopilot/settings/auto-flap-target-deg</prop>
</reference>
<output>
<prop>/controls/flight/flaps</prop>
</output>
<config>
<Kp>-0.1</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>10.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>0</u_min>
<!-- minimum output clamp -->
<u_max>1</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!--
Nav1 hold - Final approach. 2 stage cascade controller.
Stage #1 sets target roll based on heading-needle-deflection.
-->
<pid-controller>
<name>Nav1 Hold Stage 1</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>nav1-hold-fa</value>
</enable>
<input>
<prop>/instrumentation/nav[0]/heading-needle-deflection</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/internal/target-roll-deg</prop>
</output>
<config>
<Kp>-10.0</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>60</Ti>
<!-- integrator time -->
<Td>4.0</Td>
<!-- derivator time -->
<u_min>-6.0</u_min>
<!-- minimum output clamp -->
<u_max>6.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Stage #2 drives the ailerons to achieve the desired roll deg. -->
<pid-controller>
<name>Nav1 Hold Stage 2</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/heading</prop>
<value>nav1-hold-fa</value>
</enable>
<input>
<prop>/orientation/roll-deg</prop>
</input>
<reference>
<prop>/autopilot/internal/target-roll-deg</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.6</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>4.0</Ti>
<!-- integrator time -->
<Td>0.00001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Simple VFPS hold (low-speed) -->
<pid-controller>
<name>VFPS Hold (low-speed)</name>
<debug>false</debug>
<enable>
<prop>/autopilot/locks/altitude</prop>
<value>vfps-hold-ls</value>
</enable>
<input>
<prop>/velocities/vertical-speed-fps</prop>
</input>
<reference>
<prop>/autopilot/settings/target-vfps</prop>
</reference>
<output>
<prop>/controls/flight/elevator-trim</prop>
</output>
<config>
<Kp>-0.018</Kp>
<!-- proportional gain -->
<beta>1.0</beta>
<!-- input value weighing factor -->
<alpha>0.1</alpha>
<!-- low pass filter weighing factor -->
<gamma>0.0</gamma>
<!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>6.0</Ti>
<!-- integrator time -->
<Td>0.001</Td>
<!-- derivator time -->
<u_min>-1.0</u_min>
<!-- minimum output clamp -->
<u_max>1.0</u_max>
<!-- maximum output clamp -->
</config>
</pid-controller>
</PropertyList>
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel