Spoken GCA: Difference between revisions
No edit summary |
|||
Line 58: | Line 58: | ||
Correct your vertical speed if you hear ''"<Above/Below> glidepath."'' | Correct your vertical speed if you hear ''"<Above/Below> glidepath."'' | ||
= Phraseology customization = | |||
<br /> | |||
= The PAR screen = | |||
From version 0.5 onwards, the script calls an enhanced PARscreen. Unlike ''parscreen_class.nas'', which it replaces, the new ''par_class.nas'' provides a stand-alone canvas window. <br /> | |||
That means that you can instance as many PAR objects as you like. | |||
From the Nasal console try this: | |||
<syntaxhighlight>var PAR_06 = gca.ParScreen.new(width=444,height=300,icao="SUMU",rwy="06"); | |||
var PAR_24 = gca.ParScreen.new(width=444,height=300,icao="SUMU",rwy="24"); | |||
</syntaxhighlight> This way (choosing opposite runways) you can check your ''touch-n-go'' skills. And this without using the GCA itself at all! | |||
= Phraseology customization = | |||
You can customize the phraseology by editing the "''phraseology.xml''" file.<br /> | You can customize the phraseology by editing the "''phraseology.xml''" file.<br /> | ||
There you can find groups of tags like: | There you can find groups of tags like: |
Revision as of 23:57, 9 November 2017
rleibner and hooray are working on an Spoken GCA script, and it's time to share with you the beta version.
Work in progress This article or section will be worked on in the upcoming hours or days. Note: Although still incomplete, the information it contains is valid and available. See history for the latest developments. |
Spoken GCA allows the pilot to listen to the directives of the Ground Controlled Approach. (see Howto:Implementing_a_simple_GCA_system)
Background
Is there any work on GCA (ground controlled approach) in progress, or have missed it? GCA is surprisingly accurate and easy to use, both as a pilot and a controller. |
What GCA is
- https://secretsofcoldwarradar.omeka.net/exhibits/show/cold-war-radar-technology/radar-equipment/ground-controlled-approach-and
- https://aroundthepattern.com/training/ground-controlled-approaches-gca/
- https://en.wikipedia.org/wiki/Ground-controlled_approach
- http://www.rquirk.com/cdnradar/cor/chapter21.pdf
What can you expect from GCA
Arriving in the vicinity of the airport with little or no visibility, the pilot can request the GCA service. The Controller, assisted by a PAR (Precision Approach Radar), will guide you through a safe path (both in heading and in altitude) that will take you to the head of the used runway.
How to install
Note This is the latest version (Nov 09, 2017) Latest modifications:
|
If your FGFS version accepts Addons, you can download this feature from the Addons Repository. Download all the 9 files into the directory of your choice. Launch FlightGear including --addon argument, eg.:
fgfs <usual args> --addon=/path/to/fgaddon/SpokenGCA
Otherwise, you can install it as a submodule. Contact the author for further instructions.
And that's all !
If you prefer (as I do), you can bind an unused joystick button to request GCA service.
How to use it
When you are about 10 or 15 miles from your destination, tune Comm1 to an available ATC frequency (you can find them at Menu/Location/Airfield information),
and press the > key to request GCA assistance.
You will hear the GCA's answer "<callsign>, this will be a PAR approach to <airport> runway <rwy>."
Depending on your position and altitude, it will give you a vector towards the base leg or towards the final one. Also will instruct to climb or descend if necessary.
Follow closely those instructions making standard turns first, and half standard ones when indicated.
Adopt about 90 to 110 kts IAS until you hear "Begin descent", and configure a "final" atitude then.
If you are adviced "<Well/Slightly> <left/right> of course." then make "S" turns to fix that. Little ones if "Slightly", big ones if "Well".
Correct your vertical speed if you hear "<Above/Below> glidepath."
The PAR screen
From version 0.5 onwards, the script calls an enhanced PARscreen. Unlike parscreen_class.nas, which it replaces, the new par_class.nas provides a stand-alone canvas window.
That means that you can instance as many PAR objects as you like.
From the Nasal console try this:
var PAR_06 = gca.ParScreen.new(width=444,height=300,icao="SUMU",rwy="06");
var PAR_24 = gca.ParScreen.new(width=444,height=300,icao="SUMU",rwy="24");
This way (choosing opposite runways) you can check your touch-n-go skills. And this without using the GCA itself at all!
Phraseology customization
You can customize the phraseology by editing the "phraseology.xml" file.
There you can find groups of tags like:
. . . .
<foo type="string">Hello world. </foo>
<foo type="string">It is a good </foo>
<foo type="string">day </foo>
<foo type="string">to fly. </foo>
. . . .
which will be read as a single sentence ("Hello world. It is a good day to fly. ").
Literals
Those in the example above are literal sentences that you can change by the strings you want.
Note
|
Substitutions
Strings starting by % will call some property value.
In the example above replace "day" by "% /sim/startup/time-offset-type".
Now the sentence will be read as "Hello world. It is a good morning to fly. " or "Hello world. It is a good evening to fly. " depending on the time.
Note
|
Concatenation
Strings starting by ~ will append the sentence with another one.
Try this:
. . . .
<short type="string">% /satc/callsign-fmt</short>
<short type="string">, </short>
<foo type="string">Have a nice fly, </foo>
<foo type="string">~short</foo>
. . . .
when calling foo you should hear "Have a nice fly, <your-callsign> , "
Word Replacement
If you find that the word Wind is not pronounced clearly, you can change it by Winnded or similar to increase its intelligibility..
Better? Fine, but what about the message on the screen?
Include a tag with the pattern <replace type="string">old:new</replace> :
. . . .
<replace type="string">Winnded:Wind</replace>
. . . .
How control.nas script works
The gca.Control() function instances an object from gca_class and sets destination values.
That GCAobject contains all the AI to design the approaching path and will check the aircraft's position once per second. Instructions are built and transmitted to the caller.
It also instances an object from PARScreen_class to track the aircraft on the PAR screen.
Each second, the script receives an instruction. But it is neither possible nor convenient to pass these instructions to the pilot every second !
So it checks the demo.phrase and demo.maxsecs members. (demo.phrase is not the instruction itself, but the "instruction-type". And demo.maxsecs is the maximum elapsed time between consecutive "spoken" instructions.)
If the received demo.phrase is the same as the previous one, the script waits <demo.maxsecs> seconds before instruct the pilot.
But if demo.phrase changes, then the pilot will be instructed immediately.
(To be continued . . . )
Roadmap
(based on Readme.first)
- In gca_class.nas: add validation of all setters arguments. Done
- Move join() function and phraseology.xml to be accesible for gca_class.nas.
- Add a version control. Done
- improvements & optimizations
- support for different GUI modes/tabs (pilot, controller, developer) Pending [3] ?
- add support for using AI/MP callsigns for looking up the proper /position root automatically. [1]
Addon Version
now structured our prototype as an Addon and uploaded to the Addons repository
Testing
For testing/debugging I'm using a challenging situation:[4]
fgfs --aircraft=c172p --airport=SLLP --com1=119.5 --prop:/engines/engine[0]/running=true --offset-distance=10 --offset-azimuth=280 --altitude=14000 --vc=80 --wind=280@10
If you try it, be careful:
- At such altitudes a C172 can hardly fly.
- Pilot must manage the Mixture (for starting engines and later often when descending).
- You will be soon flying into the "mushing regime".
- If you fly a heavy aircraft, select rwy 28, cause the 28R is a grass short one. [5]
Another interesting one:
fgfs --aircraft=c172p --airport=LOWI --com1=119.27 --prop:/engines/engine[0]/running=true --offset-distance=6 --offset-azimuth=82 --altitude=10000 --vc=80 --wind=80@10
Try editing "Final Approach" and "Glide Slope" values (use the "Apply" button).
References
References
|