TITLE OF PAPER:
How to Build an Air Traffic Control System
URL OF PRESENTATION: _URL_of_powerpoint_presentation_
PRESENTED BY: Neal Horwitz
REPRESENTING: MetaSlash
CONFERENCE: PyCon 2005
DATE: _date_of_your_conference_here_
LOCATION: _venue_and_room_in_venue_
--------------------------------------------------------------------------
REAL-TIME NOTES / ANNOTATIONS OF THE PAPER:
{If you've contributed, add your name, e-mail & URL at the bottom}
Neal had 10 yrs experience with ATC systems, saw how bad they generally
were.
Everyone thinks ATC is hard - Can't build a good system? Neal didn't buy that.
Neal decides to test this theory as an internal R&D project.
See also http://sourceforge.net/projects/openatc/
(help!!!! I'm not really into this....)
ATC Requirements
High availability
no single point of failure
Keep track of all the aircraft
where they are
where they are going
Don't let aircraft get too close
to each other
to a mountain, etc.
ATC Automation
Flight Data Processors (FDP) keep track of
Airspace features, including: routes, waypoints, sectors, areas, etc
Flight Plans
Aircraft information, possibly including position, emergency
Air Traffic Controllers usually deal with 10s of aircrafts, not hundreds
FDPs handle conformance monitoring and conflicts
(current and in the future)
Ensure that aircraft are doing what they're supposed to -- fly along the correct route
It's a 4D problem - lat, long, alt, time
Predictive observations & prognostications about future conflicts (terrain, plane, etc).
Anecdote: .5hr delay near ocean city md for aircraft in air cause an 8hour delay
for stuff on the ground. yikes.
What does this have to do with Python?
Less code means less bugs
VM handles memory/resource issue
Memory, socket, and file descriptor leaks
Buffer overruns
Double frees
Most ATC's are written in C/C++, a few in Java - worries about memory
lifetime of objects - not a problem in Python!
Rich data structures
Concise, readable code
Robust, high-level libraries (e.g. Tk, Twisted) (uses Tkinter canvas)
Extensive testing (aka 'soak test') key to success in this arena. (good!)
Anecdote: one installation knew that they'd fail a soak test after 8 hours,
so they didn't really want to run them at all. double yikes.
<tangent>
(JB Note: I used to write flight tracking software for airline dispatch operations. Our code base -- which I didn't start, so don't blame me -- had
every one of the problems indicated above.)
(rpk - cool, jb - can you say for whom you wrote the above? NWA would be my guess. :))
(Preston Aviation, a subsidiary of Boeing. We sold the SW to airlines. Actually, we didn't sell, which was one reason they shut down the whole Fairfax office in January :))
(well, safety^h^h^h^h^hprofitability, first, i guess. ;))
</tangent>
DATA STRUCTURES
Not sure what to say except the obvious
Strings, lists, etc...
Results in smaller, yet still easily understood code
Concise/Readable Code (ah, slides to be made available)
-zipped through
[Demo: ]
- stressing the scale of the problem, 10s to 100s of aircraft, demo using 1000 on an old craptop
- runs fine. no py perf issues.
- 75% of the world has no radar coverage, this has a different name for the
type of coverage it does have...missed that
Development
Developing the situation Display and Flight Data Processor took very
little time (81.5 hours) and ~2100 lines of code
Second system experience (impl once before, about a month, but each reimpl (py too)
built all the data proc, file io, gui bits, etc)
System does not do simulation, it just displays the data from data sources
Currently Developed
Waypoints, routes, sectors, MSAW, restricted areas
Warnings for MSAW or restricted areas
What needs to be done
Coflight (Conflict) alert
Sector reconfiguration
Automated hand hand-off between controllers
External communications
Dynamic reconfiguration
Redundancy
Q: Thoughts on TK/UI toolkits in general?
A: Most familiar with Tk and Wx, a bit on Qt.
All of them are okay (none particularly bad).
About Tk
Canvas Widget
Very robust
Non-modern-ness of GUI not an issue
About Wx
lack of robustness
(so he's not using OpenGL - i was wondering that too - i do OpenGL for a living - thought 3d would be much cooler (or even, in some cases, useful) (I do 3D too -- going to the bof?) I want to. 3d gfx BOF is @ 11 in 310. Oops, almost time to go, then. Si. Going to the UPS now.
Q: JB: What data sources does the sw use? Any human data sources, and how do you handle errors?
A: TCP/IP feed with simple data: Lat, Long, Alt, flight number
FAA data feed -- airlines radio people on ground who type stuff in
Haven't added it in, but want to use that in the future
(JB: I asked because we had all sorts of problems with that data!)
----------------------------------------------------------------------
REFERENCES: {as documents / sites are referenced add them below}
(slides unavailable on the web at this point)
--------------------------------------------------------------------------
QUOTES:
--------------------------------------------------------------------------
CONTRIBUTORS: {add your name, e-mail address and URL below}
Jonathan Blocksom <blocksom@gollygee.com>
Abhay Saxena <ark3@email.com>
Sally Kleinfeldt <skleinfeldt@tnc.org>
--------------------------------------------------------------------------
E-MAIL BOUNCEBACK: {add your e-mail address separated by commas }
--------------------------------------------------------------------------
NOTES ON / KEY TO THIS TEMPLATE:
A headline (like a field in a database) will be CAPITALISED
This differentiates from the text that follows
A variable that you can change will be surrounded by _underscores_
Spaces in variables are also replaced with under_scores
This allows people to select the whole variable with a simple double-click
A tool-tip is lower case and surrounded by {curly brackets / parentheses}
These supply helpful contextual information.
--------------------------------------------------------------------------
Copyright shared between all the participants unless otherwise stated...