This project implements a simplified but realistic Air Traffic Control (ATC) system built in C++ and designed to run on the QNX real-time operating system.
The system simulates aircraft, radar updates, operator commands, and collision-risk detection using multi-process communication and periodic real-time updates.
The system models the core responsibilities of an ATC center:
- Tracking aircraft positions in real time
- Exchanging messages between multiple processes (radar, aircraft, operator console)
- Predicting potential conflicts based on velocity vectors
- Logging system status and collision warnings
- Responding to operator commands (speed, altitude, position, prediction window)
- Maintains the shared, real-time state of all aircraft
- Receives radar updates and operator commands
- Stores aircraft objects in memory
- Triggers collision detection at regular intervals
- Logs system events and aircraft lists
- Periodically calculates updated aircraft positions
- Sends updates to the ComputerSystem
- Simulates real radar sweeps using timers
- One process per aircraft
- Stores speed, altitude, heading, and position
- Responds to operator commands routed through CommSystem
- Allows the operator to:
- Select an aircraft
- Change altitude, speed, or heading
- Modify the conflict prediction time window
- Sends commands through the CommSystem server
- Central message-routing server
- Receives operator commands
- Delivers them to the target aircraft process
- Isolates communication logic from core ATC logic
- Prints:
- Aircraft lists
- System logs
- Collision warnings (“WARNING”, “IMMINENT”)
- Updated periodically by the ComputerSystem
The system includes a predictive collision-risk algorithm:
- Uses aircraft positions and velocity vectors
- Computes predicted separation over a configurable horizon
- Default window: 180 seconds
- Produces:
- WARNING alerts
- IMMINENT alerts
- Logs each detection event with timestamps
MsgSend()/MsgReceive()for process-to-process commands- Pulses and timers for periodic updates
- Mutex-protected shared data
- Channel-based message routing
Air-Traffic-Control/
├── src/
├── Aircraft/
└── build/
- QNX SDP
- QCC or GCC toolchain
make./build/atc- Stable under increasing aircraft load
- Real-time updates maintained
- Constraints approached at ~60 aircrafts
- Mamadou Kaba
- Maïka Trépanier
- Lifu Zhang