Skip to content

Latest commit

 

History

History
107 lines (85 loc) · 4.26 KB

File metadata and controls

107 lines (85 loc) · 4.26 KB

RTI Connext DDS — Air Traffic Control

Implementation of the national ATC simulation using RTI Connext DDS 7.7.0 Pro.

Architecture

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

File Inventory

(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)

Quick Start

Prerequisites

  • RTI Connext DDS license file — set RTI_LICENSE_FILE in the repository's .env.local file 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_KEY and RTI_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.

Generate Types

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

Run

./scripts/demo_start.sh

Open http://localhost:8050 for the real-time dashboard.

Stop

./scripts/demo_stop.sh

DDS Design Highlights

  • 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
  • @mutable topic types for schema evolution
  • DomainParticipant partitions for discovery isolation between facilities

See DESIGN.md for the full architecture document.