Skip to main content

Open-source airport surface movement simulator

Project description

OpenTaxi – Open-Source Airport Surface Movement Simulator

OpenTaxi is an open-source simulator for airport surface (taxiway) operations. It models multi-aircraft movement from parking positions to runway thresholds on a realistic airport graph network, with conflict detection and resolution.

OpenTaxi is meant as a research tool for studying airport surface traffic management, path planning algorithms, and reinforcement learning–based control. It is distributed under the MIT License and can be freely used, modified, and cited without restrictions.

Note: This release includes the airport map (Changi Airport taxiway network) but does not include surveillance data. The simulator can run in full simulation mode with synthetic traffic.

Features

  • Graph-based airport map – taxiway network parsed from GraphML with UTM coordinate projection
  • Multiple path planners – Dijkstra, Greedy Best-First, A*, Floyd-Warshall (precomputed), and A* with turn penalty
  • Conflict detection & resolution – prediction-based FCFS controller and separation-maximising controller
  • Kinematic aircraft model – acceleration/deceleration limits, arc-length tracking, heading computation
  • Real-time visualisation – matplotlib-based 2D rendering with aircraft icons and trajectory trails
  • Evaluation framework – path quality metrics (length, turns, smoothness) and simulation performance metrics (conflicts, taxi time, throughput)
  • RL environment – Gymnasium-compatible environment for training RL-based taxi controllers
  • Replay mode – replay historical surveillance data (data not included)

Project Structure

OpenTaxi/
├── opentaxi/                  # Core package
│   ├── __init__.py
│   ├── airport.py             # Airport map loader (GraphML → graph)
│   ├── aircraft.py            # Aircraft state & kinematics
│   ├── planners.py            # Path planning algorithms
│   ├── controller.py          # Conflict detection & resolution
│   ├── simulator.py           # Simulation engine & visualisation
│   ├── evaluation.py          # Evaluation metrics
│   ├── rl_env.py              # Gymnasium RL environment
│   ├── tools.py               # Geometric utilities
│   └── airport_map/           # Map data
│       ├── changi.graphml     # Changi Airport taxiway network
│       └── ac_logo.svg        # Aircraft icon
├── examples/
│   ├── run_sim.py             # Run simulation example
│   └── train_rl.py            # RL training example
├── setup.py
├── requirements.txt
├── LICENSE
└── README.md

Installation

From source

git clone https://github.com/your-org/OpenTaxi.git
cd OpenTaxi
pip install -e .

With optional dependencies

# Visualisation support (aircraft icons)
pip install -e ".[vis]"

# RL training support
pip install -e ".[rl]"

# Everything
pip install -e ".[full]"

Quick Start

Run a simulation

cd OpenTaxi
python examples/run_sim.py --agents 10

Use as a library

from opentaxi.airport import AirportMap
from opentaxi.planners import AStarPlanner
from opentaxi.controller import Opt_StopGo
from opentaxi.simulator import Simulation

# Load map
airport_map = AirportMap("opentaxi/airport_map/changi.graphml")

# Set up planner and controller
planner = AStarPlanner(airport_map)
controller = Opt_StopGo(airport_map, predict_horizon=300.0)

# Run simulation with 10 aircraft
sim = Simulation(airport_map, planner, controller, num_agents=10)
sim.run()

Train an RL controller

pip install stable-baselines3 gymnasium
python examples/train_rl.py train --map_path opentaxi/airport_map/changi.graphml

Dependencies

Package Purpose
numpy Numerical computation
networkx Graph data structure
pyproj Coordinate projection
matplotlib Visualisation
cairosvg (optional) SVG icon rendering
Pillow (optional) Image processing
gymnasium (optional) RL environment interface
stable-baselines3 (optional) RL training algorithms

Architecture

OpenTaxi follows a modular architecture inspired by BlueSky:

  • AirportMap parses the GraphML taxiway network into a directed graph with UTM-projected node positions and edge geometries.
  • Planners operate on the graph to find paths from parking gates to runway thresholds, respecting constraints (no traversal through runway interiors, no entering parking dead-ends as intermediates).
  • Aircraft instances track kinematic state (position, velocity, heading) along their planned paths using arc-length parameterisation.
  • Controllers detect pairwise conflicts between aircraft and issue yield/stop commands to maintain separation.
  • Simulation orchestrates the step loop, calling the controller, stepping each aircraft, and updating the visualisation.

Citation

If you use OpenTaxi in your research, please cite:

@software{opentaxi2025,
  title  = {OpenTaxi: Open-Source Airport Surface Movement Simulator},
  year   = {2025},
  url    = {https://github.com/your-org/OpenTaxi}
}

License

MIT License. See LICENSE for details.

Acknowledgements

  • Airport map data derived from OpenStreetMap.
  • Project structure inspired by BlueSky ATC Simulator (Hoekstra & Ellerbroek, ICRAT 2016).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opentaxi-0.2.0.tar.gz (205.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opentaxi-0.2.0-py3-none-any.whl (211.5 kB view details)

Uploaded Python 3

File details

Details for the file opentaxi-0.2.0.tar.gz.

File metadata

  • Download URL: opentaxi-0.2.0.tar.gz
  • Upload date:
  • Size: 205.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opentaxi-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2922eb727d4b25e41269968753bc947acabf5bfd1fcfba895ea50ae74fdb9d7c
MD5 ca225baf2b0179f64b0c5646535abdc4
BLAKE2b-256 b8fd2925d3b2e0d697363440d25b2102118d8ca7292fbfb0b29ec30ce57ff44f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentaxi-0.2.0.tar.gz:

Publisher: publish.yml on ATMRI-NTU/OpenTaxi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentaxi-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: opentaxi-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 211.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opentaxi-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 28839d8ff9449d070631db71f9856e433420ff50f84d5b4f5c69bdaaaae27b96
MD5 f4ecdae8274ec9853f7fa019738233ea
BLAKE2b-256 e91ad644340d13e50ee4ae51d80456ec3539f110ae893d9898d6fbecd0dd68a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentaxi-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ATMRI-NTU/OpenTaxi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page