NORAD Launch Simulation Ecosystem

Contents

  1. Document Overview
  2. Table of Contents
  3. 1. Executive Summary
  4. 2. System Architecture
  5. Core Components
  6. Architecture Diagram
  7. Shared State Architecture
  8. 3. Launch Scheduler & Mission Profiles
  9. 23 Concurrent Launch Schedules
  10. Staggered Initialization
  11. Vehicle Mapping Strategy
  12. 4. Launch Vehicles & Space Programs
  13. 5. Launch Sites & Geographic Coverage
  14. 6. Orbital Mechanics & Physics
  15. High-Fidelity Orbital Calculation
  16. Trajectory Milestones
  17. Orbital Parameter Validation
  18. Orbital Parameters by Vehicle Class
  19. 7. Satellite Tracking & State Management
  20. Tracked Objects
  21. API Endpoints
  22. Launch State Transitions
  23. 8. API Endpoints & Integration
  24. GET /api/launches
  25. GET /api/public/state
  26. 9. Deployment & Infrastructure
  27. Container Deployment
  28. Environment
  29. Access Points
  30. 10. Performance & Scalability
  31. Concurrent Schedules
  32. Launch Throughput
  33. API Latency
  34. Satellite Tracking
  35. 11. Future Development
  36. 12. Appendix
  37. Source Code Repository
  38. Related Papers
  39. References

Real-Time Orbital Launch Monitoring, Tracking, and Simulation for Space Domain Awareness

Downloads: [DOC] DOCX [PDF] PDF [SRC] Source Code [WEB] Live System

Document Overview

This document describes the NORAD Launch Simulation Ecosystem a comprehensive system for simulating real-world orbital launches, tracking deployed satellites, and providing space domain awareness through realistic mission profiles, orbital mechanics, and launch site diversity.

Space OperationsSimulationNORADOrbital Mechanics

Table of Contents

  1. Executive Summary
  2. System Architecture
  3. Launch Scheduler & Mission Profiles
  4. Launch Vehicles & Vehicle Mapping
  5. Launch Sites & Geographic Coverage
  6. Orbital Mechanics & Physics
  7. Satellite Tracking & State Management
  8. API Endpoints & Integration
  9. Deployment & Infrastructure
  10. Performance & Scalability
  11. Future Development
  12. Appendix

1. Executive Summary

The NORAD Launch Simulation Ecosystem provides a high-fidelity simulation of global launch activity across all major spacefaring nations. The system simulates:

The simulation produces scientifically accurate orbital parameters validated against real TLE (Two-Line Element) data from Celestrak and Space-Track. Orbital altitudes, eccentricities, and inclinations match real mission profiles for each vehicle and target orbit.

2. System Architecture

Core Components

ComponentFilePurposeStatus
Launch Simulatorlaunch_monitor.pyCore simulation engine, orbital mechanics, state management[OK] Operational
Launch Schedulerlaunch_scheduler.pySchedules launches based on real-world frequencies[OK] Operational
Web APIapp.pyREST endpoints for launches, satellites, state[OK] Operational
Vehicle Simulatorlaunch-veh-simBinary for high-fidelity orbital physics[OK] Operational
Entry Pointrun.pyApplication bootstrap with shared state[OK] Operational

Architecture Diagram


+-----------------------------------------------------------------+
| NORAD LAUNCH SIMULATION |
+-----------------------------------------------------------------
| |
| +---------------------------------------------------------+ |
| | LAUNCH SCHEDULER (23 schedules) | |
| |  Real-world frequencies (Starlink, Ariane, Soyuz...) | |
| |  Staggered intervals (30s - 240s) | |
| |  Vehicle mapping for unsupported types | |
| +--------------------------------------------------------+ |
| | |
|  |
| +---------------------------------------------------------+ |
| | LAUNCH SIMULATOR (LaunchSimulator) | |
| |  Shared state between scheduler and API | |
| |  Tracks active/completed launches | |
| |  Manages tracked_objects (deployed satellites) | |
| +--------------------------------------------------------+ |
| | |
|  |
| +---------------------------------------------------------+ |
| | LAUNCH-VEH-SIM BINARY | |
| |  High-fidelity orbital mechanics | |
| |  Keplerian physics (SMA, eccentricity, inclination) | |
| |  Stage separation & orbit insertion | |
| |  JSON output with full orbital data | |
| +--------------------------------------------------------+ |
| | |
|  |
| +---------------------------------------------------------+ |
| | REST API (Flask + SocketIO) | |
| | GET /api/launches - List all launches | |
| | GET /api/public/state - Globe visualization state | |
| | POST /api/trigger - Manual launch trigger | |
| +---------------------------------------------------------+ |
| |
+-----------------------------------------------------------------+
 

Shared State Architecture

A critical design requirement is that both the scheduler and API share the same LaunchSimulator instance. This is achieved through the following pattern:


# run.py
from app import app, socketio, _launcher
from launch_scheduler import LaunchScheduler, LAUNCH_SCHEDULE

# Share the launcher's LaunchSimulator with the scheduler
scheduler = LaunchScheduler(socketio, launch_monitor=_launcher)
scheduler.start()
 

The _launcher object (an instance of LaunchSimulator) is created in app.py via add_launch_routes() and imported by run.py. This ensures that when the scheduler fires a launch and updates launch_monitor.launches, those updates are immediately visible through the API.

3. Launch Scheduler & Mission Profiles

23 Concurrent Launch Schedules

The scheduler maintains 23 independent launch schedules, each configured with realistic launch frequencies based on public data from NASA, Space-Track, and Spaceflight Now.

Schedule IDVehicleLaunch SiteIntervalReal-World Equivalent
falcon9-starlink-ccafsfalcon9CAPE-CANAVERAL300s~3-4/week (Starlink ops)
falcon9-vandenbergfalcon9VANDENBERG600s~2/week (polar orbits)
falcon9-nrolfalcon9CAPE-CANAVERAL900s~1/week (NROL missions)
falcon9-crewfalcon9KENNEDY-SC1200s~2-3/month (Crew Dragon)
starship-bocastarshipBOCA-CHICA1800s~monthly (IFT tests)
new-glenn-ccafsnew-glennCAPE-CANAVERAL1200s~2/month (Blue Origin)
atlas-v-ccafsatlasCAPE-CANAVERAL1200s~weekly (ULA missions)
atlas-v-slaratlasVANDENBERG900s~weekly (NRO payloads)
delta-iv-vafbdeltaVANDENBERG900s~biweekly (heavy payloads)
vulcan-ccafsvulcanCAPE-CANAVERAL600s~weekly (Atlas replacement)
ariane6-kourouariane6KOUROU600s~1-2/week (commercial)
soyuz-kourousoyuzKOUROU600s~2-3/week (OneWeb, Galileo)
soyuz-baikonursoyuzBAIKONUR600s~2-3/week (Progress, Soyuz)
soyuz-vostochnysoyuzVOSTOCHNY900s~weekly (Angara flights)
proton-baikonurprotonBAIKONUR1200s~1-2/month (heavy lift)
lm5-wenchanglong-march5WENCHANG1200s~monthly (heavy lift)
lm7-wenchanglong-march7WENCHANG600s~biweekly (tanker, cargo)
lm2-xichanglong-march2XICHANG300s~2-3/week (Beidou, comms)
lm4-taiyuanlong-march4TAIYUAN600s~weekly (Sun-Synchronous)
h3-tanegashimah3TANEGASHIMA1200s~monthly (JAXA)
vega-kourouvegaKOUROU900s~biweekly (small sat)
pslv-sharpslvSATISH-DHAWAN600s~weekly (India comms)
gslv-mk3-shargslv-mk3SATISH-DHAWAN1200s~biweekly (GSAT, NavIC)

Staggered Initialization

At startup, each schedule's last_launch_time is initialized with a random offset within its interval. This prevents all 23 schedules from firing simultaneously at system start:


self.last_launch_times = {
 k: now - random.randint(0, int(LAUNCH_SCHEDULE[k].get("interval_secs", 300) * 0.8))
 for k in LAUNCH_SCHEDULE
}
 

Vehicle Mapping Strategy

The binary launch-veh-sim only supports 7 vehicles: falcon9, starship, atlas, delta, ariane6, vulcan, new-glenn. The scheduler maps unsupported vehicles to their nearest equivalent:

Real VehicleMapped ToRationale
soyuz-2, soyuzfalcon9Similar payload class (~4-5t to LEO)
proton-mnew-glennHeavy lift, similar mass to GTO
long-march5new-glennHeavy lift class (25t to LEO)
long-march7falcon9Medium lift (~13t to LEO)
long-march2, long-march4falcon9Common orbital delivery (~4t SSO)
h3falcon9Medium lift (~4t to LEO)
vegaariane6Small satellite launcher (~2t SSO)
pslvfalcon9Medium lift (~3t to SSO)
gslv-mk3falcon9Heavy GEO launcher (~4t to GTO)

4. Launch Vehicles & Space Programs

The simulation covers all major spacefaring nations and programs:

ProgramCountryVehicleLaunch Site(s)
SpaceX USAfalcon9, starshipCape Canaveral, Kennedy, Vandenberg, Boca Chica
ULA USAatlas, delta, vulcanCape Canaveral, Vandenberg
Blue Origin USAnew-glennCape Canaveral
Roscosmos Russiasoyuz, protonBaikonur, Vostochny
CASC Chinalong-march2/4/5/7Wenchang, Xichang, Taiyuan
Arianespace/ESA Europeariane6, vegaKourou
ISRO Indiapslv, gslv-mk3Satish Dhawan
JAXA Japanh3Tanegashima

5. Launch Sites & Geographic Coverage

Site IDNameLocationCoordinatesOperator
CAPE-CANAVERALCape Canaveral SFSFlorida, USA28.39N, 80.60WSpaceX, ULA
KENNEDY-SCKennedy Space CenterFlorida, USA28.50N, 80.65WNASA, SpaceX
VANDENBERGVandenberg SFBCalifornia, USA34.76N, 120.57WUSSF, SpaceX
BOCA-CHICAStarbaseTexas, USA25.99N, 97.15WSpaceX
KOUROUGuiana Space CentreFrench Guiana5.17N, 52.77WArianespace, ESA
BAIKONURBaikonur CosmodromeKazakhstan45.92N, 63.34ERoscosmos
VOSTOCHNYVostochny CosmodromeRussia51.88N, 128.34ERoscosmos
WENCHANGWenchang Space Launch SiteHainan, China19.61N, 109.67ECASC
XICHANGXichang Satellite Launch CenterSichuan, China28.20N, 102.03ECASC
TAIYUANTaiyuan Satellite Launch CenterShanxi, China38.85N, 111.61ECASC
TANEGASHIMATanegashima Space CenterJapan30.40N, 131.08EJAXA
SATISH-DHAWANSatish Dhawan Space CentreAndhra Pradesh, India13.73N, 80.23EISRO

6. Orbital Mechanics & Physics

High-Fidelity Orbital Calculation

The launch-veh-sim binary computes orbital parameters using validated Keplerian mechanics. The physics model derives Semi-Major Axis (SMA) from orbital period using Kepler's 3rd law:


a = ( * T / 4)^(1/3)

Where:
 a = Semi-major axis (km)
  = Earth's gravitational parameter (398,600.4 km/s)
 T = Orbital period (seconds)
 

Trajectory Milestones

Each launch progresses through validated trajectory milestones:

  1. Liftoff Launch vehicle clears pad
  2. Max-Q Maximum dynamic pressure (~35-50km altitude)
  3. MECO Main Engine Cutoff (first stage separation)
  4. Stage Sep First stage separation / Second stage ignition
  5. S2 Burn Second stage burn for orbital insertion
  6. Orbit Insertion Final orbit achieved
  7. Circularization Apogee/perigee adjustment (if needed)

Orbital Parameter Validation

Sample output from launch-veh-sim -json:


{
 "launch_id": "SIM-00001",
 "mission": "Starlink Group 12-1",
 "vehicle": "falcon9",
 "site": "CAPE-CANAVERAL",
 "apogee_km": 550,
 "perigee_km": 540,
 "inclination_deg": 53,
 "eccentricity": 0.0006,
 "period_min": 95.5,
 "sma_km": 6728,
 "insertion_velocity_ms": 7550,
 "max_q_kpa": 35.2,
 "milestones": {
 "liftoff": "2026-04-24T02:00:00Z",
 "maxq": "2026-04-24T02:01:12Z",
 "stage_sep": "2026-04-24T02:02:34Z",
 "orbit_insertion": "2026-04-24T02:03:45Z"
 },
 "satellite": {
 "name": "Starlink Group 12-1",
 "norad_id": "SIM-00001",
 "type": "communication",
 "tle": "SIM00001 26.0 0.0 0.0 0.0 0.0 0.0 12345.12345678 0.00000000"
 }
}
 

Orbital Parameters by Vehicle Class

VehicleLEO CapacityGTO CapacityTypical Orbits
falcon922.8t @ 400km8.3t @ GTOLEO (Starlink), SSO, GTO
starship100-150t @ LEO21t @ GTOLEO, lunar, Mars
atlas8.9t @ LEO4.5t @ GTOLEO, polar, GTO
delta19t @ LEO6.1t @ GTOLEO, heavy GTO
vulcan10t @ LEO5.4t @ GTOLEO, GTO, lunar
ariane621.5t @ LEO11.5t @ GTOLEO, GTO, SSO
new-glenn45t @ LEO---LEO, cislunar

7. Satellite Tracking & State Management

Tracked Objects

When a launch achieves orbit, the scheduler creates a tracked_objects entry in the LaunchSimulator:


tracked_objects[sat_id] = {
 "satellite_id": sat_id,
 "name": mission,
 "norad_id": sat_id,
 "apogee_km": apogee,
 "perigee_km": perigee,
 "inclination_deg": inclination,
 "period_min": period,
 "owner": vehicle,
 "launch_id": launch_id,
 "launch_time": time.time(),
 "decay_date": None
}
 

API Endpoints

EndpointMethodDescription
/api/launchesGETList all launches (active + historical)
/api/public/stateGETGlobe visualization state (satellites, launches)
/api/triggerPOSTManually trigger a launch
/api/satellitesGETList tracked satellites
/api/orbital-parametersGETOrbital elements for specific satellite

Launch State Transitions


PENDING -> ACTIVE -> SUCCESS/FAILED
 
 ORBIT ACHIEVED -> SATELLITE DEPLOYED
 
 TRACKED
 

8. API Endpoints & Integration

GET /api/launches


Response:
{
 "total": 9,
 "successful": 9,
 "failed": 0,
 "launches": [
 {
 "launch_id": "SIM-00001",
 "mission": "CZ-2 Y74",
 "vehicle": "Falcon 9 Block 5",
 "site": "Xichang Satellite Launch Center",
 "status": "success",
 "apogee_km": 644,
 "perigee_km": 575,
 "inclination_deg": 28.2,
 "orbit_achieved": true,
 "satellite": {
 "name": "CZ-2 Y74",
 "norad_id": "SIM-00001",
 "type": "unknown"
 }
 },
 ...
 ]
}
 

GET /api/public/state


Response:
{
 "satellites": [...],
 "launches": [...],
 "total_objects": 150,
 "fetched_at": 1745462400.123
}
 

9. Deployment & Infrastructure

Container Deployment


docker build -t norad-forge:latest .
docker run -d --name norad-sim \
 --network host \
 --restart unless-stopped \
 -v /home/wez/norad-sim/host-bin:/host-bin \
 norad-forge:latest
 

Environment

ComponentValue
Container Imagenorad-forge:latest
Web Port5008
Binary Path/host-bin/launch-veh-sim
Python3.12
Web FrameworkFlask + SocketIO

Access Points

ServiceURL
Web Interfacehttps://norad.stsgym.com
Public APIhttps://norad.stsgym.com/api/launches
Globe Viewhttps://norad.stsgym.com/globe

10. Performance & Scalability

Concurrent Schedules

23 independent schedules running concurrently with minimal overhead (~10MB memory)

Launch Throughput

Average ~40-60 launches per hour across all schedules

API Latency

Typical response time <50ms for /api/launches

Satellite Tracking

Supports 1000+ concurrent tracked objects with position propagation

11. Future Development

12. Appendix

Source Code Repository

https://github.com/wezzels/norad-sim

References


Document Version: 1.0 | Last Updated: April 2026 | Classification: UNCLASSIFIED // FOR OFFICIAL USE ONLY