Property tree: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (Major revamp for Property Tree articles)
m (typos, rewording.)
Line 1: Line 1:
{{PropertyTree}}The so called '''Property Tree''' in [[FlightGear]] is generally considered FlightGear's central nervous system and one of FlightGear greatest assets, if not even its greatest asset of all!
{{PropertyTree}}The so called '''Property Tree''' in [[FlightGear]] is generally considered FlightGear's central nervous system and one of FlightGear's greatest assets!


This is because the Property Tree system can be used to provide access to lowlevel runtime state variables via a very intuitive tree-like hierarchy, so that FlightGear behavior can be easily controlled and manipulated at runtime.
This is because the Property Tree system provides access to low level run time state variables via a very intuitive tree-like hierarchy. This allows FlightGear's behavior to be easily controlled and manipulated at run time.


The FlightGear Property Tree is the common denominator for crucial runtime state and also the interface to these internal state variables.
The FlightGear Property Tree is the common denominator for crucial run time state and also the interface to these internal state variables.


Getting to grips with the concepts and mechanisms behind the "Property Tree" may not be easy for FlightGear beginners. This page is meant to help newcomers familiarize themselves with the FlightGear property tree.
The concepts and mechanisms behind the "Property Tree" may not be immediately obvious to FlightGear beginners. This page is meant to help new users familiarize themselves with the FlightGear property tree.


To make it easier to make the tree, start FlightGear with the following command line
To make it easier to manipulate the tree, start FlightGear with the following command line
  fgfs --httpd=5480
  fgfs --httpd=5480
Then after a few moments open in a new window - [http://localhost:5480 http://localhost:5480]  
Then after a few moments open in a new window - [http://localhost:5480 http://localhost:5480]  
Line 35: Line 35:
What makes FG powerful is that a new aircraft can easily be designed with its unique set of properties that somehow affect the simulation. The Aircraft model has an xml file of properties within the property tree.
What makes FG powerful is that a new aircraft can easily be designed with its unique set of properties that somehow affect the simulation. The Aircraft model has an xml file of properties within the property tree.


This is why the property tree is not consitent with fixed variables, they are created dynamically, to represent a propeller plane vs Jumbo or even a "Caspian Sea Monster".
This is why the property tree is not consistent with fixed variables, they are created dynamically, to represent a propeller plane vs Jumbo or even a "Caspian Sea Monster".


The property tree is read, written, accessed and manipulated in a variety of ways, such as
The property tree is read, written, accessed and manipulated in a variety of ways, such as
Line 43: Line 43:
* telnet interface - query and fly the plane on the command line
* telnet interface - query and fly the plane on the command line
* html interface - fly the plane with a browser or an PDA
* html interface - fly the plane with a browser or an PDA
What makes multiplayer work for example is a set of variables from the tree are broadcasted across the network as Bytes eg height, pos, etc
For example, multiplayer mode is accomplished by exchanging sets of variables from the tree (height, position, speed, etc).
 


For a motion simulator one would be interested in
<pre>
Brandon to do this about gforce
</pre>


==Flight Dynamics Model (FDM)==
==Flight Dynamics Model (FDM)==
Line 54: Line 51:
* [[JSBSim]]  
* [[JSBSim]]  
* [[YASim]]  
* [[YASim]]  
These flight dynamics model present themselves differently in the tree, different variables in diferent places. That is what an aircraft can be designed around.
These flight dynamics models present themselves differently in the tree, using different variables, in different places. That is what an aircraft can be designed around.

Revision as of 19:30, 23 December 2009

The so called Property Tree in FlightGear is generally considered FlightGear's central nervous system and one of FlightGear's greatest assets!

This is because the Property Tree system provides access to low level run time state variables via a very intuitive tree-like hierarchy. This allows FlightGear's behavior to be easily controlled and manipulated at run time.

The FlightGear Property Tree is the common denominator for crucial run time state and also the interface to these internal state variables.

The concepts and mechanisms behind the "Property Tree" may not be immediately obvious to FlightGear beginners. This page is meant to help new users familiarize themselves with the FlightGear property tree.

To make it easier to manipulate the tree, start FlightGear with the following command line

fgfs --httpd=5480

Then after a few moments open in a new window - http://localhost:5480

Introduction

When a simulation is running, all the variables such as position, speed, flaps, cabin lights, et all are calculated and manipulated through a property tree.

The "virtual" tree that runs the simulation appears much like a directory/file structure. eg:

/sim/aircraft = A333

/position/
/position/longitude-deg =	'-122.3576677'	(double)
/position/latitude-deg =	'37.61372424'	(double)
/position/altitude-ft =	'28.24418581'	(double)
/position/altitude-agl-ft =	'22.47049626'	(double)

/controls/seat/eject/initiate
/controls/electric/APU-generator

Some of these variables are "calculated" within the sim, whilst others can be manipulated. Writing a variable is as easy as

/* Its my turn to play the sim */
set('/controls/seat/eject/initiate', 1)

The values can also be set from the httpd interface.

What makes FG powerful is that a new aircraft can easily be designed with its unique set of properties that somehow affect the simulation. The Aircraft model has an xml file of properties within the property tree.

This is why the property tree is not consistent with fixed variables, they are created dynamically, to represent a propeller plane vs Jumbo or even a "Caspian Sea Monster".

The property tree is read, written, accessed and manipulated in a variety of ways, such as

  • internal compiled code within FG - the c/c++ code
  • Nasal scripts - this is javascript like scripting with read/write to the property tree. This is the way most aircraft are implemented.
  • sockets that are either in/out/bi - this allows send/recieve to the FG sim via sockets
  • telnet interface - query and fly the plane on the command line
  • html interface - fly the plane with a browser or an PDA

For example, multiplayer mode is accomplished by exchanging sets of variables from the tree (height, position, speed, etc).


Flight Dynamics Model (FDM)

FlightGear uses a few Flight Dynamics Models, such as

These flight dynamics models present themselves differently in the tree, using different variables, in different places. That is what an aircraft can be designed around.