1
0
Fork 0

Added User Doco

Added Files:
 	FGShortRef.pdf FlightGear-FAQ.html README README.IO
 	README.JSBsim README.xmlhud
This commit is contained in:
j4strngs 2001-07-03 18:00:53 +00:00
parent d85d6205b8
commit 9f9374be23
6 changed files with 978 additions and 0 deletions

BIN
Docs/FGShortRef.pdf Normal file

Binary file not shown.

426
Docs/FlightGear-FAQ.html Normal file
View file

@ -0,0 +1,426 @@
<html lang="en"><!-- $Id$ --><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>FlightGear FAQ</title><style type="text/css">
.indent { margin-left: 2em; margin-right: 1em; }
</style></head><body>
<h1 align="center">FlightGear FAQ</h1>
<p align="center"><small>Cameron Moore<br><a href="mailto:cameron@unbeatenpath.net?subject=FlightGear%20FAQ">cameron@unbeatenpath.net</a></small></p><hr noshade="yes">
<h2>Introduction</h2>
<p>Welcome to the FlightGear FAQ. Here you will find the answers to
some questions that are frequently asked on our mailing lists. If
you have a question that is not answered here, feel free to ask
us on our mailing lists. Enjoy</p>
<hr noshade="yes"><h2><a name="toc">Table of Contents</a></h2><h4>1 -
<a href="#1">The FAQ</a></h4><div class="indent">1.1 -
<a href="#1.1">Where can I get the latest version of this FAQ?</a></div><div class="indent">1.2 -
<a href="#1.2">Who do I contact if I have comments about this FAQ?</a></div><div class="indent">1.3 -
<a href="#1.3">What other important documentation should I read?</a></div><div class="indent">1.4 -
<a href="#1.4">How old is this document?</a></div><br><h4>2 -
<a href="#2">Distribution</a></h4><div class="indent">2.1 -
<a href="#2.1">Where is the latest distribution of FlightGear?</a></div><div class="indent">2.2 -
<a href="#2.2">Where can I find the newest snapshots?</a></div><div class="indent">2.3 -
<a href="#2.3">Where can I fly and where do I get the scenery?</a></div><div class="indent">2.4 -
<a href="#2.4">Where can I get some different 3D models for my plane?</a></div><br><h4>3 -
<a href="#3">Compiling</a></h4><div class="indent">3.1 -
<a href="#3.1">Why won't FlightGear compile?</a></div><div class="indent">3.2 -
<a href="#3.2">I'm using RedHat 7, and ...?</a></div><br><h4>4 -
<a href="#4">Configuring</a></h4><div class="indent">4.1 -
<a href="#4.1">How do I install new scenery?</a></div><div class="indent">4.2 -
<a href="#4.2">How do I setup my joystick(s)?</a></div><br><h4>5 -
<a href="#5">Running</a></h4><div class="indent">5.1 -
<a href="#5.1">Why is FlightGear so slow?</a></div><div class="indent">5.2 -
<a href="#5.2">Why is my SGI machine so slow?</a></div><div class="indent">5.3 -
<a href="#5.3">Stuck upside down after "crash"?</a></div><div class="indent">5.4 -
<a href="#5.4">What happened to the panel, keyboard, etc?</a></div><div class="indent">5.5 -
<a href="#5.5">Why doesn't audio work properly under Irix?</a></div><div class="indent">5.6 -
<a href="#5.6">Why do I get an error loading libmk4.so.0?</a></div><br><h4>6 -
<a href="#6">Hacking</a></h4><div class="indent">6.1 -
<a href="#6.1">How do I design a flight dynamics model for a new plane?</a></div><div class="indent">6.2 -
<a href="#6.2">How do I import planes from Microsoft Flight Simulator?</a></div><div class="indent">6.3 -
<a href="#6.3">How do I import BGL scenery from Microsoft Flight Simulator?</a></div><div class="indent">6.4 -
<a href="#6.4">How do I design or modify a panel?</a></div><div class="indent">6.5 -
<a href="#6.5">How do I place objects, like buildings, into FlightGear?</a></div><br><h4>7 -
<a href="#7">Flying</a></h4><div class="indent">7.1 -
<a href="#7.1">Where can I learn about instrument flying and navigation?</a></div><div class="indent">7.2 -
<a href="#7.2">What is the difference between Aileron and Rudder?</a></div><br><h4>8 -
<a href="#8">FlightGear v0.7.6</a></h4><div class="indent">8.1 -
<a href="#8.1">Why do I get an error in viewer.cxx about `exit' being undeclared?</a></div><br>
<hr><h2><a name="1">1 -
The FAQ</a></h2>
<b><a name="1.1">1.1 -
<u>Where can I get the latest version of this FAQ?</u></a></b>
<div class="indent">
<p>
<a href="http://flightgear.org/Docs/FlightGear-FAQ.html">http://flightgear.org/Docs/FlightGear-FAQ.html</a>
</p>
</div>
<b><a name="1.2">1.2 -
<u>Who do I contact if I have comments about this FAQ?</u></a></b>
<div class="indent">
<p>First contact the author. If you get no response, send your
comments to the flightgear-users mailing list.</p>
</div>
<b><a name="1.3">1.3 -
<u>What other important documentation should I read?</u></a></b>
<div class="indent">
<p>Definitely read the <i>FlightGear Installation and Getting
Started</i> document available at
<a href="http://flightgear.org/Docs/">http://flightgear.org/Docs/</a>.</p>
<p>Also see the FlightGear/docs-mini/ directory in the source
distribution for various other helpful documents.</p>
</div>
<b><a name="1.4">1.4 -
<u>How old is this document?</u></a></b>
<div class="indent">
<p>See the <i>About This Document</i> section at the end of the FAQ.</p>
</div>
<hr><h2><a name="2">2 -
Distribution</a></h2>
<b><a name="2.1">2.1 -
<u>Where is the latest distribution of FlightGear?</u></a></b>
<div class="indent">
<p>See
<a href="http://flightgear.org/Downloads/">http://flightgear.org/Downloads/</a>.
</p>
</div>
<b><a name="2.2">2.2 -
<u>Where can I find the newest snapshots?</u></a></b>
<div class="indent">
<p>The best place to get the latest development code is from our CVS
repository. See
<a href="http://flightgear.org/cvsResources/">http://flightgear.org/cvsResources/</a> for details.
</p>
<p>Otherwise, you can get relatively up-to-date snapshots of the
development tree at
<a href="ftp://flightgear.sourceforge.net/pub/flightgear/Devel/Snapshots/">ftp://flightgear.sourceforge.net/pub/flightgear/Devel/Snapshots/</a>.
</p>
</div>
<b><a name="2.3">2.3 -
<u>Where can I fly and where do I get the scenery?</u></a></b>
<div class="indent">
<p>While the base package only comes with scenery for the San Francisco
Bay area, you can currently fly just about anywhere in the world.
See the <i>"Additional Scenery"</i> section of
<a href="http://flightgear.org/Downloads/">http://flightgear.org/Downloads/</a>
for more information or go directly to our graphical downloader at
<a href="http://flightgear.org/Downloads/world-scenery.html">http://flightgear.org/Downloads/world-scenery.html</a>.
</p>
<p>Also visit our <i>"Places to Fly"</i> section of the website
(<a href="http://flightgear.org/Places/">http://flightgear.org/Places/</a>)
for some help navigating to some awesome locations.</p>
</div>
<b><a name="2.4">2.4 -
<u>Where can I get some different 3D models for my plane?</u></a></b>
<div class="indent">
<p>We currently don't have any of our own models yet, but we have
been given permission by several people to convert their models (which
where originally intended for use with <i>Microsoft Flight
Simulator</i>) to use with FlightGear. See Wolfram's Hangar
(<a href="http://home.t-online.de/home/Wolfram.Kuss/">http://home.t-online.de/home/Wolfram.Kuss/</a>)
for a list of what we currently have available as well as
information on how to convert models yourself.</p>
</div>
<hr><h2><a name="3">3 -
Compiling</a></h2>
<b><a name="3.1">3.1 -
<u>Why won't FlightGear compile?</u></a></b>
<div class="indent">
<p>Well, that depends. First make sure you are using the appropriate
versions of FlightGear, SimGear, and plib. If any of the packages are
out of sync with the others, compilation may fail.</p>
<p>The FlightGear <i>Downloads</i> page
(<a href="http://flightgear.org/Downloads/">http://flightgear.org/Downloads/</a>)
should tell you what versions you need if you are trying to compile
the latest stable release. If you are using a development snapshot,
make sure all three packages are up-to-date.</p>
<p>Also ensure that you have some implementation of OpenGL with glut
support with the appropriate header files. Linux users with nVidia
cards should make sure you have the latest drivers from nVidia. Other
Linux users make sure you have Mesa3D
(<a href="http://mesa3d.org">http://mesa3d.org</a>)
and your X server installed correctly. Windows users see
<a href="http://www.x-plane.com/SYSREQ/v5ibm.htm">http://www.x-plane.com/SYSREQ/v5ibm.html</a>,
and Mac users see
<a href="http://www.x-plane.com/SYSREQ/v5mac.html">http://www.x-plane.com/SYSREQ/v5mac.html</a>.
</p>
<p>If your problems persist, subscribe to our FlightGear-Users mailing
list and let us know what problem you're having. See
<a href="http://flightgear.org/mail.html">http://flightgear.org/mail.html</a> for help with this.
</p>
</div>
<b><a name="3.2">3.2 -
<u>I'm using RedHat 7, and ...?</u></a></b>
<div class="indent">
<p>Update your gcc packages. See
<a href="http://redhat.com/errata/">http://redhat.com/errata/</a>
to fix it and
<a href="http://www.gnu.org/software/gcc/gcc-2.96.html">http://www.gnu.org/software/gcc/gcc-2.96.html</a>
for an explanation why.</p>
</div>
<hr><h2><a name="4">4 -
Configuring</a></h2>
<b><a name="4.1">4.1 -
<u>How do I install new scenery?</u></a></b>
<div class="indent">
<p>The scenery archive files (ie. w100n30.tar.gz) should be untarred
into the <code>Scenery/</code> directory in your
<code>$FG_ROOT</code>.</p>
</div>
<b><a name="4.2">4.2 -
<u>How do I setup my joystick(s)?</u></a></b>
<div class="indent">
<!--
<p>FlightGear should come with a helpful program called <i>`fgjs`</i>
that can help configure your joystick.</p>
-->
<p>See the README.Joystick file located in the
<code>FlightGear/docs-mini/</code> directory of the source
distribution. This document is mirrored at
<a href="http://rockfish.net/shell/aboutjoy.txt">http://rockfish.net/shell/aboutjoy.txt</a>.
</p>
<p>If you have a joystick with digital axes, see
<a href="http://www.unet.univie.ac.at/~a8603365/flightgear.html">http://www.unet.univie.ac.at/~a8603365/flightgear.html</a>
for a patch to the development version of FlightGear.</p>
</div>
<hr><h2><a name="5">5 -
Running</a></h2>
<b><a name="5.1">5.1 -
<u>Why is FlightGear so slow?</u></a></b>
<div class="indent">
<p>FlightGear supports hardware acceleration, but it seems not to be
activated. Make sure you have OpenGL libraries installed and
configured properly and make sure you have the latest drivers for your
video card.</p>
<p><b>Linux users</b>: If you are an nVidia user, follow their
directions on getting your card working. For most other users, make
sure Mesa is installed property and ensure that you have the
appropriate kernel device drivers for your card. Most people (and
distributions) use modules for their video card device drivers; run
<i>`lsmod`</i> as root to see what modules are loaded. You should also
make sure that you are loading the appropriate modules in your
XF86Config and that your video device section is correct. Now try
running an OpenGL application (other than FlightGear) to see how it
performs. You can try the <i>gears</i> demo from Mesa or something
like <i>Quake3</i>.</p>
</div>
<b><a name="5.2">5.2 -
<u>Why is my SGI machine so slow?</u></a></b>
<div class="indent">
<p>First of all, one of the most common mistakes on SGI hardware is to
forget to specify --fog-fastest. On most SGI machines the EXP2 shading
model isn't hardware supported resulting in frame rates below 1 frame
per second (fps).</p>
<p>FlightGear makes extensive use of the OpenGL z-buffer feature,which
on most older SGI hardware is only supported in software. This means
that the CPU has to do all the z-buffer calculations in addition to the
other tasks FlightGear involves (flight dynamics, scenery tracking,
pushing commands into the graphics queue, etc). The following features
are software rendered on low-end SGI machines (like Indy and
Indigo):</p>
<ul>
<li>stencil and accumulation buffer</li>
<li>depth queuing and depth buffering</li>
<li>fogging, lighting, clipping and transforms</li>
<li>texturing</li>
</ul>
<p>This means that running FlightGear with the following options may not
even get the desired result:</p>
<p><code>./runfgfs --fog-disable --shading-flat --disable-skyblend \</code><br>
<code>--disable-textures --disable-clouds --disable-sound \</code><br>
<code>--disable-panel --enable-hud --disable-anti-alias-hud</code></p>
<p>I could even imagine that adding --enable-wireframe doesn't work on
these machines (I would be happy to be proven wrong though).</p>
<p>On a machine like O2 the following options give an acceptable
result:</p>
<code>./runfgfs --fog-fastest --disable-sound</code>
<p>Since I don't have access to other SGI hardware I can't tell which
options would be appropriate for your situation.</p>
</div>
<b><a name="5.3">5.3 -
<u>Stuck upside down after "crash"?</u></a></b>
<div class="indent">
<p>In his infinite wisdom the FlightGear Grand Master decided that
planes were to valuable to allow them to be destroyed by novice pilots
who seemed to crash a lot. The fact that nobody has bothered to model
crashes may have something to do with it too. :-)</p>
<p>The result of this as you have noticed is that with a little
practice an ingenuity you can trim the ship to fly inverted along the
ground.</p>
<p>The quick answer is to hit Ctrl+U (with the default key bindings)
to warp the plane up 1000ft.</p>
<p>For the stubborn people out there: The trick to learn is to roll
back to normal (non inverted) do this by nursing the elevator to get
to about 500 feet or so and use the ailerons to snap roll 180*.
This is all good avionics except for the plane not destroying
itself. Remember the controls work in reverse when you are inverted
and keep that airspeed up!!!</p>
</div>
<b><a name="5.4">5.4 -
<u>What happened to the panel, keyboard, etc?</u></a></b>
<div class="indent">
<p>If you are using a development version of FlightGear, make
sure you also have the latest base package. See
<a href="http://rockfish.net/fg/">http://rockfish.net/fg/</a>
for details on getting the latest CVS version.</p>
</div>
<b><a name="5.5">5.5 -
<u>Why doesn't audio work properly under Irix?</u></a></b>
<div class="indent">
<p>FlightGear (as of June 2001) uses the Portable Libraries (PLIB)
for playing audio. The audio queue implementation of PLIB is far from
optimal (in fact it's just wrong). This seems to work on other
platforms quite well, but Irix expects things to be programmed
properly.</p>
<p>There has been discussion about using OpenAL
(<a href="http://www.openal.org">http://www.openal.org</a>)
for the next release of both PLIB and FlightGear. Tests show that
the OpenAL audio implementation does the job right, meaning that
these audio problems should be gone by then. In the mean time it is
best to disable audio on Irix completely (by adding --disable-sound
either on the command line or to your <code>$HOME/.fgfsrc</code>
file).</p>
</div>
<b><a name="5.6">5.6 -
<u>Why do I get an error loading libmk4.so.0?</u></a></b>
<div class="indent">
<p>With the default installation, libmk4.so.0 is installed into
<code>/usr/local/lib</code>. You need to ensure that that path is
listed in <code>/etc/ld.so.conf</code>, then run <i>`ldconfig`</i>as
root.</p>
</div>
<hr><h2><a name="6">6 -
Hacking</a></h2>
<b><a name="6.1">6.1 -
<u>How do I design a flight dynamics model for a new plane?</u></a></b>
<div class="indent">
<p>See
<a href="http://jsbsim.sf.net">http://jsbsim.sf.net</a>.</p>
</div>
<b><a name="6.2">6.2 -
<u>How do I import planes from Microsoft Flight Simulator?</u></a></b>
<div class="indent">
<p>See
<a href="http://home.t-online.de/home/Wolfram.Kuss/">http://home.t-online.de/home/Wolfram.Kuss/</a>.
</p>
</div>
<b><a name="6.3">6.3 -
<u>How do I import BGL scenery from Microsoft Flight Simulator?</u></a></b>
<div class="indent">
<p>See
<a href="http://matrixsoft.50megs.com/BGL/">http://matrixsoft.50megs.com/BGL/</a>.
</p>
</div>
<b><a name="6.4">6.4 -
<u>How do I design or modify a panel?</u></a></b>
<div class="indent">
<p>See the README.xmlpanel file located in the
<code>FlightGear/docs-mini/</code> directory of the source
distribution. This document is mirrored at
<a href="http://rockfish.net/fg/README.xmlpanel">http://rockfish.net/fg/README.xmlpanel</a>.
</p>
</div>
<b><a name="6.5">6.5 -
<u>How do I place objects, like buildings, into FlightGear?</u></a></b>
<div class="indent">
<p>First, ensure that you have v0.7.7 or later, the scenery files
where you plan to place the object, the actual model, and the
longitude and latitude where you plan to place the object.</p>
<p>Now get the altitude for your point. If you don't want to
calculate this yourself, start FlightGear at your location and take
note of the altitude. Here's an example command:</p>
<p><code>fgfs --lat=45.50 --lon=-75.73 2>&amp;1 | tee fgfs.log</code></p>
<p>The altitude is probably in feet, so divide the starting altitude
by 3.28.</p>
<p>Search the output log file for the first occurrence of the string
"Loading tile" and take note of the filename. In the above example,
the output line looks like:</p>
<p><code>Loading tile /usr/local/Scenery/w080n40/w076n45/1712601</code></p>
<p>Copy a 3D model in a format that Plib understands to the same
directory as the tile file. Edit the text file in that directory
consisting of the tile name with the extension ".ind". The file will
already exist if there is an airport on the tile; otherwise, you can
create it from scratch. In our example, the filename is:</p>
<p><code>/usr/local/Scenery/w080n40/w076n45/1712601.ind</code></p>
<p>At the end of the file, add a new entry for your object,
consisting of the word "OBJECT_STATIC" followed by the model name,
the longitude in degrees, the latitude in degrees, the altitude in
meters, and the heading in degrees. In our example the line looks
like:</p>
<p><code>OBJECT_STATIC Towerax.ac -75.73 45.40 60 0</code></p>
<p>Save the changes to the .ind file, restart FlightGear, and
enjoy.</p>
<p>NOTE: The above information was taken from the following mailing
list post:
<a href="http://www.geocrawler.com/archives/3/11854/2001/6/0/5991409/">http://www.geocrawler.com/archives/3/11854/2001/6/0/5991409/</a>.
See that page if this one doesn't make sense.</p>
</div>
<hr><h2><a name="7">7 -
Flying</a></h2>
<b><a name="7.1">7.1 -
<u>Where can I learn about instrument flying and navigation?</u></a></b>
<div class="indent">
<p>
<a href="http://www.navfltsm.addr.com/">http://www.navfltsm.addr.com/</a>
is a very good site for learning techniques for navigation. Check
it out!</p>
</div>
<b><a name="7.2">7.2 -
<u>What is the difference between Aileron and Rudder?</u></a></b>
<div class="indent">
<p>There is a bit of info on aileron vs. rudder here:
<a href="http://www.arundel.net/xplane/html/crosswind.html">http://www.arundel.net/xplane/html/crosswind.html</a>
and
<a href="http://www.monmouth.com/~jsd/how/">http://www.monmouth.com/~jsd/how/</a>.
</p>
</div>
<hr><h2><a name="8">8 -
FlightGear v0.7.6</a></h2>
<b><a name="8.1">8.1 -
<u>Why do I get an error in viewer.cxx about `exit' being undeclared?</u></a></b>
<div class="indent">
<p>This error cropped up after the release of v0.7.6. To fix the
problem, add "<code>#include &lt;stdlib.h></code>" to the top of viewer.cxx.</p>
</div>
<hr noshade="yes"><a name="about"><h2>About This Document</h2></a><b>FlightGear FAQ</b><br>$Revision$<br>$Date$<br><p><small>
This document generated from XML using
<a href="http://www.gingerall.com/charlie-bin/get/webGA/act/sablotron.act">Sablotron</a>.
</small></p><address>Cameron Moore<br>cameron@unbeatenpath.net<br></address></body></html>

11
Docs/README Normal file
View file

@ -0,0 +1,11 @@
FGShortRef.pdf describes the key bindings and has a
nice short description of controls for FGFS.
The HTML documentation is a copy of the official
manual. If you would like a nicely printed copy
it is available in PDF form at the the FGFS website
http://flightgear.org/Docs/InstallGuide/getstart.pdf

90
Docs/README.IO Normal file
View file

@ -0,0 +1,90 @@
This document describes how to invoke FlightGear's generic IO subsystem.
FlightGear has a fairly flexible generic IO subsystem that allows you
to "speak" any supported protocol over any supported medium. The IO
options are configured at runtime via command line options. You can
specify multiple entries if you like, one per command line option.
The general form of the command line option is as follows:
--protocol=medium,direction,hz,medium_options,...
protocol = { native, nmea, garmin, fgfs, rul, pve, ray, etc. }
medium = { serial, socket, file, etc. }
direction = { in, out, bi }
hz = number of times to process channel per second (floating
point values are ok.
Serial Port Communication:
--nmea=serial,dir,hz,device,baud
device = OS device name of serial line to be open()'ed
baud = {300, 1200, 2400, ..., 230400}
example to pretend we are a real gps and output to a moving map application:
--nmea=serial,out,0.5,COM1,4800
Note that for unix varients you might use a device name like "/dev/ttyS0"
Socket Communication:
--native=socket,dir,hz,machine,port,style
machine = machine name or ip address if client (leave empty if server)
port = port, leave empty to let system choose
style = tcp or udp
example to slave one copy of fgfs to another
fgfs1: --native=socket,out,30,fgfs2,5500,udp
fgfs2: --native=socket,in,30,,5500,udp --fdm=external
This instructs the first copy of fgfs to send UDP packets in the
native format to a machine called fgfs2 on port 5500.
The second copy of fgfs will accept UDP packets (from anywhere) on
port 5500. Note the additional --fdm=external option. This tells
the second copy of fgfs to not run the normal flight model, but
instead set the FDM values based on an external source (the
network in this case.)
File I/O:
--garmin=file,dir,hz,filename
filename = file system file name
example to record a flight path at 10 hz:
--native=file,out,10,flight1.fgfs
example to replay your flight
--native=file,in,10,flight1.fgfs --fdm=external
Moving Map Example:
Per Liedman has developed a moving map program called Atlas
(atlas.sourceforge.net) The initial inspiration and much code came
from Alexei Novikov.
The moving map supports NMEA format input either via network or
via serial port. Either way will work, but this example
demonstrates the use of a socket connection.
Start up fgfs with:
fgfs --nmea=socket,out,0.5,atas-host-name,5500,udp
Start up the Atlas program with:
Atlas --udp=5500 --fgroot=path-to-fg-root --glutfonts
Once both programs are running, the Atlas program should display
your current location. Atlas is a really nifty program with many
neat options such as the ability to generate and use background
bitmaps that show the terrain, cities, lakes, oceans, rivers, etc.

42
Docs/README.JSBsim Normal file
View file

@ -0,0 +1,42 @@
JSBSim
JSBSim is an ongoing attempt at producing an OO Flight Dynamics Model (FDM)
to replace LaRCsim as the default FDM for FlightGear. It can also be used
standalone.
JSBSim uses config files to represent aircraft and engines. Also, the flight
control system is described in the config file. Normally, for use with
FlightGear, the config files are named this way:
<FG_ROOT>/Aircraft/<aircraft name>/<aircraft name>.cfg . Engines are named
like this: <FG_ROOT>/Engines/<engine name>.dat .
Aircraft and engine config files are present in the FGFS-Base package which
must be downloaded from the FlightGear web site at www.flightgear.org or one
of the mirror sites listed there.
How to run FGFS using JSBSim
All the various FDMs are currently compiled into FGFS. You can specify which
FDM you want at run time. You can also specify which aircraft you want.
Currently, for JSBSim only the X-15 is available, and possibly the C-172.
Here is an example command line used to start up FlightGear using JSBSim as
the FDM:
fgfs --fdm=jsb --aircraft=X15 --units-feet --altitude=60000 --uBody=2000 --wBody=120
[Note: uBody is the forward velocity of the aircraft, wBody is the downward
velocity - from the aircraft point of view. This essentially means that the
aircraft is going forward fast and has an angle of attack of about 4 degrees
or so]
The above command line sets up the initial velocity and altitude to allow
the X15 to glide down. Note that if you fire up the engine, it will burn for
only about two minutes and then run out of fuel - but you will go very, very
fast!
Check out the JSBSim home page at www.hal-pc.org/~jsb/flightsim.html. Please
report any bugs to jsb@hal-pc.org, or apeden@earthlink.net, or post them to
the fgfs-devel mailing list.
JSBSim is written by Jon S. Berndt and Tony Peden with contributions by
other FlightGear programmers, as well.

409
Docs/README.xmlhud Normal file
View file

@ -0,0 +1,409 @@
Users' Guide to FlightGear Hud configuration
December 22 2000
Neetha Girish <neetha@ada.ernet.in>
This document describes the reconfigurable HUD of
FlightGear implemented through XML config files.
The present reconfigurable HUD code uses most of the code
of version 0.6.1 vintage and I have adapted the same to provide
a reconfigurable HUD for fgfs.
Corrections and additions are welcome.
Some History:
Older versions of FGFS had a hard coded display of HUD.
This was a less than ideal state of affairs when it came to
using different aircraft Huds. I remember, somewhere in the 0.6.1 HUD code
it was written that the HUD code is 'presently' hard coded but ideally should
be moved into the aircraft configuration dataset, so that when you choose
an aircraft, its HUD loads.
This implementation make that possible, all you have to do is to
create appropriate 'my_aircraft.xml' files in the HUD directory and
without re-compiling the code you could have 'your_aircraft' HUD, by choosing that
in the .fgfsrc file or as a command line option as described later. Of course,
as of now, I have only implemented those HUD instruments in .xml readable form
as was available in version 0.7.6 + few more used by ADA, Bangalore for our
aircraft carrier take-off/landing simulation studies <www.flightgear.org/projects/ADA>.
To use the ADA specific reticles/HUD objects, please contact me/ you can figure it out
yourself by studying the code. All of them are relevant 'only' if you use the conformal
climb/dive ladder, since they are all referenced to it.
The rewrite of Hud display code was done using pre and post release v0.7.6 code
allowing for configuration of the hud via XML.
The present Configurable Hud implements the entire functionality of
fgfs HUD (called default HUD) till this date.
Using Default/Custom Hud:
The default HUD location is $FG_ROOT/Huds/Default.
$FG_ROOT is the place on your filesystem where you installed FG
data files. Alternate huds can be specified on the command line
or set as the default in the $HOME/.fgfsrc or $FG_ROOT/preferences.xml
using a property specification. The command line format is as follows:
--prop:/sim/hud/path=Huds/Default/default.xml
The path description shown is relative to $FG_ROOT. An absolute
path may also be used for locations outside $FG_ROOT.
For the custom Hud the path will be Huds/Custom/default.xml
Hud - Implementation:
All of the hud configuration files are XML-encoded property lists.
The root element of each file is always named <PropertyList>. Tags are
always found in pairs, with the closing tag having a slash prefixing
the tag name, i.e </PropertyList>. The top level panel configuration
file is composed of a <name> and zero or more <instruments>.
Instruments are used by including a <"unique_name"> and a <path> to the
instruments configuration file.
Comments are bracketed with <!-- -->.
Example Top Level Hud Config
<PropertyList>
<name>Default Aircraft Hud</name>
<instruments>
<hudladder> <!--unique name -->
<path>Huds/Instruments/Default/hudladder.xml</path>
</hudladder>
<hudcard>
<path>Huds/Instruments/Default/hudcard.xml</path>
</hudcard>
<instrlabel>
<path>Huds/Instruments/Default/instrlabel.xml</path>
</instrlabel>
<fgTBI>
<path>Huds/Instruments/Default/fgtbi.xml</path>
</fgTBI>
</instruments>
</PropertyList>
The default location for instrument files is $FG_ROOT/Huds/Instruments/Default.
The location for custom instrument files is $FG_ROOT/Huds/Instruments/Custom.
The location for minimal instrument files is $FG_ROOT/Huds/Instruments/Minimal.
Alternate locations may be specified in the hud configuration, paths
must be absolute to use files outside $FG_ROOT.
About Instrument Placement:
For the sake of simplicity the FGFS HUD overlay is always 640 x 480 res.
so all x/y values for instrument placement should fall within these bounds.
Being an OpenGL program, 0,0 represents the lower left hand corner of the
screen.
Instrument Implementation:
Instruments are defined in separate configuration files.
The Instruments are basically classified into 4 types( Each of them an xml file) :
The Hud Ladder,
The Hud Card,
The Hud Label and
The Turn Bank Indicator
.... (Note that that the earlier HUD classes/objects have been retained)
Newer objects may be instantiated using the above classes, Unless a totally
new object is required).
The Default as well as the Custom directory have the same (in terms of properties)
set of configuration files (but with different values to suit the aircraft).
We have a Base class - Hud Instrument Item.
We derive two more base classes - Instrument Scale and Dual Instrument Item from this.
(This implementation owes its existence to all those who wrote the HUD code for 0.6.1)
The Hud Instrument Label is an instantiable class derived from Hud Instrument Item - for
displaying alphanumeric labels (altitude, velocity, Mach no and/or anything else as long you
have a call back function to pass the value using the property 'data_source').
The Hud Card is an instantiable class derived from Instrument scale - for displaying
tapes and guages (single variable display, for displaying aoa, g's, vsi, elevator_posn, etc.).
The Hud Ladder is an instantiable class derived from Dual Instrument Item - for displaying
pitch reference ladder or climb/dive ladder (two variable display, for dislaying two types of
ladders, the pitch reference ladder or the climb/dive ladder as defined by MIL-1787b).
The fgTBI Instrument is an instantiable class derived from Dual Instrument scale again
- for display of Bank angle and Sideslip (two variable display, for display of TSI info, kept
different from the two variable ladder object basically because of its totally different
draw member function).
Most Hud instruments may be instantiated using above. It is proposed to provide all
Hud objects as defined in MIL-STD-1797A, soon.
Here is how you position 'any' object:
x ____________ x+width
| |
| |
y ------------ y+height
this defines the objects position centered about the centroid of above rectangle
in HUD overlay plane (640x480) coordinates with 0,0 at bottom-left corner.
One more, pixels per degree in the ladder class represents the compression factor of the
pitch ladder. In case of conformal HUD (climd/dive ladder) it is <640/horizontal_fov>
or <480/vertical_fov>. In case of pitch reference ladder it is
<your_no_of vertical_pixels/your_no_of_ladder_degrees>.
Example of Hud Ladder xml file.
<PropertyList>
<ladders>
<l1>
<name>Pitch Ladder</name> <!-- Name can be Pitch Ladder or Climb/Dive Ladder -->
<x>260</x> <!-- x start -->
<y>150</y> <!-- y start -->
<width>120</width> <!-- x start + width = x end -->
<height>180</height> <!-- y start + height = y end -->
<compression_factor>2.68</compression_factor> <!-- Pixels per degree -->
<loadfn>roll</loadfn> <!-- Name of the function to be called, here get_roll() is called provision made in Hud.cxx -->
<loadfn1>pitch</loadfn1> <!-- Name of the function to be called, here get_pitch() is called -->
<span_units>45.0</span_units> <!-- Range of the Ladder seen at any instant -->
<division_units>10.0</division_units> <!-- Divisions -->
<screen_hole>70</screen_hole> <!-- Hole b/w the Ladder Bars-->
<lbl_pos>0</lbl_pos> <!-- Label Position to indicate pitch angle on bar -->
<enable_frl>false</enable_frl> <!-- To Enable Pitch Reference Symbol (used by us) -->
<enable_target_spot>true</enable_target_spot> <!-- To Enable Target Spot Symbol (fgfs uses this)-->
<enable_velocity_vector>false</enable_velocity_vector> <!-- To Enable Velocity Vector Symbol (use only with climb/dive ladder)-->
<enable_drift_marker>false</enable_drift_marker> <!-- To Enable Drift Marker Symbol (used by us)-->
<enable_alpha_bracket>false</enable_alpha_bracket> <!-- To Enable Alpha Bracket Symbol (used by us, presently hard coded bracket values, alpha values will be moved to xml file)-->
<enable_energy_marker>false</enable_energy_marker> <!-- To Enable Energy Marker Symbol (used by us)-->
<enable_climb_dive_marker>false</enable_climb_dive_marker> <!-- To Enable Climb/Dive Marker (used by us)-->
<enable_glide_slope_marker>false</enable_glide_slope_marker> <!--To Enable Glide/Slope Marker (tied to climb/dive ladder only)-->
<glide_slope>0.0</glide_slope> <!-- Glide slope angle (specify the angle for drawing the reference bar)
<enable_energy_worm>false</enable_energy_worm> <!-- To Enable Energy worm (used by us)>
<enable_waypoint_marker>false</enable_waypoint_marker> <!-- To Enable Way point Marker (bearing marker)-->
<working>true</working> <!use this to enable or disbale whole object>
</l1>
</ladders>
</PropertyList>
Before you read this, _____ this is tick_top | |
| | |
| |__________________|
| this is cap_right,tick_left cap_bottom tick_right
|
_____| this is tick_bottom
Example of Hud Card xml file.
<PropertyList>
<cards>
<c1>
<name>Gyrocompass</name>
<x>220</x>
<y>430</y>
<width>200</width>
<height>28</height>
<loadfn>heading</loadfn> <!-- Name of the function to be called, here get_Heading() is called -->
<options>4</options> <!-- Read Tape Options Below or Hud.hxx file for details -->
<maxValue>360.0</maxValue> <!-- Maximum scale value -->
<minValue>0.0</minValue> <!-- Minimum Scale Value -->
<disp_scaling>1.0</disp_scaling> <!-- Multiply by this to get numbers shown on scale -->
<major_divs>5</major_divs> <!-- major division marker units -->
<minor_divs>1</minor_divs> <!-- minor division marker units -->
<modulator>360</modulator> <!-- Its a rose, Roll Over Point -->
<value_span>25.0</value_span> <!-- Range Shown -->
<type>tape</type> <!-- Card type can be "tape" or "guage" -->
<tick_bottom>false</tick_bottom> <!-- Read Ticks and Caps below -->
<tick_top>false</tick_top>
<tick_right>true</tick_right>
<tick_left>true</tick_left>
<cap_bottom>true</cap_bottom>
<cap_top>false</cap_top>
<cap_right>false</cap_right>
<cap_left>false</cap_left>
<marker_offset>0.0</marker_offset> <!-- Read Marker offset below -->
<enable_pointer>true</enable_pointer> <!-- To draw a pointer -->
<pointer_type>fixed</pointer_type> <!-- Type of pointer, Fixed or Moving (yet to be implemented)-->
<working>true</working>
</c1>
</cards>
</PropertyList>
Tape Options:
HUDS_AUTOTICKS = 0x0001
HUDS_VERT = 0x0002
HUDS_HORZ = 0x0000
HUDS_TOP = 0x0004
HUDS_BOTTOM = 0x0008
HUDS_LEFT = HUDS_TOP
HUDS_RIGHT = HUDS_BOTTOM
HUDS_BOTH = (HUDS_LEFT | HUDS_RIGHT)
HUDS_NOTICKS = 0x0010
HUDS_ARITHTIC = 0x0020
HUDS_DECITICS = 0x0040
HUDS_NOTEXT = 0x0080
HUDS_LEFT | HUDS_VERT = 0x0006
HUDS_RIGHT | HUDS_VERT = 0x0010
HUDS_TOP | HUDS_NOTEXT = 0x0084
HUDS_BOTTOM | HUDS_NOTEXT = 0x0088
HUDS_VERT | HUDS_LEFT | HUDS_NOTEXT = 0x0086
HUDS_RIGHT | HUDS_VERT | HUDS_NOTEXT = 0x0090
For clarity, I repeat, Ticks and Caps :
1. Left Tick ->|_____|<- Right Tick
|
v
Bottom Cap
2. Top Cap
|
v
_____
| |
3. Top Tick
|
v
---
|
|<- Right Cap
|
---
|
v
Bottom Tick
4. ---
|
Left Cap -> |
|
---
Marker Offset :
To Draw pointer on the scale markings. In the case of a our hud with offset 10.0
The pointer is away from the scale and points at the markings.
-| -
-| -
<| -<
-| -
-| -
Marker offset = 0.0 Marker offset = 10.0
This should be useful when I implement the fixed tape/moving pointer.
Example of a Label xml file.
<PropertyList>
<labels>
<i1>
<name>machno</name>
<x>25</x>
<y>130</y>
<width>40</width>
<height>30</height>
<data_source>mach</data_source> <!-- Name of the function to be called, here get_Heading() is called -->
<label_format>%4.2f</label_format> <!-- The Label Format -->
<pre_label_string>blank</pre_label_string> <!-- String to be written Pre Label -->
<post_label_string>NULL</post_label_string> <!-- String to be written Post Label -->
<scale_data>1.0</scale_data>
<options>4</options> <!-- Read Tape options or Hud.hxx -->
<justification>2</justification> <!-- Justify the label, 0=LEFT_JUSTIFY, 1=CENTER_JUSTIFY, 2=RIGHT_JUSTIFY -->
<blinking>0</blinking> <!-- Yet to be implemented -->
<working>true</working>
<latitude>false</latitude> <!-- True if the label is to display Lattitude (special label, displays deg.min.sec)-->
<longitude>false</longitude> <!-- True if the label is to display Longitude (special label, displays deg.min.sec)-->
</i1>
</labels>
</PropertyList>
Example of a Turn Bank Indicator xml file.
<PropertyList>
<tbis>
<f1>
<name>fgTBI_Instrument</name>
<x>290</x>
<y>45</y>
<width>60</width>
<height>10</height>
<loadfn>roll</loadfn> <!-- Name of the function to be called, get_roll() is called here. -->
<loadfn1>sideslip</loadfn1> <!-- Name of the function to be called, get_sideslip() is called here. -->
<maxBankAngle>45.0</maxBankAngle> <!-- Maximum Angle of Bank -->
<maxSlipAngle>5.0</maxSlipAngle> <!-- Maximum Angle of Slip -->
<gap_width>5</gap_width> <!-- Screen Hole -->
<working>true</working>
</f1>
</tbis>
</PropertyList>
I have still got to implement dials (as in MIL-STD-1787b).
REMEMBER IF YOU NEED TO INDICATE ANY OTHER PARAMETER ON THE HUD OTHER THAN WHAT IS PROVIDED AS
CALLBACK FUNCTIONS (PROPERTY NAMES LISTED BELOW) YOU HAVE TO FIDDLE WITH THE CODE, AS YET. LET ME
KNOW AND I SHALL INCLUDE THAT.
<loadfn>anzg</loadfn> <!-- Here get_anzg() is called -->
<loadfn>heading</loadfn> <!-- Here get_heading() is called -->
<loadfn>aoa</loadfn> <!-- Here get_aoa() is called -->
<loadfn>climb</loadfn> <!-- Here get_climb() is called -->
<loadfn>altitude</loadfn> <!-- Here get_altitude() is called -->
<loadfn>agl</loadfn> <!-- Here get_agl() is called -->
<loadfn>speed</loadfn> <!-- Here get_speed() is called -->
<loadfn>view_direction</loadfn> <!-- Here get_view_direction() is called -->
<loadfn>aileronval</loadfn> <!-- Here get_aileronval() is called -->
<loadfn>elevatorval</loadfn> <!-- Here get_elevatorval() is called -->
<loadfn>rudderval</loadfn> <!-- Here get_rudderval() is called -->
<loadfn>throttleval</loadfn> <!-- Here get_throttleval() is called -->
<loadfn>aux16</loadfn> <!-- Here get_aux16() is called -->
<loadfn>aux17</loadfn> <!-- Here get_aux17() is called -->
<loadfn>aux9</loadfn> <!-- Here get_aux9() is called -->
<loadfn>aux11</loadfn> <!-- Here get_aux11() is called -->
<loadfn>aux12</loadfn> <!-- Here get_aux12() is called -->
<loadfn>aux10</loadfn> <!-- Here get_aux10() is called -->
<loadfn>aux13</loadfn> <!-- Here get_aux13() is called -->
<loadfn>aux14</loadfn> <!-- Here get_aux14() is called -->
<loadfn>aux15</loadfn> <!-- Here get_aux15() is called -->
<loadfn>aux8</loadfn> <!-- Here get_aux8() is called -->
<loadfn>ax</loadfn> <!-- Here get_Ax() is called -->
<loadfn>mach</loadfn> <!-- Here get_mach() is called -->
<loadfn>framerate</loadfn> <!-- Here get_frame_rate() is called -->
<loadfn>fov</loadfn> <!-- Here get_fov() is called -->
<loadfn>vfc_tris_culled</loadfn> <!-- Here get_vfc_tris_culled() is called -->
<loadfn>vfc_tris_drawn</loadfn> <!-- Here get_vfc_tris_drawn() is called -->
<loadfn>latitude</loadfn> <!-- Here get_latitude() is called -->
<loadfn>longitude</loadfn> <!-- Here get_longitude() is called -->