1
0
Fork 0
Commit graph

369 commits

Author SHA1 Message Date
Torsten Dreyer
54e6757211 Autopilot is more than just an autopilot: Introducing: "property rule"
The autopilot has grown beyond being just an autopilot. It's
components, filters and controllers could be used to set property
values based on complex rules and driven from other property values.
That's why I chose to give it the name "property-rule".
This patch allows to define an arbitrary number of property rules under
a/sim/property-rule[n]/path
using the same syntax as autopilot configurations.
2010-08-18 18:50:07 +02:00
James Turner
ab495d1370 Add --fg-aircraft option, and aircraft dir path list. Partial support in places that load files, for respecting the setting.
Add helper to look for an aircraft branch path in multiple candidate locations.
Update the main subsystems to use the helper, and hence load from any aircraft dir.
2010-07-28 22:03:10 +01:00
Torsten Dreyer
ff408dc540 (Re)allow duplicate names for A/P stages
Don't ignore autpilot stages with duplicate names but rename
the dups to a unique name by adding '_' plus a sequence number.
2010-07-24 17:17:33 +02:00
Torsten Dreyer
c3b9676e22 One more try to fix the Windows build 2010-06-29 17:42:04 +02:00
Torsten Dreyer
598d46529f Fix three bugs in the new autopilot code
- Respect the global inverted flag in the get_output() method
- Check the clock state before processing the static R/S inputs
- Emit debug output only on a state change
2010-06-28 18:20:30 +02:00
Torsten Dreyer
bed15f5315 One more fix for a working windows build. 2010-06-28 13:53:17 +02:00
Torsten Dreyer
f6ea868804 Fix build on Windows
Add missing includes.
Thanks to Alan Teeder
2010-06-27 15:02:59 +02:00
James Turner
a0588272dc Merge branch 'topics/mainloop' into next 2010-06-26 15:30:00 +01:00
James Turner
85be9be1e0 Initial work on FDM shell, and removal of cur_fdm_state 2010-06-26 10:31:22 +01:00
Torsten Dreyer
610777ac53 Move the flipflop implementations into the correct namespace 2010-06-25 21:17:13 +02:00
Torsten Dreyer
0a50c16052 Some more src docs for the A/P implementation. 2010-06-25 21:09:37 +02:00
Torsten Dreyer
47c956b516 Some code documentation added to the A/P flip flop implementation 2010-06-25 11:06:00 +02:00
Torsten Dreyer
d558b52cb6 New autopilot subsystem implementation.
Split the former single-file-implementation in xmlauto.?xx into multiple
files and use some OO techniques. Started with documentation to be used
with doxygen.
2010-06-24 17:09:33 +02:00
Torsten Dreyer
8c15899837 Merge branch 'next' of gitorious.org:fg/flightgear into next 2010-06-01 22:10:00 +02:00
Torsten Dreyer
253b14a1cb Code cleanup, inherit JK, D and T from RS and a bugfix for the logic element
- reuse code
- undeclared inputs default to false where applicable
- remove unused tInput
- JK, D and T FF now inherit from RS with dominant R input, so they all
have a R and a S input to preset the output
- fix the nonfunctional <inverted> element of the logic element
2010-06-01 22:08:42 +02:00
James Turner
be30c2d53b Merge branch 'topics/removeab' into next 2010-05-29 10:37:20 +01:00
James Turner
ad19acf1c6 Remove C++ autobrake code - this can all be done easier in XML now! 2010-05-29 10:36:23 +01:00
Torsten Dreyer
54c964aed5 Respect different behaviour of RS and SR flip flops
No more invalid states here.
According to IEC 61131, RS flip flop have dominant reset and SR have
dominant set. This is now implemented.
2010-05-27 22:22:01 +02:00
James Turner
321bbeb2e8 Allow 'property' as well as 'prop' to be used in XMLauto <enable> blocks. 2010-05-27 15:20:37 +01:00
James Turner
1d0e9d268a Support <expression> in autopilot inputs, as well as property and value. 2010-05-26 19:30:33 +01:00
Torsten Dreyer
9e35d18f2e Add RS, JK, D and T flip flops as components
Flip flops are useful items for data latches and can be used to implement
pushbuttons, glideslope locks etc.
Check http://en.wikipedia.org/wiki/Flip-flop_(electronics)
and http://wiki.flightgear.org/index.php/Autopilot_Configuration_Reference
for details
2010-05-24 11:57:55 +02:00
Tim Moore
4fae1160d4 Merge branch 'torsten/proplist' into next 2010-04-19 12:22:48 +02:00
Tim Moore
3e4a592282 Move using declaration out of header file 2010-04-19 12:22:30 +02:00
Tim Moore
0f9f092412 Merge branch 'torsten/proplist' into next 2010-04-19 10:20:13 +02:00
torsten
a464d1b2b2 use simgear::PropertyList instead of std::vector<SGPropertyNode_ptr> 2010-04-19 10:20:03 +02:00
Tim Moore
98e6b8212a Merge branch 'torsten/auto' 2010-04-19 10:19:42 +02:00
Tim Moore
323fb790e7 Merge branch 'jmt/gps' into next 2010-04-19 09:52:43 +02:00
jmt
8ffa65a821 Route-file saving. 2010-04-19 09:52:32 +02:00
jmt
3270a610f8 Support loading plain-text routes, and stop aggressively using the cruise altitude when loading waypoints. 2010-04-19 09:52:17 +02:00
Tim Moore
ebdeb3eed3 Merge branch 'jmt/gps' into next
Conflicts:
	src/Instrumentation/navradio.cxx
2010-03-28 15:32:59 +02:00
jmt
597df694e3 GPS/route-manager - notify listeners when current waypoint is changed. 2010-03-28 15:26:25 +02:00
Tim Moore
39def8132a Merge branch 'jmt/gpswidget' 2010-03-28 15:15:58 +02:00
Tim Moore
f71c094da2 Merge branch 'torsten/auto' into next 2010-03-20 18:46:27 +01:00
torsten
c55874d70e Fix broken anti windup if the proportional gain runs into the nonlinear area and gets clipped.
Also fix the wrong debug message.
2010-03-20 18:46:19 +01:00
Tim Moore
3973637606 Merge branch 'torsten/auto' into next 2010-03-11 09:01:42 +01:00
torsten
f4f784a514 Added anti windup for the pi-simple-controller 2010-03-11 09:01:25 +01:00
Tim Moore
cfd243bd95 Merge branch 'torsten/auto' into next 2010-03-09 10:38:43 +01:00
torsten
881d49858d Just a tiny change adds a <reference> input to FGDigitalFilters. This is nice to have to calculate differences of signals using gain-filters.
Old calculation was
output = input * gain
and is now
output = (input-reference) * gain
Note: the PI(D) controller use (reference-input) which effectively reverses the sign. Our notation was picked for backwards compatibility to not break the myriads of <filter> elements currently existing.

All the rest is some code cleanup.
2010-03-09 10:38:32 +01:00
Tim Moore
8b03f25e6c Merge branch 'torsten/auto' into next 2010-02-25 23:21:55 +01:00
torsten
90e313a8dd New feature: added <logic> "filters"
"logic filters" use well known conditions to drive output properties. Example for bax = baz & (foo | bar).

 <logic>
    <name>my first logic element</name>
    <input>
      <or>
        <property>foo</property>
        <property>bar</property>
      </or>
      <property>baz</property>
    </input>
    <output>bax</output>
  </logic>
2010-02-25 23:21:41 +01:00
Tim Moore
de79ec4421 Merge branch 'jmt/gpswidget' into next 2010-02-21 22:26:29 +01:00
jmt
4468d785b5 GPS / route-manager: add new custom widget to display the waypoints list.
Supports various new editing features, including dragging to re-order, and
+/- keys to adjust the target altitude for a waypoint. Also displays some
additional information, and will display *even* more once I land airways/
SID/STAR support.
2010-02-21 22:26:14 +01:00
jmt
301f3c5bd6 Quiet: reduce log-level of various things from INFO to DEBUG or BULK, and tune the categories/level of some specific messages.
Part of original commit that only applys to master branch.
2010-02-17 07:44:26 +01:00
Tim Moore
3e0489bd91 Merge branch 'torsten/auto' 2010-02-10 00:41:44 +01:00
Tim Moore
edd83dd7e8 Merge branch 'jmt/units-fix' into maint 2010-02-09 07:28:03 +01:00
Tim Moore
13ec36af42 Merge branch 'jmt/gps' 2010-01-17 10:52:48 +01:00
ehofman
8da2f1a31b Use SGPropertyNode_ptr wherever possible 2010-01-17 00:03:06 +01:00
jmt
10d4799058 GPS: improve reliability (at the expense of some in-development features) for pending release.
- default to an invalid altitude in routes, instead of cruise altitude (temporarily)
- only set an altitude on the autopilot, if valid
- only add departure airport/runway to the route, if not airborne
2010-01-16 16:00:15 +01:00
jmt
2239eb2660 GPS: guard against empty command strings in the route-manager. 2010-01-16 16:00:15 +01:00
Tim Moore
3836abcf4b Merge branches 'jmt/spatial', 'jmt/ref_ptr', 'jmt/navradio' and 'jmt/gps' 2010-01-12 00:09:19 +01:00
torsten
168af9dc1e - added a differential filter
- use /orientation/track-deg instead of computing our own track
- some cosmetic changes
2010-01-05 22:20:42 +01:00
torsten
95e2d62d94 bugfix: don't call the update_helper() for every instance of FGXMLAutopilot. Compute the helper properties only once per FGXMLAutopilotGroup's update() method. Only one AutopilotGroup shall be instantiated, but many Autopilots may exist. 2009-12-30 10:34:11 +01:00
jmt
5cad5aa7da Autopilot: clean up the helpers code (which drives the various /internal/) properties. Fixes various heading modes to work in all aircraft. 2009-12-27 09:34:39 +01:00
torsten
50adab32c1 Ingore unhandled top level elements instead of not loading the autopilot. This (re-)enables usage of <params> at top level and <property alias="../params/foo"/> 2009-12-20 08:37:00 +01:00
torsten
506f6894e4 - introduce some typedefs for SGSharedPtr<>
- add a <period> element to input and output of each filter to support periodical values like headings. See README.digitalfilters for details.
2009-12-18 07:11:10 +01:00
jmt
c453d1a0cc Fix reset crash, thanks to Joe: make findNextWithPartial, and the route-manager, robust about people setting NULL / empty airport idents. 2009-12-12 00:11:34 +01:00
torsten
179a799333 - fix the <condition> element which was no longer working due to an invalid property root
- allow multiple <autopilot> elements within an aircraft. All autopilot live in an individual FGXMLAutopilot subsystem which run within a subsystem group now.
2009-11-29 15:56:13 +01:00
Tim Moore
e503591af4 Merge branch 'jmt/gps'
Conflicts:
	src/Instrumentation/gps.cxx
2009-11-27 06:40:47 +01:00
jmt
7bb785c72c Fix altitude units error loading plans, spotted by Csaba Halasz (Jester). 2009-11-15 01:29:08 +01:00
jmt
6a4e458af9 In the route-manager, track the departure and destination airport objects
* Expose the airport names as properties
* Use tied properties to simplify the code
2009-11-07 09:00:36 +01:00
jmt
8ace3a12ba Better idents for waypoints defined by lon/lat. 2009-10-26 22:12:20 +01:00
jmt
9495c2efdf Route tweaks, especially in-flight activation and deactivation
* Don't require a valid departure and destination airport
* Handle in-air route activation cleanly
* Handle end-of-route situation cleanly
2009-10-22 23:21:25 +02:00
jmt
87141b47a7 Fix route-manager / GPS sequencing interaction; tied properties need help to fire listeners. 2009-10-19 23:56:51 +02:00
jmt
1a05ed6b3d Fix a copy-and-paste bug with destination runways. Caught by Scott Hamilton. 2009-10-19 23:56:51 +02:00
jmt
afb1e7ffe9 Further GPS and route manager behavioural fixes
* When the nav-radio is slaved, calculated radial/target-hdg-deg
 (needed by some autopilot logic)
* Handle editing (including deletion) of route waypoints correctly,
 including deleting the active waypoint
* Add a signal to the route manager when the last wpt is reached, and
 use it in the GPS to revert to OBS mode.
* Change the altitude handling to use the specified cruise altitude
* Fix a bug where autopilot/locks/altitude was treated as a boolean
2009-10-16 11:24:36 +02:00
jmt
a865555fed Route-manager: remove any interaction with the autopilot, or internal sequencing; assume the GPS always handles this (it should, now). Also fix waypoint altitude handling, which was broken. If not altitude is supplied for a waypoint, default to the requested cruise altitude. 2009-10-14 11:44:27 +02:00
jmt
879531ce63 Make the GPS drive the autopilot directly (if configured), also update external course (OBS) source, and init at the current airport. 2009-10-14 00:42:37 +02:00
Tim Moore
21122fa03e Merge branches 'jmt/brakes' and 'jmt/dump' 2009-10-12 11:05:36 +02:00
jmt
110dd605a0 Fix unrealistic-but-convenient direct-drive from the route-manager to the autopilot code. A new boolean config prop, 'drive-autopilot' exists, to disable this behaviour. 2009-10-12 07:56:15 +02:00
jmt
3637482916 Fix various route-manager issues - HUD display of waypoints, some potential divide-by-zeroes when paused or stationary, and Win32 compilation. 2009-10-12 07:54:09 +02:00
jmt
cb6647ff13 Fix an issue which VC90 warns about - using 'this' in initialiser lists. 2009-10-07 08:26:23 +02:00
jmt
d784810430 Land the GPS/route-manager re-write. Many things are better, many other things will be better, some things are no doubt broken. Please be patient and report problems on the mailing list. 2009-10-06 10:44:01 +02:00
jmt
26cd4f92c5 Fix another crash in the autobrake code, with 'aircraft' (eg, ATC) with no weight-on-wheels flag. Thanks to Jacob Burbach for the report. 2009-10-04 02:05:51 +02:00
jmt
739196c912 Refactor the XMLAuto parsing code to no longer warn about every node handled by the base class (FGXMLAutoComponent). As a side effect, issue better warnings when an unrecognised node is encountered. 2009-09-23 23:11:07 +02:00
jmt
4ccef76fc4 Auto-brake enhancements: support for JSBSim aircraft, Airbus-style combined MAX/RTO modes, correct disengage behaviour and more disengage conditions. 2009-09-22 22:51:29 +02:00
jmt
289023da1d Don't crash with UFO FDM, etc, or other FDMs that don't define global props needed - just go into passive mode. 2009-09-21 22:51:40 +02:00
jmt
263ff7d93d Don't look for /velocities/groundspeed-kts during initialisation. 2009-09-21 22:51:40 +02:00
jmt
4d67c69462 A generic, configurable autobrake system. Not fully features yet, but works quite nicely in the 777, including RTO modes and auto-disengage on pilot input. 2009-09-21 22:51:40 +02:00
torsten
5e9864994c fix warnings (order of initialization) 2009-08-23 21:43:09 +02:00
timoore
4cc3084256 SGPropertyNode::Type moves to simgear::props namespace 2009-07-16 12:10:47 +02:00
torsten
786c10a69e fix self initialized of average variable in FGPredictor 2009-07-02 08:59:16 +02:00
fredb
219be77f1e Suppress warnings 2009-07-02 08:59:16 +02:00
torsten
ec0ed21b73 support
<abs>true</abs>
for input elements.
If set to true, the input value is filtered thru fabs() function.
Defaults to false if absent, so there is no impact for existing configurations
2009-05-20 00:00:06 +02:00
mfranz
095c710c0e leak fixes 2009-05-18 12:24:16 +02:00
torsten
b0dd43e022 added new features:
- conditions for InputValues
- multiple InputValues
some more code cleanup
2009-04-01 09:23:55 +02:00
torsten
abcc94d8ee - created a class for InputValues
- moved common code into the base class FGXMLAutoComponent
- adapted the documentation
2009-04-01 09:23:54 +02:00
mfranz
b00e1c10e0 Merge branch 'master' of ../.fg.osg 2009-03-18 08:00:08 +01:00
torsten
78e45727d0 Added support for <condition> elements under <enable> elements.
The old <prop> and <value> elements are still supported but ignored, if a <condition> element exists.
Also for the DigitalFilter
2009-03-05 10:52:03 +01:00
torsten
3f0e9b0161 Added support for <condition> elements under <enable> elements.
The old <prop> and <value> elements are still supported but ignored, if a <condition> element exists.
2009-03-05 10:52:02 +01:00
mfranz
58a2927aaf segfault-- 2009-02-02 00:56:25 +01:00
fredb
d4168d161e James Turner :
- a refactoring of the route manager to reduce indentation and duplication
	- created a helper method to generate the ETA strings
	- created a helper to update target_altitude and altitude_set when the active wp0 changes
	- used early returns to make update() easier to follow
	- removed spurious includes in both header and source file
2008-12-04 08:29:36 +00:00
fredb
f3b110e565 James Turner:
Attached patch updates the route-manager to use FGPositioned to search
for waypoints, instead of a manual airport / fix / navaid search. This
is good because it's now using the 'strictly closest' match, rather
than arbitrarily picking a distant fix over a nearby navaid. In my
case, the TLA VOR is significant to several EGPH procedures, but also
happens to be the ident of a fix a long, long way away.

Also updates the FGPositioned class to stop using Point3D, partly
because it's deprecated and partly because I had misunderstood the
interface and was using it wrong. For now, all FGPositioned distance
checks use SGGeodesy::inverse, which is accurate but inefficient. Once
FGPositioned queries are used for something on a hot path, I'll
probably store the cartesian position as well as the geodetic, to make
these checks fast.
2008-12-03 20:03:46 +00:00
ehofman
3b486e1aee James Turner:
Here's part 2 - converting FGFix (the simplest one) to be both heap-based and inherit FGPositioned. One minor benefit from this is replacing some dangerous code in FGFixList which used to return the address of an iterator member ('&it->second'). To keep the diff a sensible size, I'm not updating the callers to use the richer FGPositioned types - i.e replacing separate lat/lon handling with SGGeod. I will make those cleanups, but in future patches.
2008-09-10 08:54:49 +00:00
ehofman
14885374de header cleanups 2008-07-31 12:04:32 +00:00
ehofman
667e64e1eb - remove the SG_GLxxxx_H #defines, since OSG provides its own versions
- this exposed a bizarre issue on Mac where dragging in <AGL/agl.h> in
   extensions.hxx was pulling in all of Carbon to the global namespace
   - very scary. As a result, I now need to explicitly include CoreFoundation
   in fg_init.cxx.
 - change SG_USING_STD(x) to using std::x
2008-07-27 16:25:13 +00:00
ehofman
d9bfd5a425 This should apply, and everything should build cleanly, in isolation from the
SimGear change. It changes all the SG_xxxx to be the 'real' includes, and gets
rid of many #ifdef SG_HAVE_STD_INCLUDES. As an added bonus, rather than
replacing 'SG_USING_NAMESPACE(std)' with 'using namespace std', I just fixed
the small number of places to use std:: explicitly. So we're no longer polluting
the global namespace with the entire contents of std, in many cases.

There is one more 'mechanical' change to come - getting rid of SG_USING_STD(X),
but I want to keep that separate from everything else. (There's another
mechnical change, replacing <math.h> with <cmath> and so on *everywhere*, but
one step at a time)
2008-07-25 18:38:29 +00:00
mfranz
b27f73f4f4 make route manager input case insensitive 2008-06-06 07:49:41 +00:00
timoore
a251fd35cb Include <iostream> and using declarations as needed.
SimGear no longer includes iostream and avoids using declarations in
header files, so various fixups are needed.
2008-06-02 21:07:35 +00:00
mfranz
3842fa0edc Csaba "Jester" HALASZ:
Attached patch adds support for multiple FIXes with the same name.
Applies to both branches.
New functionality is in query_and_offset, which now returns the FIX
closest to the passed in location.
Updated route manager to take advantage of this.

Otherwise, query functions return an unspecified member from the set
of identically named FIXes. (This was previously the one occurring
last in the database file, but I don't think anybody counted on that.)
2008-04-28 11:26:02 +00:00
durk
3bc15df56b Syd Adams: Enable bank limit controls with the autopilot. 2008-04-06 06:49:36 +00:00
timoore
d28b509e5f autopilot filter deque fixes
Thanks to Vivian Meazza for debugging this. The output deque for
FGDigitalFilter was not being kept long enough for the
doubleExponential filter. Reads from output[1] could cause a crash.
2008-03-24 22:46:47 +00:00
mfranz
7d5c5e4aaf Roy Vegard OVESEN & Lee ELLIOT:
Lee has added two new filter types, "gain" and "reciprocal". These filters can
read their gain factor from a property. In the process we also added minimum
and maximum output clamps that are applicable to all filters.

I added the ability to configure adaptive controllers i.e. the controller gain
can be tied to a property, so that it can be changed at runtime. This
requires a change in the xml structure of the autopilot configuration file:

<Kp>
  <prop>/autopilot/KAP140/settings/ROL/Kp</prop>
  <value>0.10</value>
</Kp>        <!-- proportional gain -->

The old method <Kp>0.10</Kp> still works so as to not break all existing
autopilots, but it will output a warning to use the new method.
2008-02-17 09:44:03 +00:00
curt
15cd4284fb Roy Ovesen:
Please find attatched a new version of xmlauto.cxx.

Remove the call to build() in reinit(). This prevents build() from being
called twice when Reload Autopilot is selected from the Debug menu.

I've also added the ability to define an enabled property for the filters.
It's used like the PID controllers. If there is no enabled tag then the
filter defaults to enabled so that nothing should get broken by this change.

This ability can be used to create a filter between the output of a PID
controller and the property that it controls (a control surface). By putting
a noise spike filter between the output of a controller and the control
surface that it controls, we can simulate the limited movement rate that is
inherent in autopilot servos.
2008-02-04 20:01:20 +00:00
timoore
1b439f8501 Memory leak fixes from Till Busch 2008-01-19 18:06:05 +00:00
mfranz
80467ed6d0 Harald JOHNSEN: initialize elapsedTime 2007-07-09 17:15:11 +00:00
curt
50c7a31de8 Fix a long standing bug in a code path that is probably executed very rarely. 2007-06-26 21:29:59 +00:00
curt
cf325ce088 Fix a small typo. 2006-07-12 15:11:47 +00:00
curt
bcd9b071c5 Create a "passive" mode for the autopilot. This is analogous to running the
autopilot with the servos off.  In otherwords, the computer goes through the
motions of computing the desired behavior (pitch or roll) but doesn't actually
drive the outputs.  This is potentially useful when implimenting a flight
director.
2006-06-24 00:52:20 +00:00
mfranz
e48967cb1d fix another crash on exit by finally converting the rest of unguarded
SGPropertyNode to guarded ones. This is also done for JSBSim/JSBSim.hxx,
for which JSB had given explicit permission a while ago. I postponed that
back then, but now is the time.
2006-06-11 10:21:10 +00:00
mfranz
7ddc71dd13 fix data type (no wonder that this crashes on 64 bit systems :-) 2006-05-14 11:14:49 +00:00
mfranz
6c1be4fffb - remove listener first in the destructor
- make function arg const again
2006-05-12 15:37:25 +00:00
mfranz
244547eb4c only lock AP automatically if above /autopilot/route-manager/min-lock-altitude-agl-ft
The ufo sets this to a very low value, "serious" aircraft (which don't want this
unrealistic automatism at all) set it to a very high value, and those that don't
care ... don't need to care.
2006-05-12 09:36:21 +00:00
mfranz
ef339945fd only activate heading & altitude lock when in air (and even then it should
probably be configurable?).
2006-05-11 10:01:47 +00:00
mfranz
cbddd130ec also set new target altitude if wp is appended to empty list 2006-05-10 21:46:27 +00:00
mfranz
2ff16ca93f - set target altitude if a new WP becomes active through deleting/inserting
- cosmetics
2006-05-10 09:40:08 +00:00
mfranz
43dce6a2be remove wrong comment; should be obvious, anyway 2006-05-09 21:08:01 +00:00
mfranz
641f0a8e9b - implement target altitude handling 2006-05-09 21:01:01 +00:00
mfranz
264edc470d ignore spaces after the colon in "@insert 3: ebase" 2006-05-08 14:53:23 +00:00
mfranz
f9959b7f2c - move auto_gui's addWaypoint to routemgr.cxx
- add command interface property (monitored by listener)
- remove all traces of auto_gui.[ch]xx
- remove some trailing spaces, fix indentation
2006-05-08 14:35:29 +00:00
mfranz
b64e10fceb use guarded pointers 2006-04-27 15:49:47 +00:00
mfranz
3b4e532372 working on the termination of the last hardcoded dialogs in Autopilot/auto_gui.cxx:
- move fg_init/parseWaypoints() to route_mgr/postinit()
- don't delete initial string list to keep it available for subsystem reinit
2006-04-27 15:30:42 +00:00
daveluff
00ba5a853e Recent SimGear changes seem to require more additions of config.h to FG in order to compile on Cygwin 2006-02-22 21:04:47 +00:00
mfranz
c9813d1b5d new FSF address 2006-02-21 01:16:04 +00:00
mfranz
940d1aa8df typo 2006-02-04 01:03:41 +00:00
ehofman
4be621fbe9 Durk Talsma, Olaf Flebbe & Mathias Frhlich:
Split up simple.cxx
2005-12-29 13:58:21 +00:00
mfranz
47f90a7976 backing out all changes to non-depreciated symbols/functions: plib's cvs
isn't tagged, so we can't easily say what was added after the last stable
release
2005-11-06 14:22:02 +00:00
mfranz
533201c7a0 replace depreciated plib symbols with their new forms 2005-11-04 22:20:35 +00:00
ehofman
029dda3297 In the process of changing, adding and removing files the last few years
there was the situation where four directories contained jst two files,
of which three directories were aircraft related, and one directory contained
test code from Curt that might be better of in SimGear anyhow.

This is just a patch to move a bunch of files to new locations. In case of
local changes to any of them you can do the following:

move replay.[ch]xx from src/Replay to src/Aircraft
move control.[ch]xx from src/Control to src/Aircraft
move ssgEntityArray.[ch]xx from src/Objects to simgear/screen

In addition it has been decided only to use .[ch]xx files in all directories
unless it's contained within an FDM specific directory, in which case the
author is free to do whatever (s)he wants.

In this repspect the following files have been renamed in src/Multiplayer:

tiny_xdr.[ch]pp has become tiny_xdr.[ch]xx
multiplaymgr.[ch]pp has become multiplaymgr.[ch]xx
2005-11-01 13:41:49 +00:00
ehofman
62a359cc4a Alex Romosan:
* Use "const string&" rather than "string" in function calls when appropriate.
* Use "const Point3D&" instead of "Pint3D" in function calls when appropriate.
* Improved course calculation in calc_gc_course_dist()
* Safer thread handling code.

Vassilii Khachaturov:

Dont use "const Point3D&" for return types unless you're absolutely sure.

Erik Hofman:

* Use SGD_(2)PI(_[24]) as defined in simgear/constants.h rather than
  calculating it by hand every time.
2005-10-25 13:49:55 +00:00
ehofman
3188b395c8 Vassilii Khachaturov:
I found that all the current users of the companion
function, findByFreq() actually did assume radians despite the misleading
comment in the .hxx and .cxx saying it's degrees. I've fixed the
comment now, and no longer change the Navaids code. The new Navaids user
in NewWaypoint() is now passing radians to the findByIdent().

Note that along with fixing the comments in the navlist.hxx, I removed
an obsolete method findByLoc() declaration (there is no definition
anywhere).
2005-10-22 13:37:13 +00:00
ehofman
111eff7ae0 Roy Vegard Ovesen:
I've prepared a patch as suggested by Hans-Georg Wunder and Jeff McBride.

In addition I've removed the ability to completely leave out the integral
action by setting Ti to zero. The velocity form of the PID algorithm _needs_
the integral action.
2005-09-25 07:49:18 +00:00
curt
e60223a952 Lee Elliot:
>> Hello List,
>>
>> I think there's a small bug in the moving-average filter in
>> xmlauto.cxx
>>
>> I noticed that the output from it was always out a bit and
>> checking with a calculator showed that it seemed to be dividing
>> by the number of samples + 1 instead of just the number of
>> samples.
>>
>> subtracting 1 from 'samples' in line 702 seems to fix the problem
>> and as 'samples' doesn't seem to be used elsewhere I think it's
>> safe.  Possibly implies that the number of samples may be one
>> less than specified but I'm not familiar enough with c++ to spot
>> it.


Roy Ovesen:

You are right. I would suggest resizing input[] to (samples + 1) instead.
Change lines 654 and 661 to:

input.resize(samples + 1, 0.0);

That way we average over the number of samples as configured.
2005-09-16 20:21:15 +00:00
ehofman
5bc15d7a69 Durk Talsma:
I just heard from John Wojnaroski that you and he are going to work on getting
a flightgear demo machine up for the linux expo thursday and Friday. John
indicated that he would very much like to get a CVS version with the new
traffic code up and running before the expo.
2005-02-10 09:01:51 +00:00
curt
ec50bcfb5a Roy Ovesen:
I've added some features to the PID controller:

Ability to set desired sampling interval in seconds. Use <Ts> under <config>
to set the desired sampling interval of the PID controller.

Example:
<config>
     <Ts>0.1</Ts>        <!-- desired sampling interval -->
     <Kp>-0.05</Kp>        <!-- proportional gain -->
     <beta>1.0</beta>    <!-- input value weighing factor -->
     ...
     ...
</config>

Ts defaults to 0.0, so if you don't set it it samples at the highest possible
frequency.


Add an offset to the input variables (input and reference).
Example:
    <reference>
      <prop>/controls/flight/elevator</prop>
      <scale>-1.5</scale>
      <offset>1.0</offset>
    </reference>

Note that <scale> has higher precedence than <offset>, regardless of the order
that they appear in the config file.
2005-02-01 21:00:24 +00:00
ehofman
4d8da078a4 Roy Vegard Ovesen:
I guess it is much more efficient to compare integers than comparing long strings like "double-exponential" every frame.
2005-01-20 09:55:47 +00:00
curt
222446df29 Replace the data/Airports/basic.dat.gz and data/Airports/runways.dat.gz with
a single apt.dat.gz file which is in the native X-Plane format.

To do this I wrote a front end loader than builds the airport and runway
list.  Some of the changes I needed to make had a cascading effect, so there
are minor naming changes scattered throughout the code.
2004-12-22 23:57:07 +00:00
curt
c6f0d87a26 A few more radios -> instrumentation name changes thanks to Melchior for
catching these.
2004-12-04 21:06:57 +00:00
curt
d05121ef46 Fix my mailing address by replacing it with my web page. 2004-11-19 22:10:41 +00:00
ehofman
fa7f2468c2 Roy Vegard Ovesen:
I've added some digital filters to the autopilot. They are all low-pass
filters that filter away high frequency signals/noise. There are 4 different
filters:

1. Exponential - The algorithm is essentially the same as the one used in the
   fgGetLowPass() function.

2. Double exponential - Two exponential filters in series. This filter has a
   "steeper" frequency response curve. It filters "better" than the single
   exponential.

3. Moving average - Averages a number of inputs.

4. Noise spike - limits the amount that the output value can change from one
   sample to the next.

Filters 1 and 2 are characterised by it's filter-time in seconds. For filter 3
you have to set the number of input samples to average over. For filter 4 you
set the maximum allowed rate of change as [1/s]. Since the sampling interval
(dt) isn't constant we have to calculate the maximum allowed change for every
update.

Example of a double exponential filter with filter time 0.1 seconds, that is
1/0.1 = 10 Hz.

  <filter>
    <name>pressure-rate-filter</name>
    <debug>true</debug>
    <type>double-exponential</type>
    <input>/autopilot/internal/pressure-rate</input>
    <output>/autopilot/internal/filtered-pressure-rate</output>
    <filter-time>0.1</filter-time>
  </filter>

This would go in the autopilot configuration file.

I've also removed the filtering of the "pressure-rate" helper value, use the
new filters if you want to filter it!  ;-)
2004-10-14 09:19:44 +00:00
ehofman
9e315c8797 Move depreciated files to the bitbucket. 2004-09-09 08:29:51 +00:00
curt
78e6d35998 Move navaids and fixes out of "global" name space into the FGGlobals
structure.
2004-05-26 18:15:19 +00:00
curt
088a7a83b4 Add a pressure rate helper function for Roy's KAP140 autopilot model. 2004-04-12 19:17:47 +00:00
curt
2acdd02879 Clean up various compiler warnings that have crept into the code. This
by no means get's them all, but it's a start.
2004-04-01 15:27:53 +00:00
curt
0857271582 Jim Wilson:
This patch adds the ability to do a simple scaling of input without having to
add hardcoded helpers.  Example:

    <reference>
      <prop>/autopilot/settings/vertical-speed-fpm</prop>
      <scale>0.01667</scale>
    </reference>
2004-03-21 21:05:06 +00:00
curt
2845a75753 Jim Wilson:
Add FGPredictor class to xmlauto.  Add support for horizontal navigation based
on flight track as opposed to heading.  Add crosstrack-error support to nav.
Simplify error adjust calculation for horizontal nav (better interception).
Fixed potential divide by zero that was producing nan issues in the xmlauto
code.
2004-03-19 03:23:28 +00:00
curt
ea39c09192 Make sure delta_u_n and u_n are always explicitely initialized. 2004-03-15 19:15:40 +00:00
curt
a5f9927727 Roy Vegard Ovesen:
I've done some changes to xmlauto.cxx.

Only calculate the derivate filtering if derivate time Td is greater than
zero. This means that one can set Td=0.0 in the xml file to completely remove
the derivate action. (Setting Td to zero in the current version would lead to
a division by zero and crash.)

Setting the integrator time Ti to zero doesn't make sense, right! I've
modified so that setting Ti to zero results in the integral action being
completely removed.
2004-03-15 19:09:44 +00:00
curt
71c83c4de7 Initialize autopilot output to start at current manual control position
to [hopefully] make autopilot activation less "dramatic."
2004-02-12 22:35:29 +00:00
curt
bffca78da4 Add my old ultra-simplistic PI controller. The fancy PID controller doesn't
seem to be fully deterministic in P-only mode.  This old simple controller
does what I expect, so it's good for calulating stage #1's of multi-stage
controllers.
2004-02-05 17:11:47 +00:00
curt
266534259d Add vertical speed fpm conversion since the fdm provides this value in
fps.
2004-02-04 20:16:30 +00:00