Implementation of the national ATC simulation using RTI Connext DDS 7.7.0 Pro.
| Application | Role | Count |
|---|---|---|
app_airplane.py |
Aircraft position reporting, flight plan filing, gate requests | 1 per aircraft |
app_airport.py |
Weather reports, runway status, gate assignment service | 1 per airport |
app_tower.py |
Terminal-area control: clearances, runway management, handoffs | 1 per airport |
app_tracon.py |
Terminal radar approach control: arrival sequencing, handoffs | 1 per TRACON |
app_center.py |
En-route control: separation, weather rerouting, sector handoffs | 1 per center |
app_flightplan_service.py |
Central flight plan validation and publishing | 1 |
app_weather_service.py |
Convective weather cell generation | 1 |
app_dashboard.py |
Web-based real-time map (Flask + Leaflet) | 1 |
(repository root)
├── .env.example # Template for local credentials and settings
├── .env.local # User-created local settings (Git-ignored)
└── connext_dds/
├── README.md # This file
├── DESIGN.md # DDS architecture deep dive
├── air_traffic_types.idl # IDL4 type definitions (source of truth)
├── air_traffic_qos.xml # QoS profile library
├── diagrams/ # Design diagrams (referenced by DESIGN.md)
├── scripts/
│ ├── demo_start.sh # Launch all apps
│ ├── demo_stop.sh # Stop all apps
│ ├── demo_cli.py # Scenario config parser (used by demo_start.sh)
│ ├── collector_start.sh # Start data collector
│ └── collector_stop.sh # Stop data collector
├── python/ # Python implementation
│ ├── README.md # Python-specific setup
│ ├── types_generate.sh # rtiddsgen -language Python
│ ├── common.py # Shared utilities
│ ├── air_traffic_types.py # Generated types (DO NOT HAND-EDIT)
│ └── app_*.py # Application files (8 apps)
└── cpp/ # C++ implementation (planned)
-
RTI Connext DDS license file — set
RTI_LICENSE_FILEin the repository's.env.localfile before running. No Connext installation required; the Python package is installed from PyPI. -
Python 3.10+
-
Virtual environment set up via
source ../setup.sourceme -
A personal CARTO basemap API key for the dashboard. Keys are free within CARTO's fair-use limit of five million tile requests per calendar month. Authorize
localhost, then create the ignored local configuration file from the repository root:cp .env.example .env.local
Replace the placeholders for
CARTO_BASEMAP_API_KEYandRTI_LICENSE_FILE. The demo launcher loads this file automatically.Each user must use their own key and comply with the CARTO Basemaps Terms. The key is visible in browser tile requests, so configure domain restrictions and usage limits and monitor it for abuse.
The generated air_traffic_types.py is checked in, so this step is only needed
if you modify air_traffic_types.idl. Regenerating types requires a full
RTI Connext DDS Installation
installation (for rtiddsgen).
cd python
./types_generate.sh
cd .../scripts/demo_start.shOpen http://localhost:8050 for the real-time dashboard.
./scripts/demo_stop.sh- Single domain (ID 0) with partition-based logical separation
- Content-Filtered Topics for aircraft-specific instructions and sector-filtered positions
- Request/Reply for flight plan filing and gate assignment
- 8 QoS profiles inheriting from Connext BuiltinQosLib patterns
@mutabletopic types for schema evolution- DomainParticipant partitions for discovery isolation between facilities
See DESIGN.md for the full architecture document.