ATC-pie: Difference between revisions

4,329 bytes added ,  6 March 2015
no edit summary
m (Fixed the broken logo in Template:Infobox)
No edit summary
Line 1: Line 1:
{{forum|83|ATC-Pie Support & Development}}
{{forum|83|ATC-Pie support & development}}


{{Infobox Software
{{Infobox Software
Line 8: Line 8:
| developedby            = Michael Filhol
| developedby            = Michael Filhol
| initialrelease        = Febuary 1, 2015
| initialrelease        = Febuary 1, 2015
| latestrelease          = Febuary 11, 2015
| latestrelease          = March 6, 2015
| writtenin              = Python3
| writtenin              = Python3
| os                    = Any
| os                    = Any
Line 15: Line 15:
| type                  = ATC client
| type                  = ATC client
| license                = GNU GPL v3
| license                = GNU GPL v3
| website                = https://gitorious.org/atc-pie
| website                = http://wiki.flightgear.org/ATC-pie
}}
}}


'''ATC-pie''' is a radar [[air traffic control]] simulation program for the [[FlightGear]] multi-player network, initially released Febuary 2015. It is comparable to [[OpenRadar]], but essentially designed for realism.
'''ATC-pie''' is a radar [[air traffic control]] simulation program for the [[FlightGear]] multi-player network, initially released Febuary 2015. It is comparable to [[OpenRadar]], but essentially designed for realism. It simulates many features of real-life ATC tasks such as strip rack and sequence management, handovers to/from neighbouring controllers, transponder identification, flight plan filing, ATIS recording.


It is programmed in Python3 for Qt5, hence system-independant, only both must be installed as well as the python3-qt5 bindings. That done, it is meant to work straight away, with no other resource to install or make/compile command to run. No need to install or update FlightGear, download scenery or fetch any external resource before it can run.
It is programmed in Python3 for Qt5, hence system-independant, only both must be installed as well as the python3-qt5 bindings. That done, it is meant to work straight away, with no other resource to install or make/compile command to run. No need to install or update FlightGear, download scenery or fetch any external resource before it can run.


== Features ==
== Program features ==


Features listed below are already implemented and supposedly stable. Tested on Linux and Windows; still waiting for Mac users to report.
Features listed below have been tested on various Linux versions and Windows. Still waiting for Mac users to report.


=== General ===
=== Environment ===
* Real METAR updates with selectable weather station
World data:
* Real declination lookup and true/magnetic distinction
* Real world METAR updates with selectable weather station
* Data retrieved from the latest [http://data.x-plane.com X-Plane] file set
* Real world declination lookup and true/magnetic distinction
* In-app announcement of ATC session on Lenny64's popular [http://flightgear-atc.alwaysdata.net ATC event page]
* Airport and navigation data retrieved from the latest [http://data.x-plane.com X-Plane] file set
* Network text chat system
 
* Manage ignored contacts
Multi-player environment:
* Interface with Lenny64's [http://flightgear-atc.alwaysdata.net flight plan data base], including in-game FPL retrieval, filing and editing
* ATC handovers: strip exchange with OpenRadar and other ATC-pie instances in range
* In-app session announcement facility to post on Lenny64's popular [http://flightgear-atc.alwaysdata.net ATC event page]
 
GUI:
* Floatable, dockable and closable GUI panes: strips, radios, text chat, etc.
* Notification system combining selectable sounds, status bar messages and a time-tagged history
* General and airport-specific settings saved on close and restored on restart
* Personal notepads saved across sessions


=== Transponder support ===
=== Transponder and radar contact ===
* Realistic mode-dependant behaviour (modes 0, A, C, S)
Transponder support:
* Choice for default mode for the many FlightGear aircraft models still not equipped
* Mode-dependant behaviour (modes 0, A, C, S)
* Individual and general cheat modes to "see all" (override XPDR settings)
* Choice of simulated mode for the many FlightGear aircraft models still not equipped
* Radar identification assistant (unique squawk link between radar pick-up and strip assignment detection)
* Radar identification assistant (unique squawk link between radar pick-up and strip assignment detection)
* Individual and general cheat modes to override XPDR settings ("see all") or reveal those turned off


=== Radar scope ===
Radar scope:
* Variety of show/hide options: navigation points and fixes, aircraft info boxes, vectoring assignments...
* Variety of show/hide options for navigation points, aircraft info boxes, vectoring assignments...
* Directly assign headings, altitudes/FLs and speeds by click&drag on radar contacts
* Directly assign headings, altitudes/FLs and speeds with click&drag on controlled radar contacts
* All-in-one display of aircraft course, vector assignments and conflict warning
* Point-to-point heading & distance quick measuring tool
* Measuring tool for quick point-to-point heading & distance checks
* Custom text labels to annotate radar background (saved across sessions)
* In-game custom text labels to annotate radar background (saved across sessions)
* Ignore contacts
 
=== Radio ===
* [[FGCom 3.0|FGCom 3]] integration
* ATIS recording with information letter and pre-filled preparation notepad
* Multiple radio management enabling simultaneous transmission on different frequencies
* Frequency-specific sound level selection enabling efficient monitoring
* Mouse and keyboard PTT
* Integrated echo test
* Use of separate (externally running) FGCom possible


=== Strip, route and flight plan management ===
=== Strip, route and flight plan management ===
* Strip drag&drop along and across user-defined strip racks
* Strip drag&drop along and across user-defined racks
* Link strips to flight plans and radar contacts to merge editable details and inform radar display
* Link strips to flight plans and radar contacts to merge editable details and inform radar display
* Interface with Lenny64's [http://flightgear-atc.alwaysdata.net flight plan data base] including in-game FPL retrieval, filing and editing
* Route management and next waypoint display
* FPL, transponder and vectoring assignment conflicts reported
* FPL, transponder and vectoring assignment conflicts reported
* Strip route management and next waypoint display
* Work with local FPL copies and manage sync with online publication
* Work with local FPL copies and manage sync with online publication


=== GUI ===
=== Communications ===
* Floatable/dockable GUI panes: strips, radios, text chat, etc.
Radio:
* General and airport-specific settings saved on close and restored on restart
* [[FGCom 3.0|FGCom 3]] integration (incl. echo test and possible use of externally running instance)
* Notification system combining selectable sounds, status bar messages and a time-tagged history
* ATIS recording with information letter and pre-filled preparation notepad
* Personal notepads (general and airport-specific) saved across sessions
* Simultaneous radio management enabling transmission and efficient monitoring on multiple frequencies
* Frequency-specific sound level selection
* Mouse and keyboard PTT
 
Text chat:
* Network text chat system with preset message list management
* Text aliases for context value replacements
* Message history recall
* Hardcore comm simulation possible by disabling unknown senders' callsigns


== Screenshots ==
== Screenshots ==
{{Gallery
{{Gallery
|ATC-pie-screenshot-radarIdentification.png|Radar identification marked in blue (unique strip–transponder match)
|ATC-pie-screenshot-radarIdentification.png|Radar identification marked in blue (unique strip–transponder match)
|ATC-pie-screenshot-LFPGcloseUp.png|Fine airport tarmac depiction
|ATC-pie-screenshot-LFPGcloseUp.png|Fine airport tarmac depiction
|ATC-pie-screenshot-stripDetailSheet.png|Strip detail sheet with editable route
|ATC-pie-screenshot-stripDetailSheet.png|Strip detail sheet with editable route
|ATC-pie-screenshot-courseAndAssignmentsGraphics.png|All-in-one display of aircraft course, vector assignments and conflict warning
|ATC-pie-screenshot-ATISdialog.png|ATIS recording feature with scrap notebook
|ATC-pie-screenshot-ATISdialog.png|ATIS recording feature with scrap notebook
}}
}}
Line 115: Line 125:


==== Downloading ====
==== Downloading ====
There are essentially two ways of downloading ATC-pie: one is to download a '''tarball''' to extract locally; the other is to clone the '''Git repository'''. The latter requires Git, but will keep you in sync with updates more easily. Your choice. In either case, you will have no compiling to do (make, etc.), but do make sure you have the few dependencies installed (e.g. Qt5), listed in the <code>README</code> file.
There are essentially two ways of downloading ATC-pie: one is to download a '''tarball''' to extract locally; the other is to clone the '''Git repository'''. The latter requires [http://git-scm.com Git], but will keep you in sync with updates more easily. Your choice. In either case, you will have no compiling to do (make, etc.), but do make sure you have the few dependencies installed (e.g. Qt5), listed in the <code>README</code> file.


Downloading the '''tarball''' requires nothing but the standard tar+gzip combo:
Downloading the '''tarball''' requires nothing but the standard tar+gzip combo:
# download the [https://gitorious.org/atc-pie/atc-pie/archive/master.tar.gz compressed archive];
# download the [https://gitlab.com/atc-pie/atc-pie/repository/archive.tar.gz compressed archive];
# extract the files in the directory of your choice.
# extract the files in the directory of your choice.


To clone the '''repository''', from the directory of your choice:
To clone the '''repository''', from the directory of your choice:
: <code>git clone https://gitorious.org/atc-pie/atc-pie.git</code>
: <code>git clone https://gitlab.com/atc-pie/atc-pie.git</code>


==== Starting the program ====
==== Starting the program ====
Line 131: Line 141:


=== Tips ===
=== Tips ===
Here are a few tips to help you navigate and use the program.


Here are a few tips to help you navigate and use the program.
==== Setup and interface ====
* '''Callsigns''' typically start with the ICAO code of a controlled airport, and end with a hint on the provided service: twr, gnd... With no callsign given, you will appear as "ICAOobs" on network connect. Note that FGMS restricts callsigns lengths to 7 characters. :-(
FGMS '''callsigns''' for ATCs typically start with the ICAO code of a controlled airport, and end with a hint on the provided service: twr, gnd... When choosing your callsign on MP connect, make sure it is unique, and note that FGMS restricts callsign length to 7 characters. :-(
* For more efficient text chat, a growing list of '''text aliases''' exist (<code>$wind</code>, <code>$qnh</code>, <code>$icao</code>...) for both instant and preset chat messages. They automatically expand to the current value when message is sent.
* In airport input fields, a single dot will be replaced by your ICAO position. Use this as a '''shortcut from/to your airport''' when filling strip/FPL details.


Any strip with valid departure and arrival airports will contain a '''parsed route'''. Recognised navpoints in the route field (whitespace-sparated tokens) create waypoints on the way to arrival. All other tokens are stored as route leg specifications to the following waypoint. The current route leg of the selected aircraft (leg spec + waypoint) is displayed in the info pane.
A few facts on information display:
* '''Heading displays''' are mostly magnetic so they can be read out to pilots. The only exception perhaps are the navigator tooltips, for easier identification on the scope.
* The '''transition level''' displayed in the weather analysis is the lowest flight level that is still above the transition altitude. This does not mean the lowest to be expected in ATC clearances, which may be higher, for more vertical separation on either side of the transition layer or due to coordination with neighbouring zones and fields.
* The grouped tick marks along the '''localiser line''' (when shown) indicate best altitudes AMSL for final approach along the defined flight path angle: every mark in a group is 1,000 ft.


==== Information display ====
In airport input fields, a single dot will be replaced by your ICAO position. Use this as a '''shortcut from/to your airport''' when filling FPL/strip detail sheets.


* '''Heading displays''' are mostly magnetic so they can be read out to pilots. The only exception perhaps are the navigator tooltips, for easier identification on the scope.
Any strip with valid departure and arrival airports will contain a '''parsed route''':
* The '''transition level''' is by definition the lowest flight level that is still above the transition altitude. This does not mean the lowest assignable FL, which may take more vertical separation.
* recognised navpoints in the route field (whitespace-sparated tokens) create waypoints on the way to arrival;
* The grouped '''tick marks along the localiser line''' (when shown) indicate best altitudes AMSL for final approach along the defined slope rate. Every mark in a group is 1,000 ft.
* other tokens are stored as route leg specifications to the following waypoint;
* "OK" near the '''route field''' on the strip detail sheet means that the route could be parsed correctly; otherwise "!!" is displayed. This does not matter, only the info boxes will be showing destination (or nothing if unknown) instead of next waypoint.
* the current route leg of the selected aircraft (leg spec + waypoint) is displayed in the info pane;
* "OK" near the route field of the strip detail sheet means that the route could be parsed correctly, otherwise "!!" is displayed and info boxes will be showing destination (or nothing if unknown) instead of next waypoint.


==== Radio ====
==== Radio and communications ====
The '''FGCom version''' setting is the name of a subdirectory in <code>resources/fgcom</code>. See <code>Notice</code> file in that directory.


Say you are TWR coordinating with GND at an airport and you want to '''monitor both radio frequencies''' while you are only in charge of one. You can set this up by starting your own radio box on TWR frequency, and turn on a second one to monitor GND, setting the volume to "soft" on the latter so that you can always tell if a message is for you to answer or not.
Say you are TWR coordinating with GND at an airport and you want to '''monitor both radio frequencies''' while you are only in charge of one. You can set this up by starting your own radio box on TWR frequency, and turn on a second one to monitor GND, setting the volume to "soft" on the latter so that you can always tell if a message is for you to answer or not.


The '''FGCom version setting''' is the name of a subdirectory in <code>resources/fgcom</code>. See <code>Notice</code> file there.
For more efficient text chat, a growing list of '''text aliases''' exist (<code>$wind</code>, <code>$qnh</code>, <code>$icao</code>...) for both instant and preset chat messages. They automatically expand to the current value when message is sent. Have a look at the quick reference available from the help menu.


==== Resolving conflicts ====
==== Resolving conflicts ====
Strip–FPL conflicts:
Strip–FPL conflicts:
* to confirm all strip details: open the strip detail sheet, tick the "push details to FPL" box and save to propagate the strip details;
* to confirm strip details: open the strip detail sheet, tick the "push details to FPL" box and save to propagate the strip details;
* to confirm all FPL details: reset the strip to overwrite its details with those of the linked flight plan;
* to confirm FPL details: "pull FPL details" from the button menu to reset the conflicting strip details to the values filled in the linked flight plan;
* to confirm some details of each source: open the strip detail sheet, get rid of the bad details and save without pushing to the flight plan to fall back on the first case where all strip details can be confirmed.
* to confirm some details of each source: open the strip sheet, get rid of the bad details before pushing to the flight plan, the untouched FPL details will appear on next open.


Flight plan local–online conflicts:
Flight plan local–online conflicts:
* to update the online version with your local modifications, double-click the flight plan and tick the "publish" box before saving (if still decorated red, there was a network problem or the change was rejected by the server);
* to update the online version with your local modifications, double-click the flight plan and tick the "publish" box before saving (if still decorated red, there was a network problem or the change was rejected by the server);
* to discard all local modifications of an online FPL, remove the FPL from the list and check for new flight plans again (the deleted entry should be retrieved with online state).
* to discard all local modifications of an online FPL, remove the FPL from the list and check for new flight plans again (the deleted entry should be retrieved with online state).
=== Strip exchange and OpenRadar interoperability ===
The strip exchange feature in ATC-pie is based on OpenRadar's server to enable ATC coordination between users of both software programs. However, it is to note that their philosophies differ in several ways:
* OpenRadar's basic processing unit is the FGMS callsign, whereas ATC-pie's is the strip;
* OpenRadar's concept of handover is based on a shared notion of aircraft ownership, whereas ATC-pie allows any controller to pull out a strip, write any callsign and link it to a radar contact;
* a handover must be acknowledged by the receiver for the sender to lose ownership and all OpenRadar users to see the handover complete, whereas ATC-pie considers that a strip sent through the hand-over pipe is gone and should land directly on a receiver's rack at the other end.
For most interactions to work while still respecting both philosophies as much as possible, the following principle was chosen:
* ATC-pie users can only hand over strips that are linked to a radar contact (no lone strip can be sent);
* aircrafts under ATC-pie control are not shown as "owned" to OpenRadar users;
* handovers from ATC-pie will fail if an OpenRadar user in range is claiming ownership;
* when sending to ATC-pie controllers, OpenRadar users will see their transfers acknowledged straight away, unconditionally.
Callsign exchange policy:
* O-R to ATC-pie: FGMS callsign will appear on the strip, as if the sender had filled the detail properly;
* ATC-pie to O-R: callsign resolved for the receiver, sender's entry will reappear next time ATC-pie handles the strip;
* pie-to-pie handovers: strip detail preserved, whether present or absent.
In practice, in ATC-pie, a strip can be handed over by dropping it on the chosen ATC in the list of connected controllers in range. Received strips appear unlinked on the reserved rack, with an identification of the sender which disappears as soon as the strip is clicked on.
== FAQ ==
Questions frequently asked (at least twice) about the program:
'''Q: How do I start anywhere else than bl*ody KSFO?'''
A: Use a command-line argument: <code>./ATC-pie.py ICAO</code>
'''Q: Why am I not seeing this aircraft on my radar? I know it is there: the pilot is sending chat messages and/or it is visible on the live tracker map...'''
A: You only see an aircraft if its transponder is turned on, i.e. responding to your radar ping. You should tell the pilot to turn his transponder on. If the transponder feature is not supported by the aircraft model, it will be simulated by ATC-pie according to the fallback mode you have selected in the settings dialog, hence will be visible for any non-zero (0=off) selection. The other radical way to go is to cheat to see him: ''reveal OFF/STBY'' or ''radar cheat mode''.
'''Q: What is the strip exchange server? Which one to use?'''
A: The strip exchange feature allows you to hand over strips to ATCs who are connected to the same server and within 180 NM from your position. The public server currently open for general multi-player use is <code>http://h2281805.stratoserver.net/FgFpServer</code>. To hand over a strip, drag it from its rack and drop it on the chosen callsign in the ATC handover list. Publicise your frequency so that ATCs around know what to tell pilots for them to contact you!
'''Q: Can I draw procedure routes?'''
A: No, or not yet. There are thoughts and talks about how to address this best, if at all.


[[Category:ATC clients]]
[[Category:ATC clients]]
265

edits