> On Monday 25 Jan 2010, Pete Morgan wrote:
> > I'm having a successful time tuning my first autopilot on the
> > 787.
> >
> > I've managed to get rid of the "jerks" and wobbles, mainly by
> > using a "noise-spike" filter with <max-rate-of-change>. That
> > thanks to Syd Adams for that wonderful tip.
> >
> > All flight level changes, and NAV, heading can be tuned very
> > well, at the current tuning speed of 250 knots.
> >
> > However, at lower and higher speeds, the behaviour changes,
> > sometimes significantly.
> >
> > So it it possible to have two different PID/configs's operating
> > at different airspeeds..
> >
> > eg in psuedo code
> >
> > <config>
> > {if getprop("airspeed") < 150 }
> > <Kp>0.07</Kp><beta>0.5</beta>
> > {else}
> > <Kp>0.06</Kp><beta>0.3</beta>
> > {if}
> > </config>
> >
> > Hope it makes sense..
> > pete
>
> You can vary the proportional gain of the pid controllers by
> specifying a property and default value instead of just sticking a
> fixed value between the <Kp> tags e.g.
>
> <Kp>
> <prop>/autopilot/FCS/settings/example-gain</prop>
> <value>-0.2</value>
> </Kp>
If you run the CVS version (or wait a couple of days for the new release), you
can make use of even more flexible input parameters:
- specify a constant for a constant value
- specify a property name to read the value from a property
- add a <scale> and/or <offset> for linear modifications of the value
- add a <condition> to enable this value and choose from more than one input
Trivial example, constant
<Kp>0.2</Kp>
Trivial example, property
<Kp>/some/property</Kp>
More complex:
if( /foo == 123 )
Kp = /some/property * /some/other/property + 3
else
Kp = 4711
<!-- case f00 == 123 -->
<Kp>
<condition>
<equals>
<property/foo</property>
<value>123</value>
</equals>
</condition>
<property>/some/property</property>
<scale>/some/other/property</scale>
<offset>3.0</offset>
</Kp>
<!-- default, or else branch -->
<Kp>4711</Kp>
Recursion is supported, so something like this works:
<Kp>
<property>/some/property</property>
<offset>
<property>/some/offset/property</property>
<scale>
<condition>
some funky condition here
</condition>
<value>23.0</value>
<condition>
some other condition
</condition>
I'm loosing my track here, but you might see the idea behind.
you can model polynoms like a0+a1*x+a2*x^2(+...) that way.
More examples is in Docs/README.digitalfilters or the HansaJet autopilot (work
in progress).
HTH
Torsten
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel