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. (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. ;)) 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 Abhay Saxena Sally Kleinfeldt -------------------------------------------------------------------------- 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...