National Space Hackathon 2026 | Indian Institute of Technology, Delhi
Orbital Debris Avoidance & Constellation Management System
Project AETHER (Autonomous Evasion, Tracking, Heuristic Engine for Resilient orbits) is a full-stack system that autonomously manages a constellation of 50+ LEO satellites navigating through 10,000+ tracked debris objects. It ingests orbital telemetry, predicts collisions up to 24 hours ahead, plans and executes fuel-optimal evasion maneuvers, and returns satellites to their operational slots β all while respecting real-world constraints like communication blackouts, thruster cooldowns, and finite propellant budgets.
- J2-perturbed RK4 orbital propagation β Numba JIT-compiled for 10,000 objects in ~100ms
- KD-tree conjunction detection β O(N log N) spatial screening with coarse-then-fine TCA refinement
- 6-gate maneuver validation β cooldown, LOS, signal delay, fuel, max-ΞV, satellite existence
- Blind conjunction handling β pre-uploads evasion sequences before satellite enters blackout
- Autonomous station-keeping β drift monitoring, recovery burn scheduling, uptime tracking
- EOL management β auto-schedules graveyard orbit at β€5% fuel
- 3D WebGL dashboard β Three.js Earth globe with InstancedMesh debris cloud at 60 FPS
- Python 3.11+
- Node.js 20 LTS
- Docker Desktop (for submission)
docker build -t acm-nsh2026 .
docker run -p 8000:8000 acm-nsh2026Open http://localhost:8000 β both API and dashboard served on the same port.
Terminal 1 β Backend:
pip install -r requirements.txt
python scripts/generate_initial_data.py
python -m uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000Terminal 2 β Frontend:
cd frontend
npm install
npm run devBackend: http://localhost:8000
Frontend: http://localhost:5173 (auto-proxies /api to backend)
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/telemetry |
Ingest orbital state vectors for satellites and debris |
POST |
/api/maneuver/schedule |
Schedule an evasion + recovery burn sequence |
POST |
/api/simulate/step |
Advance simulation time by N seconds |
GET |
/api/visualization/snapshot |
Compressed state for frontend rendering |
curl -X POST http://localhost:8000/api/telemetry \
-H "Content-Type: application/json" \
-d '{
"timestamp": "2026-03-12T08:00:00.000Z",
"objects": [
{
"id": "DEB-99421", "type": "DEBRIS",
"r": {"x": 4500.2, "y": -2100.5, "z": 4800.1},
"v": {"x": -1.25, "y": 6.84, "z": 3.12}
}
]
}'curl -X POST http://localhost:8000/api/simulate/step \
-H "Content-Type: application/json" \
-d '{"step_seconds": 3600}'βββ Dockerfile # ubuntu:22.04 base, exposes port 8000
βββ docker-compose.yml # Optional convenience wrapper
βββ requirements.txt # Python dependencies
βββ README.md
β
βββ backend/
β βββ main.py # FastAPI app β all 4 API endpoints
β βββ config.py # Physical constants from problem statement
β βββ models.py # Pydantic request/response schemas
β βββ physics/
β β βββ propagator.py # RK4 + J2 with Numba JIT
β β βββ coordinates.py # ECI β ECEF β Lat/Lon/Alt
β β βββ maneuver.py # RTN frame, ΞV planning, Tsiolkovsky
β βββ engine/
β β βββ state_manager.py # In-memory NumPy state store
β β βββ conjunction.py # KD-tree spatial indexing + TCA search
β β βββ scheduler.py # Constraint-validated maneuver queue
β β βββ station_keeping.py # Slot drift monitoring + recovery
β β βββ ground_stations.py # Line-of-sight + visibility windows
β βββ utils/
β β βββ logger.py # Structured JSON event logging
β β βββ data_loader.py # TLE β ECI conversion utilities
β βββ data/
β βββ ground_stations.csv # 6 ground stations from problem statement
β
βββ frontend/
β βββ package.json # React 18, Three.js, Recharts, D3
β βββ vite.config.js # Vite + API proxy
β βββ src/
β βββ App.jsx # Dashboard grid layout
β βββ components/
β β βββ Globe3D.jsx # 3D Earth + satellites + debris cloud
β β βββ BullseyePlot.jsx # Polar conjunction proximity chart
β β βββ FuelHeatmap.jsx # Fleet propellant status grid
β β βββ ManeuverGantt.jsx # Timeline with burns + cooldowns
β β βββ CDMList.jsx # Conjunction warning list
β β βββ SatellitePanel.jsx# Selected satellite detail view
β β βββ StatusBar.jsx # Header with time + sim controls
β βββ hooks/
β βββ useSnapshot.js # API polling hook
β
βββ scripts/
β βββ generate_initial_data.py # Generate synthetic test constellation
β
βββ docs/
βββ technical_report.tex # LaTeX technical report
J2-perturbed two-body equations integrated via RK4 (h = 10s):
dΒ²r/dtΒ² = -(ΞΌ/|r|Β³)Β·r + a_J2
a_J2 = (3/2)Β·J2Β·ΞΌΒ·RΒ²_E/|r|β΅ Β· [x(5zΒ²/rΒ² - 1), y(5zΒ²/rΒ² - 1), z(5zΒ²/rΒ² - 3)]
Constants: ΞΌ = 398600.4418 kmΒ³/sΒ², R_E = 6378.137 km, Jβ = 1.08263Γ10β»Β³
- Build KD-tree over debris positions β O(N log N)
- Query 500 km screening ball per satellite β O(k) candidates
- Coarse propagation at 60s steps over 24h β find TCA neighborhood
- Fine refinement at 1s steps in Β±120s window β precise TCA and miss distance
- Classify: CRITICAL (<100m), RED (<1km), YELLOW (<5km)
Tsiolkovsky equation: Ξm = m_current Β· (1 - e^(-|ΞV| / (Isp Β· gβ)))
Where: Isp = 300s, gβ = 9.80665 m/sΒ², initial fuel = 50 kg, dry mass = 500 kg
| Constraint | Value |
|---|---|
| Max ΞV per burn | 15 m/s (0.015 km/s) |
| Thruster cooldown | 600 seconds |
| Signal delay | 10 seconds |
| Station-keeping box | 10 km spherical radius |
| EOL fuel threshold | 5% of initial (2.5 kg) |
| Collision threshold | 100 meters (0.1 km) |
| Criterion | Weight | Our Approach |
|---|---|---|
| Safety Score | 25% | Auto-evasion at 2 km safety margin; blind-conjunction pre-upload |
| Fuel Efficiency | 20% | Transverse burns (most efficient); early detection reduces ΞV |
| Constellation Uptime | 15% | Auto recovery burns; drift monitoring; exponential penalty tracking |
| Algorithmic Speed | 15% | KD-tree O(N log N); Numba parallel propagation; coarse/fine TCA |
| UI/UX & Visualization | 15% | 3D WebGL globe; 60 FPS; all 4 required visualization modules |
| Code Quality & Logging | 10% | Modular architecture; JSON event logs; Pydantic-validated API |
| Name | Role |
|---|---|
| Member 1 | Backend Physics Engine |
| Member 2 | Conjunction Detection & Maneuver Planning |
| Member 3 | Frontend Visualization |
| Member 4 | Integration, Docker, Documentation |
MIT License. See LICENSE for more details.
- Indian Institute of Technology, Delhi β for hosting the National Space Hackathon 2026
- NASA/CelesTrak β for public orbital element data
- Three.js / React Three Fiber β for the 3D rendering framework
- SciPy β for spatial indexing algorithms