Chapter 6 of 6 · 2 min read

The final test

The 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.

With every part working on its own, the last question was whether they worked together: the taxiing model driving, the LSTM keeping aircraft apart, the detector watching the runway, all at once.

Busier than the real thing

The full test was a busy period: 15 departures and 15 arrivals, appearing at random. Birmingham handles somewhere between four and thirteen arrivals and departures an hour, so this was more than four times as busy as its busiest hour.

15 departures and 15 arrivals, with no collisions and no aircraft on the runway when it shouldn’t be.

Over 32 minutes, the system handled every one without a single incident. Aircraft pushed back, queued behind each other, gave way at intersections, waited at the holding point and took off, while arrivals landed and taxied to free stands.

What it still can’t do

It’s a proof of concept, and a long way from a real control tower.

  • Head-on meetings. Two aircraft facing each other on the same stretch of taxiway get stuck, because nothing reroutes them. It only showed up in long stress tests.
  • Go-arounds. The LSTM never saw one in training, so its predictions bend back towards the taxiways when an arrival aborts its landing.
  • Full stands. If every stand is taken, arrivals simply stop landing.
  • Other airports. The taxiing model trained on random routes, but the LSTM and the runway detector only know Birmingham, so they’d need retraining anywhere else.
  • Talking to it. Pilot requests are understood on their own, outside the simulation.

What I’d do differently

I’d already planned fixes for some of these. For head-on meetings, I designed a fix: detecting conflicts by taxiway segment, and rerouting with a modified Dijkstra’s algorithm. The runway detector needs more varied training data, with more aircraft images and backgrounds, to cope with a real airport’s pictures. And the next step for pilot requests is live, continuous speech, connected to the simulation so pilots can talk to it.

The biggest lesson, though, was that the most sophisticated approach isn’t automatically the right one. For collision avoidance, a prediction model plus one clear rule beat everything that tried to learn the behaviour from scratch. That matches what I found in my research: real air traffic control runs almost entirely on rules, and the little AI it uses, mostly computer vision, has only arrived in the last few years. A lot of this could have been done well with rules alone. But my goal was to see how much AI could do, and it turns out to be a lot.

I was short on time and resources, and had tunnel vision just getting it all working. Looking back now, there’s a lot I’d do differently: new models I want to try, and making it work beyond Birmingham. But more than anything, it was a really fun project.

The code, the trained models and a README for every part are on GitHub, and the simulation runs on a normal laptop.