Autonomous ATC

AI models and simple rules running ground control at a simulated airport.

A 2D simulation of Birmingham Airport where nobody’s in the control tower. Aircraft push back, taxi, queue, take off and land on their own. AI models drive the aircraft, predict conflicts and watch the runway, and simple rules turn what they see into clearances. Separately, two more models understand what pilots ask for over the radio.

I built it for my master’s thesis, to see whether it could do the job of Birmingham’s ground controller. In the final test it handled 15 departures and 15 arrivals over 32 minutes with no incidents, more than four times as busy as Birmingham’s busiest hour. The work splits into four jobs, each with its own model (pilot requests have two):

This page is the short version. The full story, from building the airport to every approach that failed along the way, is in six chapters.

Chapter 1Building the airportWhy I switched my thesis to air traffic control in late December, and how I built a simulated Birmingham Airport to test it in.

Taxiing

The taxiing model drives each aircraft, the way a pilot would. It’s a deep Q-network, a kind of reinforcement learning model. It sees how far the taxiway edges are, where the next waypoint is, and its own speed and thrust, and picks how to steer and how much thrust to use. It practised on random routes on a separate training ground, never on Birmingham itself, so it would learn to drive any taxiway rather than memorise one airport.

I could have just made the aircraft follow the lines exactly. But a learned driver means every aircraft moves a little differently, like real ones do, so the rest of the system can’t count on perfect movement. It was also my first time with reinforcement learning, so it was a good place to start.

Before it worked, it found every shortcut in the rewards: racing off in a straight line, spinning in circles, turning on the spot. The final model stays within a few metres of the centreline and averages 16 knots.

At a real airport, it could work as a digital twin: a copy of each aircraft that drives its cleared route the way it should. If the real aircraft drifts away from its twin, it’s somewhere it wasn’t cleared to be. That’s how many runway incursions start, so it’s worth flagging straight away.

Chapter 2TaxiingTeaching an aircraft to follow a taxiway with reinforcement learning, and every way it found to cheat the rewards first.

Collision avoidance

Aircraft need to queue behind each other and give way at intersections. This was the hardest part. What worked in the end is fairly simple: an LSTM predicts where every aircraft will be over the next few seconds, and when two predictions overlap, the aircraft further from its goal holds short.

Getting there took weeks of multi-agent reinforcement learning that never learned to stop properly, and classifiers so cautious that aircraft never moved after pushback.

I’d also looked into graph neural networks, which could have handled both routing and conflicts, learning patterns like one-way routes so aircraft never meet head-on. As it is, the LSTM stops head-on collisions but not the deadlock: two aircraft that meet head-on stop and wait, with nothing to reroute them yet.

Chapter 3Collision avoidanceTeaching aircraft to give way took weeks of failed reinforcement learning and a detour through classifiers, and ended with something much simpler.

Runway safety

Only one aircraft can be on the runway at a time. A YOLOv8 model watches the radar picture of the runway and the taxiways leading onto it, and an aircraft only gets cleared on when it’s empty. When it’s clear, the aircraft with the highest priority goes. Priority grows while an aircraft waits, four times faster in the air.

It trained on 5,000 generated radar images and scored perfect precision and recall. Looking back, I made the task too easy: every image came from the same airport picture with the same aircraft. It needed different aircraft and much more variation.

Chapter 4Runway safetyKeeping the runway to one aircraft at a time with computer vision, the way a controller would by looking out of the window.

Pilot requests

Pilots ask for things over the radio, so the last job was understanding them. After speech to text, a BERT model works out what the pilot wants, and a DistilBERT model picks which of five possible flights is asking.

When five people read requests to a MacBook’s dictation, speech to text got 39% of the words wrong, and the system still understood 92% of the requests.

Chapter 5Pilot requestsUnderstanding what a pilot asks for, and which flight is asking, from imperfect speech to text, with BERT and DistilBERT.

What it can’t do

It’s a proof of concept, and a long way from a real control tower. The prediction and runway models were trained only on this one simulated airport, and they only know what they saw there. The LSTM had never seen a go-around, for example, so its predictions break when one happens. The code, the trained models and a README for every part are on GitHub, and the simulation runs on a normal laptop.

Chapter 6The final testThe whole system running together at more than four times Birmingham's busiest hour, what it still can't do, and what I'd do differently.