Simurgh (pronounced Seymour) is an open source platform that supports developing and evaluating algorithms (AI agents) for air traffic control.
Air traffic control (ATC) is a complex task requiring real-time safety-critical decision making. In practice, air traffic control operators (ATCOs) monitor a given sector and issue commands to aircraft pilots to ensure safe separation between aircraft. They also have to consider the number and frequency of instructions issued, fuel efficiency and orderly handover between sectors. Optimising for the multiple objectives while accounting for uncertainty (e.g., due to aircraft mass, pilot behaviour or weather conditions) makes this a particularly complex task.
The Simurgh project provides a research-focused user-friendly platform for testing automated approaches to ATC. It consists of several elements that all work together to achieve this:
-
Bluebird - a Flask-based API that handles communication with multiple air traffic simulators (it supports the open source Bluesky simulator)
-
Aviary - package for generating ATC scenarios and performance evaluation metrics (dependency of Bluebird)
-
Dodo - scaffold for building ATC agents, which provides commands for communicating with BlueBird in Python (PyDodo) and R (rdodo)
-
Twitcher - front-end for BlueBird for monitoring the simulation
With an ATC simulator (e.g., BlueSky) and BlueBird running, one can observe and interact with the simulation via BlueBird using Python (PyDodo), R (rdodo) or Twitcher. The aviary package allows one to synthetically generate ATC scenarios of increasing complexity to train agents on and provides metrics to score performance.
git clone https://github.com/alan-turing-institute/simurgh.git
All commands described in the subsequent sections are meant to be run from inside the repo. After cloning the repo make sure to run:
cd simurgh
Make sure you have Docker installed.
If you have Docker installed and have cloned this repo then run:
docker-compose up -d
This pulls down the pre-built images from DockerHub and starts each container in the right order.
Then all one needs to do is go to
http://localhost:8080
where Twitcher will be running.
Note: If this is the first time running this command, it may take some time to download and extract all the layers involved.
Then to close this, run:
docker-compose down
This will shutdown the running instances.
PyDodo is the Python implementation of Dodo.
To install:
git clone https://github.com/alan-turing-institute/dodo.git
pip install dodo/Pydodo
If BlueSky and BlueBird are running (see previous step), then one can communicate with the simulator (via BlueBird) using PyDodo:
>>> import pydodo
>>>
>>> pydodo.reset_simulation()
True
>>>
Success!
See the Dodo specification document for a detailed overview of the supported commands.
The example notebook shows how to interact with the simulation using PyDodo.
To run the example, launch the notebook using the command below (this will automatically open the notebook in your browser):
jupyter lab examples/Example-pipeline.ipynb
🚧The project is still under development. å🚧
We welcome contributions to all elements of the project.
You can either help improve the overall documentation here or go to the specific repository for the part of the project you want to contribute to:
Documentation is hosted in the docs
folder of this repository. Please refer to the README.md
there for instructions on editing the docs websbite.