1
0
Fork 0

Replay upgrade, part III: New flight recorder configuration files.

Provide templates for various aircraft components or complete aircraft
types. Better to have this stuff available/adaptable than hard-coded
somewhere inside fgfs.
This commit is contained in:
ThorstenB 2011-10-01 23:16:48 +02:00
parent 0543d8fead
commit bde90daa71
19 changed files with 1214 additions and 0 deletions

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- main controls -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/controls/flight/aileron</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/elevator</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/rudder</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/aileron-trim</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/elevator-trim</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/rudder-trim</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/flaps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/speedbrake</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/flight/spoilers</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/gear/brake-left</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/gear/brake-right</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/gear/copilot-brake-left</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/gear/copilot-brake-right</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/gear/brake-parking</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/gear/gear-down</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/switches/master-avionics</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- jet engine -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/starter</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/throttle</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/condition</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/running</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/cranking</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/n1</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/n2</property>
</signal>
<signal>
<type>float</type><property type="string">/engines/engine[%i]/thrust-lbs</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/egt-degf</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/epr</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/oil-pressure-psi</property> <!-- JSBSim -->
</signal>
</PropertyList>

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- propeller/piston engine -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/starter</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/master-bat</property> <!-- YASim -->
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/master-alt</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/throttle</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/mixture</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/propeller-pitch</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/condition</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/magnetos</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/running</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/cranking</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/fuel-flow-gph</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/fuel-px-psi</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/egt-degf</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/cht-degf</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/mp-osi</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/tit</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/oil-temperature-degf</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/oil-pressure-psi</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- turboprop engine -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/systems/electrical/outputs/fuel-pump[%i]</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/starter</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/master-bat</property> <!-- YASim -->
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/master-alt</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/throttle</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/mixture</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/propeller-pitch</property>
</signal>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine[%i]/condition</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/running</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/engines/engine[%i]/cranking</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/rpm</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/fuel-flow-gph</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/fuel-px-psi</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/egt-degf</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/cht-degf</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/mp-osi</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/tit</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/oil-temperature-degf</property> <!-- YASim -->
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/oil-pressure-psi</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/n1</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/n2</property>
</signal>
<signal>
<type>float</type><property type="string">/engines/engine[%i]/thrust-lbs</property>
</signal>
<signal>
<type>float</type>
<property type="string">/engines/engine[%i]/epr</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- environment -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/environment/wind-speed-kt</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/wind-from-heading-deg</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/turbulence/magnitude-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/temperature-degc</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/pressure-sea-level-inhg</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/magnetic-variation-deg</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/hazards/icing/wing</property>
</signal>
<signal>
<type>float</type>
<property type="string">/environment/visibility-m</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- engine fault properties -->
<PropertyList>
<signal>
<type>bool</type>
<property type="string">/controls/flight/flaps-serviceable</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/serviceable</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/left-magneto-serviceable</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/right-magneto-serviceable</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/spark-plugs-serviceable</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/oil-pressure-status</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/engines/engine[%i]/faults/fuel-pump-serviceable</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- fixed gear properties -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/gear/gear[%i]/steering-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/gear/gear[%i]/compression-norm</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/gear/gear[%i]/wow</property>
</signal>
<signal>
<type>float</type>
<property type="string">/gear/gear[%i]/rollspeed-ms</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- retractable gear properties -->
<PropertyList>
<!-- include fixed gear properties -->
<signals include="gear-fixed.xml"/>
<!-- add position of retractable gear -->
<signal>
<type>float</type>
<property type="string">/gear/gear[%i]/position-norm</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- position and aero parameters -->
<PropertyList>
<signal>
<type>double</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/position/longitude-deg</property>
</signal>
<signal>
<type>double</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/position/latitude-deg</property>
</signal>
<signal>
<type>double</type>
<property type="string">/position/altitude-ft</property>
</signal>
<signal>
<type>double</type>
<property type="string">/position/altitude-agl-ft</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/orientation/roll-deg</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/orientation/pitch-deg</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/orientation/heading-deg</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/orientation/alpha-deg</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-rad</interpolation>
<property type="string">/orientation/side-slip-rad</property>
</signal>
<signal>
<type>float</type>
<interpolation type="string">angular-deg</interpolation>
<property type="string">/orientation/beta-deg</property>
</signal>
<signal>
<type>float</type>
<property type="string">/orientation/roll-rate-degps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/orientation/pitch-rate-degps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/orientation/yaw-rate-degps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/airspeed-kt</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/vertical-speed-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/speed-north-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/speed-east-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/speed-down-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/vBody-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/uBody-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/velocities/wBody-fps</property>
</signal>
<signal>
<type>float</type>
<property type="string">/accelerations/pilot/x-accel-fps_sec</property>
</signal>
<signal>
<type>float</type>
<property type="string">/accelerations/pilot/y-accel-fps_sec</property>
</signal>
<signal>
<type>float</type>
<property type="string">/accelerations/pilot/z-accel-fps_sec</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/sim/alarms/stall-warning</property>
</signal>
<signal>
<type>float</type>
<property type="string">/instrumentation/slip-skid-ball/indicated-slip-skid</property>
</signal>
<signal>
<type>float</type>
<property type="string">/position/ground-elev-m</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- flightrecorder properties for a single rotor (YASim).
Usage
<signals include="Aircraft/Generic/flight-recorder/components/rotor.xml">
<property-path type="string">/rotor/main</property-path>
</signals>
-->
<PropertyList>
<signal>
<type>float</type>
<property type="string">roll-deg</property>
<interpolation type="string">angular-deg</interpolation>
</signal>
<signal>
<type>float</type>
<property type="string">rpm</property>
</signal>
<signal>
<type>float</type>
<property type="string">stall</property>
</signal>
<signal>
<type>float</type>
<property type="string">torque</property>
</signal>
<signal>
<type>float</type>
<property type="string">yaw-deg</property>
<interpolation type="string">angular-deg</interpolation>
</signal>
<signal>
<type>float</type>
<property type="string">cone-deg</property>
<interpolation type="string">angular-deg</interpolation>
</signal>
</PropertyList>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- surface positions -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/surface-positions/elevator-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/elevator-trim-tab-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/flap-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/left-aileron-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/right-aileron-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/rudder-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/speedbrake-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/spoilers-pos-norm</property>
</signal>
<signal>
<type>float</type>
<property type="string">/surface-positions/nose-wheel-pos-norm</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- flight recorder configuration -->
<!-- tanks -->
<PropertyList>
<signal>
<type>float</type>
<property type="string">/consumables/fuel/tank[%i]/level-gal_us</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/fuel/tank[%i]/fuel_selector</property>
</signal>
</PropertyList>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration for gliders (no engines/no tanks/single gear).
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder for Gliders (no engines/no tanks/single non-retractable gear)</name>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/gear-fixed.xml">
<count type="int">1</count>
</signals>
<!-- "engine throttle" (usually used as glider's speed brake) -->
<signals>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine/throttle</property>
</signal>
</signals>
</PropertyList>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration for helicopters: main + tail rotor, 2 tanks.
Tested with YASim helicopters.
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder for Helicopters</name>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
<count type="int">2</count>
</signals>
<!-- main rotor -->
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
<prefix type="string">/rotors/main</prefix>
</signals>
<!-- tail rotor -->
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
<prefix type="string">/rotors/tail</prefix>
</signals>
<!-- simple single engine properties -->
<signals>
<signal>
<type>float</type>
<property type="string">/controls/engines/engine/throttle</property>
</signal>
</signals>
</PropertyList>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration for jets (2 jet engines/4 tanks/3 retractable gear).
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder for Jets (2 jet engines/4 tanks/3 retractable gear)</name>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/engine-jet.xml">
<count type="int">2</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
<count type="int">2</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
<count type="int">4</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
<count type="int">3</count>
</signals>
</PropertyList>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration: 1 propellers/engine, 2 tanks, 3 fixed gear.
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder (1 piston engine/1 propeller/4 tanks/3 fixed gear)</name>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/engine-piston-prop.xml">
<count type="int">1</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
<count type="int">1</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
<count type="int">2</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/gear-fixed.xml">
<count type="int">3</count>
</signals>
</PropertyList>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration: 4 propellers/engines, 4 tanks, 3 retractable gear.
Records same properties as hard-coded recorder for <=FG2.4.0
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder (4 piston engines/4 propellers/4 tanks/3 retractable gear)</name>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/engine-piston-prop.xml">
<count type="int">4</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
<count type="int">4</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
<count type="int">4</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
<count type="int">3</count>
</signals>
</PropertyList>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generic flight recorder configuration: 2 turboprop engines, 4 tanks, 3 retractable gear.
Note: The generic configurations are provided as an example and for convenience only.
No need to use a generic configuration. You can copy the settings below to your aircraft's
flight recorder configuration and include a better combination of recorder components, if
none of the pre-defined configurations fits your aircraft.
-->
<PropertyList>
<name type="string">Generic Flight Recorder (2 turboprop engines/2 propellers/4 tanks/3 retractable gear)</name>
<signals include="/Aircraft/Generic/flightrecorder/components/environment.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/position.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/controls.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/surfaces.xml"/>
<signals include="/Aircraft/Generic/flightrecorder/components/engine-turboprop.xml">
<count type="int">2</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/faults-engines.xml">
<count type="int">2</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/tanks.xml">
<count type="int">4</count>
</signals>
<signals include="/Aircraft/Generic/flightrecorder/components/gear-retractable.xml">
<count type="int">3</count>
</signals>
</PropertyList>

292
Docs/README.flightrecorder Normal file
View file

@ -0,0 +1,292 @@
FlightGear Flight Recorder Mini-HOWTO
Thorsten Brehm
Started in August 2011
Last revised: 2011-09-26
FlightGear provides a customizable flight recorder capable of capturing
any selection of properties described via XML configuration files.
The recorder is currently used for the replay system.
Feature Brief
-------------
* Generic recording system, adaptable to any aircraft/data, provided that
data is accessible via the property tree. No hard-coded selections or
assumptions on properties to be recorded.
* Configuration read from XML files or the property tree itself.
* Interpolation method configurable per recorded/replayed signal.
* Adaptable recording resolution per signal.
* Multiple configurations supported.
Quick Start: Basic Configuration
--------------------------------
To configure and adapt the flight recorder, add a "/sim/flight-recorder"
section to your aircraft -set.xml file.
Example:
<sim>
<!-- ... -->
<flight-recorder>
<replay-config type="int">0</replay-config>
<config n="0" include="/Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml">
<name type="string">My Aircraft's Flight Recorder</name>
<!-- Custom properties -->
<signal>
<type>float</type>
<property type="string">/controls/gear/nosegear-steering-cmd-norm</property>
<interpolation>linear</interpolation>
</signal>
<!-- More custom signals here -->
</config>
</flight-recorder>
<!-- ... -->
</sim>
Default type for each signal is "float". Default "interpolation" method
is "linear" (for float/double). Default values may be omitted. See
configuration details below.
Generic Configuration Files
---------------------------
Select one of the default configuration files to specify the basic
properties to be recorded. It's not recommended to specify all
properties to be recorded individually.
The following generic files are provided:
* /Aircraft/Generic/flightrecorder/generic-piston-propeller-4.xml
Matches propeller aircraft with 4 piston engines, 4 tanks,
3 retractable gear.
It is the same configuration that was hard-coded for the replay system
up to FlightGear 2.4.0. To provide backward compatibility this
configuration is loaded by default, unless an aircraft provides a
specific flight recorder configuration.
* /Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml
Matches propeller aircraft with 1 piston engines, 2 tanks, 3 fixed
gear.
* /Aircraft/Generic/flightrecorder/generic-turboprop-2.xml
Matches turboprop aircraft with 2 turbines/propellers, 4 tanks,
3 retractable gear.
* /Aircraft/Generic/flightrecorder/generic-jet.xml
Matches jet aircraft with 2 jet engines, 4 tanks.
* /Aircraft/Generic/flightrecorder/generic-glider.xml
Matches gliders (no engines, no tanks, single fixed gear).
* /Aircraft/Generic/flightrecorder/generic-helicopter.xml
Matches helicopters with main and tail rotor (tested with YASim).
If none of the generic files matches your aircraft, simply use a
configuration which covers more than you need. Alternatively, copy the
contents of one of these generic files to your aircraft, and adapt as
needed (see below).
FDM experts are welcome to add more generic configuration files to
/Aircraft/Generic/flightrecorder - such as YASim-/JSBSim-specific
configurations, and configurations for other types of aircraft
(balloons, airships, ...).
Generic Components
-----------------
The generic configuration files in turn include a set of generic
components. If you copy the contents of a generic file to your aircraft,
you can adapt the components to your needs. See examples.
It is not recommended to copy the contents of the _component_ files to
an aircraft though (causes too much hassle and dependencies).
Engine Selection:
* /Aircraft/Generic/flightrecorder/components/engine-jet.xml
Records properties of a single jet engine.
For multiple jet engines, use "count". Example for 4 jets:
<signals include="/Aircraft/Generic/flightrecorder/components/engine-jet.xml">
<count>4</count>
</signals>
* /Aircraft/Generic/flightrecorder/components/engine-piston.xml
Records properties of a single piston engine and propeller.
For multiple piston engines, use "count" (see "jet" example).
* /Aircraft/Generic/flightrecorder/components/rotor.xml
Records properties of a single helicopter rotor (tested with YASim).
To use this, provide the base property path to the rotor as "prefix".
Example recording the rotor below "/rotors/main":
<signals include="/Aircraft/Generic/flightrecorder/components/rotor.xml">
<prefix type="string">/rotors/main</prefix>
</signals>
Gear Selection:
* /Aircraft/Generic/flightrecorder/components/gear-fixed.xml
Records properties of a single non-retractable gear.
For multiple fixed gear, use "count" (see "jet" example).
* /Aircraft/Generic/flightrecorder/components/gear-retractable.xml
Records properties of a single retractable gear.
For multiple retractable gear, use "count" (see "jet" example).
Tanks:
* /Aircraft/Generic/flightrecorder/components/tanks.xml
Records properties of a single fuel tank.
For multiple fuel tanks, use "count" (see "jet" example).
Other:
* /Aircraft/Generic/flightrecorder/components/surfaces.xml
Records properties of flight control surfaces. Include this
for aircraft (with wings). Not useful for helicopters,
balloons, ...
* /Aircraft/Generic/flightrecorder/components/faults-engines.xml
Records fault properties of a single engine. Only include this
if your aircraft supports fault simulation.
For multiple engines, use "count" (see "jet" example). If used,
it should be compined with piston or jet engine.
* /Aircraft/Generic/flightrecorder/components/environment.xml
Records properties of environment/weather (visibility,
temperature - but _not_ cloud position...).
* /Aircraft/Generic/flightrecorder/components/position.xml
Records properties of a the aircrafts main position (latitude,
longitude, velocities, ...).
This is the most important component. Always include this.
* /Aircraft/Generic/flightrecorder/components/controls.xml
Records most important flight controls (rudder, aileron,
elevator, ...). Always include this.
Custom Properties
-----------------
When the generic or component files are not be sufficient to record or
replay aircraft-specific effects, you can add custom properties (signals
to be recorded) to the configuration.
Each signal consits of a recording type/resolution (which does _not_
need to match the actual type in the property tree!), the path to the
property and interpolation type.
Example recording some additional custom properties:
<sim>
<flight-recorder>
<config n="0" include="/Aircraft/Generic/flightrecorder/generic-piston-propeller-1.xml">
<!-- Add custom properties here -->
<signal>
<type>float</type>
<property type="string">/controls/gear/nosegear-steering-cmd-norm</property>
</signal>
<signal>
<type>double</type>
<interpolation>rotational-deg</interpolation>
<property type="string">/ai/model/carrier/alpha-angle-deg</property>
</signal>
<signal>
<type>bool</type>
<property type="string">/controls/panel/custom-switch</property>
</signal>
</config>
</flight-recorder>
</sim>
Signal Configuration
--------------------
Template:
<signal>
<type>bool</type>
<interpolation>angular-deg</interpolation>
<property type="string">/controls/panel/custom-switch</property>
</signal>
* type: The signal's type specifies the recording resolution - not the
type of the original property. The following types are supported:
- double: 8 byte/sample
- float: 4 byte/sample (default)
- int: 4 byte/sample, integer
- int16: 2 byte/sample, integer
- int8: 1 byte/sample, integer
- bool: 1 bit/sample (yes, 1 bit. 8 bools per byte).
String type is unsupported (too expensive).
* interpolation: Specifies how values are interpolated during replay, i.e.
when replay is in slow-motion mode and more frames/second are required
than recorded, or when replaying data from the medium/long term memory.
Supported methods:
- discrete: No interpolation. Default for integer/bool types.
- linear: Standard linear interpolation. Default for float/double.
- angular-rad (or angular): Angular values in radians (0-2pi).
- angular-deg: Angular values in degrees (0-360).
* property: Path to the property to be recorded.
Advanced Configuration
----------------------
- Multipe recorder configurations for a single aircraft are supported
(multiple "<config n=..>" sections for n=0,1,...).
Active configuration to be used for the replay system is selected via
/sim/flight-recorder/replay-config (= 0,1,...).
This can be useful for specific recorders for specific scenarios,
which should not be used by default. For example, a specific recorder
configuration could be provided which also records the position of
an aircraft carrier, of other AI aircraft, ...
This may also be useful for future use, i.e. to select another flight
recorded configuration for a different purpose, such as for the
multiplayer system.
- Flight recorder configuration can be adapted during run-time
(configuration is visible in the property browser below
/sim/flight-recorder). However it is necessary to reset (reinit) the
replay subsystem first - which also erases earlier recordings. It is
not possible to mix recordings of different configurations on to a
single "tape".
- Each configuration should be given a name. Useful for a (future)
selection GUI, when multiple configurations are available.
Optimizing Performance
----------------------
- Recording properties consumes memory and also CPU time. A few
additional properties don't matter much, but avoid execessive numbers.
Reduce the resolution (type) of signals to the minimum necessary to
save space.
- Use "bool" types where possible, they are most efficient.
- Avoid recording with "double" resolution (type "double"). Use "float"
instead - even if the original property in the property tree is a
"double" (almost all of them do). "float" precision is almost always
sufficient for recording/replay purposes, with few exceptions (like
latitude/longitude properties).
- Use int16/int8 for "small" integer values.
Recording/Replay Limits
-----------------------
- All properties can be recorded, however, only writable properties can
be replayed. Properties marked as read-only, or tied properties not
implementing the "set" method cannot be replayed.
- Replaying a property overwrites the property's value. However, other
sources may also write to the same property - such as Nasal code,
autopilot rules etc. When multiple sources "fight" over a property's
value then the last update "wins" - resulting in a dependency to an
unknown/random sequence. Hence, during deplay, try to disable other
sources writing to properties which were recorded and should be
replayed.
If the other source cannot be disabled, check if you're recording the
right property. It may be better to record the input properties of the
other source instead (i.e. the inputs processed by the Nasal or
autopilot rule).
__end__