Attached is a patch that adds filters to the 777 autopilot's Heading, LNAV and Altitude

Major bug is LNAV.
The 777 currently doesn't fly on a LNAV/CRS properly.
The aircraft ends up on the correct heading, but with no correction, ie parallel to predicted path and not correcting. The values in the PID are completely different to other observed aircraft, so am unsure what the problem is atmo.

Also this warning message is output below, not sure when it starts but its goes on forever Warning: State::drawQuads(0, 58464) too large handle in remapping to ushort glDrawElements. Warning: State::drawQuads(0, 58468) too large handle in remapping to ushort glDrawElements. Warning: State::drawQuads(0, 58468) too large handle in remapping to ushort glDrawElements. Warning: State::drawQuads(0, 58468) too large handle in remapping to ushort glDrawElements.
regards
pete
<?xml version="1.0"?>


<PropertyList>

  <predict-simple>
     <input>/autopilot/internal/nav1-track-error-deg</input>
     <output>/autopilot/internal/nav1-track-error-lookahead-deg</output>
     <seconds>8.0</seconds>
     <filter-gain>0.0</filter-gain>
  </predict-simple>

  <!-- =============================================================== -->
  <!-- Roll Axis Modes                                                 -->
  <!-- =============================================================== -->

  <pid-controller>
    <name>TO/GA1</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>TO/GA</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.20</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.2</u_min>
      <u_max>0.2</u_max>
    </config>
  </pid-controller>

  <!-- Heading Hold  -->

  <pid-controller>
    <name>Heading Hold 1</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>HDG SEL</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>-5.0</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>
        <prop>instrumentation/afds/settings/bank-min</prop>
        </u_min>
      <u_max>
        <prop>instrumentation/afds/settings/bank-max</prop>
      </u_max>
    </config>
  </pid-controller>

  <filter>
    <name>Heading hold spike filter</name>
    <debug>false</debug>
    <type>noise-spike</type>
    <input>/autopilot/internal/target-roll-deg</input>
    <output>/autopilot/internal/heading-target-roll-deg-filtered</output>
    <max-rate-of-change>8.0</max-rate-of-change>
  </filter>
  
  <pid-controller>
    <name>Heading Hold 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>HDG SEL</value>
      <honor-passive>true</honor-passive>
    </enable>
    <input>
      <prop>/orientation/roll-deg</prop>
    </input>
    <reference>
      <prop>/autopilot/internal/heading-target-roll-deg-filtered</prop>
    </reference>
    <output>
      <prop>/controls/flight/aileron</prop>
    </output>
    <config>
      <Kp>0.021</Kp>
      <beta>1.2</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>1.0</Ti>
      <Td>0.1</Td>
      <u_min>-0.5</u_min>
      <u_max>0.5</u_max>
    </config>
  </pid-controller>

  <pid-controller>
    <name>LNAV FMS</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>LNAV</value>
    </enable>
    <input>
      <prop>instrumentation/afds/settings/lnav-crs</prop>
    </input>
    <reference>
      <value>0.0</value>
    </reference>
    <output>
      <prop>/autopilot/internal/target-roll-deg</prop>
    </output>
    <config>
      <Kp>-2.0</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>
        <prop>instrumentation/afds/settings/bank-min</prop>
        </u_min>
      <u_max>
        <prop>instrumentation/afds/settings/bank-max</prop>
      </u_max>
    </config>
  </pid-controller>

  <filter>
    <name>LNAV spike filter</name>
    <debug>false</debug>
    <type>noise-spike</type>
    <input>/autopilot/internal/target-roll-deg</input>
    <output>/autopilot/internal/lnav-target-roll-deg-filtered</output>
    <max-rate-of-change>10.0</max-rate-of-change>
  </filter>
  

  <pid-controller>
    <name>LNAV 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>LNAV</value>
      <honor-passive>true</honor-passive>
    </enable>
    <input>
      <prop>/orientation/roll-deg</prop>
    </input>
    <reference>
      <prop>/autopilot/internal/lnav-target-roll-deg-filtered</prop>
    </reference>
    <output>
      <prop>/controls/flight/aileron</prop>
    </output>
    <config>
      <Kp>0.03</Kp>
      <beta>1.5</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>1.0</Ti>
      <Td>0.0</Td>
      <u_min>-0.35</u_min>
      <u_max>0.35</u_max>
    </config>
  </pid-controller>

  <pid-controller>
    <name>LOC Hold 1</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>LOC</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>-2.0</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>
        <prop>instrumentation/afds/settings/bank-min</prop>
        </u_min>
      <u_max>
        <prop>instrumentation/afds/settings/bank-max</prop>
      </u_max>
    </config>
  </pid-controller>

  <pid-controller>
    <name>LOC 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/roll-mode</prop>
      <value>LOC</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.05</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>1.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.5</u_min>
      <u_max>0.5</u_max>
    </config>
  </pid-controller>


  <pid-controller>
    <name>Yaw Damper</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/yaw-damper</prop>
      <value>1</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/rudder</prop>
    </output>
    <config>
      <Kp>0.25</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.000000001</Td>
      <u_min>-0.25</u_min>
      <u_max>0.25</u_max>
    </config>
  </pid-controller>


 <!-- =============================================================== -->
 <!-- Pitch Axis Modes                                                -->
 <!-- =============================================================== -->

 <pi-simple-controller>
    <name>TO/GA</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>TO/GA</value>
    </enable>
    <input>
      <prop>instrumentation/altimeter/indicated-altitude-ft</prop>
    </input>
    <reference>
      <value>10000</value>
    </reference>
    <output>
      <prop>/autopilot/internal/target-climb-rate-fps</prop>
    </output>
    <config>
      <Kp>0.3</Kp>
      <Ki>0.0</Ki>
      <u_min>-16.67</u_min>
      <u_max>33.33</u_max>
    </config>
   </pi-simple-controller>

  <pid-controller>
    <name>Altitude Hold (Altimeter based) Stage 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>TO/GA</value>
      <honor-passive>true</honor-passive>
    </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.01</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.2</u_min>
      <u_max>0.2</u_max>
    </config>
  </pid-controller>

  <pi-simple-controller>
    <name>Altitude Stage 1</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>ALT</value>
    </enable>
    <input>
      <prop>instrumentation/altimeter/indicated-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>
      <Ki>0.0</Ki>
      <u_min>-16.67</u_min>
      <u_max>33.33</u_max>
    </config>
  </pi-simple-controller>

  <filter>
    <name>Altitude hold spike filter</name>
    <debug>false</debug>
    <type>noise-spike</type>
    <input>/autopilot/internal/target-climb-rate-fps</input>
    <output>/autopilot/internal/target-climb-rate-fps-filtered</output>
    <max-rate-of-change>10.0</max-rate-of-change>
  </filter>
  
  <pid-controller>
    <name>Altitude Hold (Altimeter based) Stage 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>ALT</value>
      <honor-passive>true</honor-passive>
    </enable>
    <input>
      <prop>/velocities/vertical-speed-fps</prop>
    </input>
    <reference>
      <prop>/autopilot/internal/target-climb-rate-fps-filtered</prop>
    </reference>
    <output>
      <prop>/controls/flight/elevator-trim</prop>
    </output>
    <config>
      <Kp>-0.015</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.2</u_min>
      <u_max>0.2</u_max>
    </config>
  </pid-controller>

  <pi-simple-controller>
    <name>VNAV Altitude Stage 1</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>VNAV ALT</value>
    </enable>
    <input>
      <prop>instrumentation/altimeter/indicated-altitude-ft</prop>
    </input>
    <reference>
      <prop>/instrumentation/afds/settings/vnav-alt</prop>
    </reference>
    <output>
      <prop>/autopilot/internal/target-climb-rate-fps</prop>
    </output>
    <config>
      <Kp>0.3</Kp>
      <Ki>0.0</Ki>
      <u_min>-16.67</u_min>
      <u_max>33.33</u_max>
    </config>
  </pi-simple-controller>

  <pid-controller>
    <name>Altitude Hold (Altimeter based) Stage 2</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>VNAV ALT</value>
      <honor-passive>true</honor-passive>
    </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.01</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.2</u_min>
      <u_max>0.2</u_max>
    </config>
  </pid-controller>

  <pid-controller>
    <name>Glideslop Hold</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>G/S</value>
      <honor-passive>true</honor-passive>
    </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.02</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>10.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.5</u_min>
      <u_max>0.5</u_max>
    </config>
  </pid-controller>

  <!-- vertical speed hold -->
  <pid-controller>
    <name>Vertical Speed Hold</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>V/S</value>
      <honor-passive>true</honor-passive>
    </enable>
    <input>
      <prop>/velocities/vertical-speed-fps</prop>
    </input>
    <reference>
      <prop>/autopilot/settings/vertical-speed-fpm</prop>
      <scale>0.01666666</scale>
    </reference>
    <output>
      <prop>/controls/flight/elevator-trim</prop>
    </output>
    <config>
      <Kp>-0.015</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>1.0</Ti>
      <Td>0.00001</Td>
      <u_min>-0.35</u_min>
      <u_max>0.35</u_max>
    </config>
  </pid-controller>

  <!-- vertical speed hold -->
  <pid-controller>
    <name>Flight Path Hold</name>
    <debug>false</debug>
    <enable>
      <prop>instrumentation/afds/ap-modes/pitch-mode</prop>
      <value>FPA</value>
      <honor-passive>true</honor-passive>
    </enable>
    <input>
      <prop>autopilot/internal/fpa</prop>
    </input>
    <reference>
      <prop>/autopilot/settings/flight-path-angle</prop>
    </reference>
    <output>
      <prop>/controls/flight/elevator-trim</prop>
    </output>
    <config>
      <Kp>-0.15</Kp>
      <beta>1.0</beta>
      <alpha>0.1</alpha>
      <gamma>0.0</gamma>
      <Ti>1.0</Ti>
      <Td>0.0</Td>
      <u_min>-0.25</u_min>
      <u_max>0.25</u_max>
    </config>
  </pid-controller>

 <!-- =============================================================== -->
 <!-- Velocity Modes                                                  -->
 <!-- =============================================================== -->

 <!-- Auto throttle --> 
    <pid-controller>
        <name>Auto Throttle1 ias</name>
        <debug>false</debug>
        <enable>
          <prop>instrumentation/afds/ap-modes/throttle[0]</prop>
          <value>ias</value>
          <honor-passive>true</honor-passive>
        </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>
        </output>
        <config>
            <Kp>0.15</Kp>
            <beta>1.0</beta>
            <alpha>0.1</alpha>
            <gamma>0.0</gamma>
            <Ti>20.0</Ti>
            <Td>0.00001</Td>
            <u_min>0.0</u_min>
            <u_max>1.0</u_max>
        </config>
    </pid-controller>

    <pid-controller>
        <name>Auto Throttle2 ias</name>
        <debug>false</debug>
        <enable>
          <prop>instrumentation/afds/ap-modes/throttle[1]</prop>
          <value>ias</value>
          <honor-passive>true</honor-passive>
        </enable>
        <input>
            <prop>/velocities/airspeed-kt</prop>
        </input>
        <reference>
            <prop>/autopilot/settings/target-speed-kt</prop>
        </reference>
        <output>
            <prop>/controls/engines/engine[1]/throttle</prop>
        </output>
        <config>
            <Kp>0.15</Kp>
            <beta>1.0</beta>
            <alpha>0.1</alpha>
            <gamma>0.0</gamma>
            <Ti>20.0</Ti>
            <Td>0.00001</Td>
            <u_min>0.0</u_min>
            <u_max>1.0</u_max>
        </config>
    </pid-controller>

    <pid-controller>
        <name>Auto Throttle1 mach</name>
        <debug>false</debug>
        <enable>
          <prop>instrumentation/afds/ap-modes/throttle[0]</prop>
          <value>mach</value>
          <honor-passive>true</honor-passive>
        </enable>
        <input>
            <prop>/velocities/mach</prop>
        </input>
        <reference>
            <prop>/autopilot/settings/target-speed-mach</prop>
        </reference>
        <output>
            <prop>/controls/engines/engine[0]/throttle</prop>
        </output>
        <config>
            <Kp>20.0</Kp>
            <beta>1.0</beta>
            <alpha>0.1</alpha>
            <gamma>0.0</gamma>
            <Ti>10.0</Ti>
            <Td>0.00001</Td>
            <u_min>0.0</u_min>
            <u_max>1.0</u_max>
        </config>
    </pid-controller>

    <pid-controller>
        <name>Auto Throttle2 mach</name>
        <debug>false</debug>
        <enable>
          <prop>instrumentation/afds/ap-modes/throttle[1]</prop>
          <value>mach</value>
          <honor-passive>true</honor-passive>
        </enable>
        <input>
            <prop>/velocities/mach</prop>
        </input>
        <reference>
            <prop>/autopilot/settings/target-speed-mach</prop>
        </reference>
        <output>
            <prop>/controls/engines/engine[1]/throttle</prop>
        </output>
        <config>
            <Kp>20.0</Kp>
            <beta>1.0</beta>
            <alpha>0.1</alpha>
            <gamma>0.0</gamma>
            <Ti>10.0</Ti>
            <Td>0.00001</Td>
            <u_min>0.0</u_min>
            <u_max>1.0</u_max>
        </config>
    </pid-controller>


</PropertyList>
? .git
? ap.patch.txt
Index: Systems/777-autopilot.xml
===================================================================
RCS file: 
/var/cvs/FlightGear-0.9/data/Aircraft/777-200/Systems/777-autopilot.xml,v
retrieving revision 1.11
diff -r1.11 777-autopilot.xml
45a46,47
>   <!-- Heading Hold  -->
> 
77a80,88
>   <filter>
>     <name>Heading hold spike filter</name>
>     <debug>false</debug>
>     <type>noise-spike</type>
>     <input>/autopilot/internal/target-roll-deg</input>
>     <output>/autopilot/internal/heading-target-roll-deg-filtered</output>
>     <max-rate-of-change>8.0</max-rate-of-change>
>   </filter>
>   
90c101
<       <prop>/autopilot/internal/target-roll-deg</prop>
---
>       <prop>/autopilot/internal/heading-target-roll-deg-filtered</prop>
96,97c107,108
<       <Kp>1.0</Kp>
<       <beta>1.0</beta>
---
>       <Kp>0.021</Kp>
>       <beta>1.2</beta>
101c112
<       <Td>0.0</Td>
---
>       <Td>0.1</Td>
138a150,159
>   <filter>
>     <name>LNAV spike filter</name>
>     <debug>false</debug>
>     <type>noise-spike</type>
>     <input>/autopilot/internal/target-roll-deg</input>
>     <output>/autopilot/internal/lnav-target-roll-deg-filtered</output>
>     <max-rate-of-change>10.0</max-rate-of-change>
>   </filter>
>   
> 
151c172
<       <prop>/autopilot/internal/target-roll-deg</prop>
---
>       <prop>/autopilot/internal/lnav-target-roll-deg-filtered</prop>
157,158c178,179
<       <Kp>0.5</Kp>
<       <beta>1.0</beta>
---
>       <Kp>0.03</Kp>
>       <beta>1.5</beta>
218c239
<       <Kp>0.25</Kp>
---
>       <Kp>0.05</Kp>
340a362,370
>   <filter>
>     <name>Altitude hold spike filter</name>
>     <debug>false</debug>
>     <type>noise-spike</type>
>     <input>/autopilot/internal/target-climb-rate-fps</input>
>     <output>/autopilot/internal/target-climb-rate-fps-filtered</output>
>     <max-rate-of-change>10.0</max-rate-of-change>
>   </filter>
>   
353c383
<       <prop>/autopilot/internal/target-climb-rate-fps</prop>
---
>       <prop>/autopilot/internal/target-climb-rate-fps-filtered</prop>
359c389
<       <Kp>-0.01</Kp>
---
>       <Kp>-0.015</Kp>
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to