Howto: Add thrust reversal

From wiki.flightgear.org

Jump to: navigation, search

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>
Personal tools