Howto: Add thrust reversal
From wiki.flightgear.org
Contents |
JSBSim
-set.xml
Add the following codes in the -set.xml file, below the </sim> tag. You've to add such piece for every engine, containing thrust reversal.
<engines>
<engine n="0">
<reverser-position type="double">0.000000</reverser-position>
</engine>
<engine n="1">
<reverser-position type="double">0.000000</reverser-position>
</engine>
</engines>
<input>
<keyboard>
<key n="127">
<name>Delete</name>
<desc>Toggle Reversers</desc>
<binding>
<command>nasal</command>
<script>reversethrust.togglereverser()</script>
</binding>
</key>
</keyboard>
</input>
<nasal>
<reversethrust>
<file>Aircraft/747-400/Nasal/reverse-thrust.nas</file>
</reversethrust>
</nasal>
reverse-thrust.nas
Create a new file into your data/Aircraft/.../Nasal/ directory named reverse-thrust.nas. The piece of code shown below is designed for a two engine plane. To see how to handle more engined planes, take a look at the Boeing 747-400.
togglereverser = func {
r1 = "/fdm/jsbsim/propulsion/engine";
r2 = "/fdm/jsbsim/propulsion/engine[1]";
r3 = "/controls/engines/engine";
r4 = "/controls/engines/engine[1]";
r5 = "/sim/input/selected";
rv1 = "/engines/engine/reverser-pos-norm";
rv2 = "/engines/engine[1]/reverser-pos-norm";
val = getprop(rv1);
if (val == 0 or val == nil) {
interpolate(rv1, 1.0, 1.4);
interpolate(rv2, 1.0, 1.4);
setprop(r1,"reverser-angle-rad","3.14159");
setprop(r2,"reverser-angle-rad","3.14159");
setprop(r3,"reverser", "true");
setprop(r4,"reverser", "true");
setprop(r5,"engine", "true");
setprop(r5,"engine[1]", "true");
} else {
if (val == 1.0){
interpolate(rv1, 0.0, 1.4);
interpolate(rv2, 0.0, 1.4);
setprop(r1,"reverser-angle-rad",0);
setprop(r2,"reverser-angle-rad",0);
setprop(r3,"reverser",0);
setprop(r4,"reverser",0);
setprop(r5,"engine", "true");
setprop(r5,"engine[1]", "true");
}
}
}
YASim
-set.xml
Add the following codes in the -set.xml file, below the </sim> tag. You've to add such piece for every engine, containing thrust reversal.
<input>
<keyboard>
<key n="127">
<name>Delete</name>
<desc>Toggle Reversers</desc>
<binding>
<command>property-toggle</command>
<property>controls/engines/engine[0]/reverser</property>
</binding>
<binding>
<command>property-toggle</command>
<property>controls/engines/engine[1]/reverser</property>
</binding>
</key>
</keyboard>
</input>
-yasim.xml
Every engine with reversal should contain the following code. The transition-time defines the time that it takes to turn the engines to reversed position.
<jet> <control-input axis="/controls/engines/engine[0]/reverser" control="REVERSE_THRUST"/> <control-output control="REVERSE_THRUST" prop="/surface-positions/reverser-norm"/> <control-speed control="REVERSE_THRUST" transition-time="1.5"/> </jet> <jet> <control-input axis="/controls/engines/engine[1]/reverser" control="REVERSE_THRUST"/> <control-output control="REVERSE_THRUST" prop="/surface-positions/reverser-norm[1]"/> <control-speed control="REVERSE_THRUST" transition-time="1.5"/> </jet>
