Hi fellow wiki editors!

To help newly registered users get more familiar with the wiki (and maybe older users too) there is now a {{Welcome to the wiki}} template. Have a look at it and feel free to add it to new users discussion pages (and perhaps your own).

I have tried to keep the template short, but meaningful. /Johan G

Difference between revisions of "North American X-15"

From FlightGear wiki
Jump to: navigation, search
(Development status/Issues/Todo)
m (add spactrip ready logo)
 
(2 intermediate revisions by one other user not shown)
Line 6: Line 6:
 
|fdm =JSBSim
 
|fdm =JSBSim
 
|status =
 
|status =
|authors =Mike Hill, Jon S. Berndt (FDM), John Check
+
|authors =Mike Hill, Jon S. Berndt (FDM), John Check, Enrique Laso (new model)
 
|fgname =X15, X15-new
 
|fgname =X15, X15-new
 
|download=http://www.flightgear.org/Downloads/aircraft-2.0.0/#X15
 
|download=http://www.flightgear.org/Downloads/aircraft-2.0.0/#X15
Line 14: Line 14:
  
 
Of the two out three surviving X-15, one is a the [[National Air and Space Museum]]
 
Of the two out three surviving X-15, one is a the [[National Air and Space Museum]]
 +
 +
[[Image:Spacetripready.png|link=FlightGear_space_program]]
  
 
== Development status/Issues/Todo ==
 
== Development status/Issues/Todo ==
 
'''Outside:'''
 
'''Outside:'''
 
* textures are bumpy
 
* textures are bumpy
* flaps are not animated
+
* flaps are not animated (''fixed in future release shown below'')
* rudder, ailerons and pitch elevator are not animated
+
* rudder, ailerons and pitch elevator are not animated (''fixed in future release shown below'')
* cockpit windows are not transparent
+
* cockpit windows are not transparent (''fixed in future release shown below'')
 
* aircraft has no shadow
 
* aircraft has no shadow
* no aircraft light available
+
* no aircraft light available (''actual aircraft did not have external lights'')
* there is no stream behind the rocket engine visible
+
* there is no stream behind the rocket engine visible (''fixed in future release shown below'')
  
 
'''3d Cockpit:'''
 
'''3d Cockpit:'''
* no 3d cockpit available
+
* no 3d cockpit available (''fixed in future release shown below'')
  
 
'''General:'''
 
'''General:'''
 
* engines have no sound
 
* engines have no sound
* no hud available
+
* no hud available (''actual aircraft did not have HUD but can be activated as usual for flight test'')
* aircraft has no braking parachutes  
+
* aircraft has no braking parachutes (''actual aircraft did not have brake parachute'')
  
 
== Ballistic high altitude flight and rendering ==
 
== Ballistic high altitude flight and rendering ==
Line 46: Line 48:
 
[[File:X-15-iceland05.jpg|250px|The X-15 on the falling leg of a high-altitude ballistic trajectory above Iceland]]
 
[[File:X-15-iceland05.jpg|250px|The X-15 on the falling leg of a high-altitude ballistic trajectory above Iceland]]
  
 +
== Electrical system modelling (nasal proposal) ==
 +
 +
The X-15 electrical and hydraulic systems are peculiar because they use a pair of hydrogen peroxide fueled APUs to provide power to the aircraft instead of being connected to the main engine. While the mechanical power drain from those systems can be neglected for regular aircraft where most of the fuel is used for propulsion, this cannot be done for accurate computation of fuel consumption from the APU. And depletion of APU fuel can leave you without a controllable aircaft ...
 +
 +
As hydraulics and electrical systems have many common feature, the following is only an introduction to the electrical system design.
 +
The system can be split in the following generic components (each one having its class in Nasal)
 +
* Mechanically driven generators (''hyd : pumps'')
 +
* Batteries (''hyd : accumulators'')
 +
* Transformers (that includes transformer rectifiers and inverters)
 +
* Buses (''hyd: circuit'')
 +
* Bus ties (''hyd : power transfer unit'')
 +
* Circuit breakers (''hyd : relief valve'')
 +
* Terminal loads which include
 +
- Lights
 +
- Instruments
 +
- Switches
 +
- Actuators ...
 +
 +
The system will be updated per display cycle in order to achieve several goals :
 +
* compute the mechanical load to for the generators
 +
* drain each generator according to the tie logics between buses (achieved through a priority of connections towards buses)
 +
* compute the properties of the electrical power applied to each terminal load
 +
 +
As it stands, the electrical system is built by instanciation of objects for each class e.g.
 +
<syntaxhighlight lang="nasal" enclose="div">
 +
var X_15_electrical = ElectricalSystem.new ();
 +
var AC_1 = ElectricalBus.new(X_15_electrical);
 +
var gen_1 = Generator.new (X_15_electrical,
 +
                          regulated_AC_voltage,
 +
                          generator_rating,
 +
  AC_1, #bus
 +
  40000, #low rpm
 +
  25000, #cutoff rpm
 +
  3); #priority on bus
 +
var AC_voltmeter_1 = Gauge.new (AC_1,
 +
0,  #low value
 +
250, #hi value
 +
drop_on_shutdown, #behavior when power is lost
 +
200, #nominal voltage
 +
0.5, #relaxation time
 +
0.5, #nominal electrical consumption
 +
"/systems/electrical/voltage-1"); #displayed value
 +
</syntaxhighlight>
 +
 +
And the chain of updates (tree traversal) is as follows
 +
<syntaxhighlight lang="nasal" enclose="div">
 +
ElectricalSystem.update = func (delta_t)
 +
{
 +
  var index = 0;
 +
  #first we look which are the loads attached to each generator
 +
  forindex (index; me.generators) me.generators[index].feed();
 +
  #then external connections
 +
  forindex (index; me.externals) me.externals[index].feed();
 +
  #including batteries
 +
  forindex (index; me.batteries) me.batteries[index].feedBus();
 +
  #then we compute the load coming from each of the terminal loads
 +
  forindex (index; me.terminal_loads) me.terminal_loads[index].powerDemand(delta_t);
 +
  #compute the change in battery load
 +
  forindex (index; me.batteries) me.batteries[index].updateCharge(delta_t);
 +
  #compute the mechanical power demand for each of the generators
 +
  forindex (index; me.generators) me.generators[index].computePowerConsumption(delta_t);
 +
  #reset all cyclic elements
 +
  forindex (index; me.buses) me.buses[index].resetForCycle();
 +
  forindex (index; me.terminal_loads) me.terminal_loads[index].resetForCycle();
 +
}
 +
</syntaxhighlight>
  
 +
Due to the number of function calls and the genericity of the approach it may be interesting in the future to include this models in the C++ code, even though current benchmarks do no seem to show a noticeable drop in frame rate
  
 
{{North American}}
 
{{North American}}

Latest revision as of 18:17, 27 February 2015

North American X-15
X15.jpg
Type Rocket-powered aircraft
Author(s) Mike Hill, Jon S. Berndt (FDM), John Check, Enrique Laso (new model)
FDM JSBSim
--aircraft= X15, X15-new
Status Unknown
Supports Space trip
Download Download the North American X-15 aircraft package for the current stable release (2018.3).

A famous rocket plane for FlightGear 1.0.

Of the two out three surviving X-15, one is a the National Air and Space Museum

Spacetripready.png

Development status/Issues/Todo

Outside:

  • textures are bumpy
  • flaps are not animated (fixed in future release shown below)
  • rudder, ailerons and pitch elevator are not animated (fixed in future release shown below)
  • cockpit windows are not transparent (fixed in future release shown below)
  • aircraft has no shadow
  • no aircraft light available (actual aircraft did not have external lights)
  • there is no stream behind the rocket engine visible (fixed in future release shown below)

3d Cockpit:

  • no 3d cockpit available (fixed in future release shown below)

General:

  • engines have no sound
  • no hud available (actual aircraft did not have HUD but can be activated as usual for flight test)
  • aircraft has no braking parachutes (actual aircraft did not have brake parachute)

Ballistic high altitude flight and rendering

Flightgear is able to render the scene for the ballistic high altitude flight the X-15 is capable of (at least on a modern graphics card), but it needs some special adjustments to do so. Assume the visibility at arc top should be 500 km:

  • from the menu, LOD bare range needs to be set to 500000.0
  • in the property browser, /sim/rendering/camera-group/zfar needs to be set to 500000.0
  • in the weather menu, configure visibility at high altitude to 500000.0 m
  • use the Atmospheric Light Scattering framework to get the correct visuals of being outside the atmosphere in the rendering menu

The X-15 on the falling leg of a high-altitude ballistic trajectory above Iceland The X-15 on the falling leg of a high-altitude ballistic trajectory above Iceland The X-15 on the falling leg of a high-altitude ballistic trajectory above Iceland

Electrical system modelling (nasal proposal)

The X-15 electrical and hydraulic systems are peculiar because they use a pair of hydrogen peroxide fueled APUs to provide power to the aircraft instead of being connected to the main engine. While the mechanical power drain from those systems can be neglected for regular aircraft where most of the fuel is used for propulsion, this cannot be done for accurate computation of fuel consumption from the APU. And depletion of APU fuel can leave you without a controllable aircaft ...

As hydraulics and electrical systems have many common feature, the following is only an introduction to the electrical system design. The system can be split in the following generic components (each one having its class in Nasal)

  • Mechanically driven generators (hyd : pumps)
  • Batteries (hyd : accumulators)
  • Transformers (that includes transformer rectifiers and inverters)
  • Buses (hyd: circuit)
  • Bus ties (hyd : power transfer unit)
  • Circuit breakers (hyd : relief valve)
  • Terminal loads which include
- Lights
- Instruments
- Switches
- Actuators ...

The system will be updated per display cycle in order to achieve several goals :

  • compute the mechanical load to for the generators
  • drain each generator according to the tie logics between buses (achieved through a priority of connections towards buses)
  • compute the properties of the electrical power applied to each terminal load

As it stands, the electrical system is built by instanciation of objects for each class e.g.

var X_15_electrical = ElectricalSystem.new ();
var AC_1 = ElectricalBus.new(X_15_electrical);
var gen_1 = Generator.new (X_15_electrical,
                           regulated_AC_voltage,
                           generator_rating,
			   AC_1, #bus
			   40000, #low rpm
			   25000, #cutoff rpm
			   3); #priority on bus
 var AC_voltmeter_1 = Gauge.new (AC_1,
				 0,   #low value
				 250, #hi value
				 drop_on_shutdown, #behavior when power is lost
				 200, #nominal voltage
				 0.5, #relaxation time
				 0.5, #nominal electrical consumption
				 "/systems/electrical/voltage-1"); #displayed value

And the chain of updates (tree traversal) is as follows

ElectricalSystem.update = func (delta_t)
{
  var index = 0;
  #first we look which are the loads attached to each generator
  forindex (index; me.generators) me.generators[index].feed();
  #then external connections 
  forindex (index; me.externals) me.externals[index].feed();
  #including batteries
  forindex (index; me.batteries) me.batteries[index].feedBus();
  #then we compute the load coming from each of the terminal loads
  forindex (index; me.terminal_loads) me.terminal_loads[index].powerDemand(delta_t);
  #compute the change in battery load
  forindex (index; me.batteries) me.batteries[index].updateCharge(delta_t);
  #compute the mechanical power demand for each of the generators
  forindex (index; me.generators) me.generators[index].computePowerConsumption(delta_t);
  #reset all cyclic elements
  forindex (index; me.buses) me.buses[index].resetForCycle();
  forindex (index; me.terminal_loads) me.terminal_loads[index].resetForCycle();
}

Due to the number of function calls and the genericity of the approach it may be interesting in the future to include this models in the C++ code, even though current benchmarks do no seem to show a noticeable drop in frame rate