Skip to content

Repository files navigation

OrbitOps — Intelligent Satellite Mission Planning & Operations Platform

A state-of-the-art, AI-powered mission control platform for satellite fleet management, constraint-based scheduling, resource intelligence, and ground station optimization — built for real-world space operations.


Table of Contents

  1. Overview
  2. Problem Statement
  3. Proposed Solution
  4. Features
  5. System Architecture
  6. Folder Structure
  7. File-by-File Explanation
  8. Tech Stack
  9. Algorithms Used
  10. Data Structures Used
  11. Design Patterns
  12. Research Papers and References
  13. Installation
  14. Configuration
  15. How to Use
  16. API Documentation
  17. Database Schema
  18. ML Model Training Pipeline
  19. Security
  20. Performance Analysis
  21. Testing
  22. Deployment
  23. Limitations
  24. Future Improvements
  25. Troubleshooting
  26. License
  27. Contributors
  28. Acknowledgements
  29. Conclusion

Overview

OrbitOps is a full-stack, AI-assisted satellite mission control platform. It provides space operations teams with a unified interface to:

  • Plan and schedule satellite missions with priority-based conflict resolution
  • Monitor satellite telemetry (battery, temperature, signal strength, CPU, memory) in real time
  • Optimize ground station selection using multi-criteria scoring strategies
  • Predict battery depletion and resource risk using trained ML models (GradientBoosting + RandomForest)
  • Generate AI recommendations that identify critical fleet issues proactively
  • Export PDF and Excel operational reports

The platform follows a clean React + FastAPI + PostgreSQL architecture with a dedicated ML training pipeline (/training) and pre-trained model artifacts (/trained_models). It seeds a fully operational demo dataset on first run — 20 satellites, 15 global ground stations, 14 payloads, and 100 missions — making it immediately usable without external data.


Problem Statement

What Real-World Problem Does This Solve?

Modern satellite operations involve managing dozens to hundreds of satellites simultaneously, each with:

  • Strict resource budgets: battery (solar + eclipse cycles), onboard memory, CPU, payload power
  • Time-constrained visibility windows: a satellite in LEO (~400 km) has windows of only 5–10 minutes over any single ground station
  • Overlapping mission demands: multiple missions competing for the same satellite or ground station
  • Silent failure risk: a battery critically draining or thermal threshold being breached during a mission can cause permanent hardware damage or mission failure

Why Is This Important?

Without intelligent tooling, operators must manually cross-reference telemetry across multiple dashboards, resolve scheduling conflicts by hand, and react to battery/thermal emergencies only after they occur. This is operationally unsafe and does not scale beyond small fleets.

Who Faces This Problem?

  • Commercial satellite operators (fleet management companies)
  • Government space agencies (NASA, ESA, ISRO)
  • Academic and research satellite teams (CubeSat operators)
  • Ground segment software engineers building mission control systems

Existing Limitations

  • No predictive intelligence: traditional systems alert only after a threshold is breached, not before
  • Manual conflict resolution: time-consuming and error-prone for large fleets
  • Siloed tooling: separate systems for telemetry, scheduling, and planning without a unified workflow
  • No data continuity: CRUD actions are not persisted back to datasets for ML retraining

Proposed Solution

OrbitOps addresses these limitations through a three-layer architecture:

1. Intelligent Scheduling Layer

A Branch and Bound Scheduler (BranchAndBoundScheduler.py) backed by a DynamicPriorityEngine sorts and schedules missions based on three weighted factors: base mission criticality (40%), time urgency (40%), and real-time resource availability (20%). A background job re-runs this every 15 minutes, and priority recalculation runs every 5 minutes via APScheduler.

2. ML-Powered Resource Intelligence Layer

Two trained models power real-time predictions:

  • Battery Prediction (GradientBoostingRegressor, MAE ≈ 0.85 pp, R² = 0.9967): Given current satellite telemetry, predicts the remaining battery percentage at the end of the mission window and generates a multi-hour forecast trajectory.
  • Resource Risk Classifier (RandomForestClassifier, 96% accuracy, macro F1 = 0.957): Classifies each satellite's current telemetry profile as LOW, MEDIUM, or HIGH risk, enabling proactive operator intervention.

3. Ground Station Optimization Layer

A GroundStationOptimizer evaluates every available ground station using multi-criteria scoring across six strategies (Minimum Latency, Maximum Coverage, Load Balancing, Minimum Cost, Energy Efficient, Balanced) and returns a ranked recommendation with rejected stations and their reasons.

End-to-End Workflow

Operator opens UI → AppContext loads live data from FastAPI →
ML models predict battery/risk → Rule engine generates recommendations →
Scheduler resolves conflicts → Operator approves optimized schedule →
Dataset sync writes back to CSV for future model retraining

Features

Core Features

Feature Description Key Source File(s)
Mission Operations Dashboard Real-time fleet overview: active satellites, missions, alerts, resource gauges pages/Dashboard.tsx
Mission Planning Create, edit, duplicate, delete missions with full metadata pages/MissionPlanning.tsx, services/mission.py
Mission Scheduler Visual time-slot scheduler, today's schedule, calendar view pages/MissionScheduler.tsx
Constraint-Based Optimization Branch and Bound conflict resolution + ground station optimizer optimization/BranchAndBoundScheduler.py, optimization/GroundStationOptimizer.py
Battery Prediction GradientBoosting model predicts end-of-mission battery %, multi-hour forecast services/resource_intelligence/battery_prediction.py
Resource Risk Classification RandomForest classifies satellite telemetry as LOW/MEDIUM/HIGH risk services/resource_intelligence/inference.py
AI Recommendations Rule + model pipeline generates prioritized, actionable fleet recommendations services/resource_intelligence/recommendation_engine.py
Satellite Operations Telemetry visualization: battery, temperature, signal strength, power, CPU pages/SatelliteOperations.tsx
Ground Station Planner Multi-criteria ground station selection and optimization pages/GroundStationPlanner.tsx, optimization/GroundStationOptimizer.py
Payload Planner Assign, schedule, and monitor satellite payloads pages/PayloadPlanner.tsx
Resources Dashboard Fleet-wide utilization table with AI risk badges and battery forecasts pages/Resources.tsx
Analytics Charts, trends, and performance analytics across the fleet pages/Analytics.tsx
Reports Generate PDF and Excel operational reports for missions and alerts pages/Reports.tsx, services/reportGenerator.ts
Settings UI theme, constraint configuration, system preferences pages/Settings.tsx
Auto-seeded Demo Data 20 satellites, 15 ground stations, 14 payloads, 100 missions on first boot database/database.py
Dataset Sync Mission and telemetry actions persist back to CSV for future ML retraining services/dataset_manager.py
Background Scheduler APScheduler jobs: priority recalc every 5 min, optimization every 15 min jobs/scheduler.py
Health Check Endpoint GET /health returns service status main.py
OpenAPI Docs Auto-generated Swagger UI at /docs FastAPI built-in
Optional LLM Assistant Anthropic Claude integration for natural-language recommendation explanations services/ai/llm_service.py

System Architecture

High-Level Architecture

flowchart TD
    subgraph Frontend["Frontend — React / TypeScript / Vite"]
        UI[Pages & Components]
        CTX[AppContext — Global State]
        SVC[API Service Layer — Axios]
        RI[Resource Intelligence API]
        RPT[Report Generator — jsPDF / XLSX]
    end

    subgraph Backend["Backend — FastAPI / Python"]
        MAIN[main.py — FastAPI App]
        API[API Router /api]

        subgraph Endpoints["Endpoints"]
            E1[/missions]
            E2[/infrastructure]
            E3[/telemetry]
            E4[/alerts]
            E5[/recommendations]
            E6[/resources]
            E7[/optimization/ground-stations]
            E8[/maintenance/request]
        end

        subgraph Services["Service Layer"]
            MS[MissionService]
            IS[InfrastructureService]
            DS[DatasetManager]
            AI_SVC[LLM Service — Anthropic]
        end

        subgraph MLLayer["ML / Intelligence Layer"]
            REC[RecommendationEngine]
            INF[Inference — ResourceIntelligenceModels]
            BAT[BatteryPrediction]
            RU[ResourceUtilization]
            FE[FeatureEngineering]
        end

        subgraph Optimization["Optimization Layer"]
            BB[BranchAndBoundScheduler]
            PE[DynamicPriorityEngine]
            GSO[GroundStationOptimizer]
            TS[TaskSplitter]
            CS[ConstraintSolver]
        end

        JOBS[APScheduler Jobs — 5min / 15min]
    end

    subgraph Data["Data Layer"]
        DB[(PostgreSQL — Supabase / SQLite)]
        CSV[CSV Datasets — datasets/raw/]
        MODELS[Trained Models — .pkl]
    end

    UI --> CTX
    CTX --> SVC
    SVC --> API

    MAIN --> API
    API --> Endpoints
    Endpoints --> Services
    Endpoints --> MLLayer
    Endpoints --> Optimization

    Services --> DB
    Services --> CSV
    MLLayer --> MODELS
    Optimization --> DB

    JOBS --> BB
    JOBS --> PE
Loading

Tech Stack

Category Technology Version Usage
Frontend Language TypeScript 5.6 Strongly typed React components
Frontend Framework React 19.0 SPA with hooks and context
Build Tool Vite 5.4 Fast dev server and production bundler
CSS Framework Tailwind CSS 3.4 Utility-first styling
Backend Language Python 3.11+ Backend application logic
Backend Framework FastAPI 0.109 Async REST API
ORM SQLAlchemy (AsyncIO) 2.0 Async database access
Background Jobs APScheduler 3.10 Async interval-based background tasks
ML — Regression scikit-learn GradientBoostingRegressor 1.4 Battery prediction
ML — Classification scikit-learn RandomForestClassifier 1.4 Resource risk classification
Database PostgreSQL / SQLite 14+ Primary relational data store

Installation & Getting Started

Prerequisites

  • Python 3.11+
  • Node.js 18+ & npm 9+
  • PostgreSQL (or local SQLite fallback)

Backend Setup

cd backend

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the development server
python -m uvicorn app.main:app --port 8000 --reload

Access API Swagger documentation at http://localhost:8000/docs.

Frontend Setup

cd frontend

# Install dependencies
npm install

# Start development server
npm run dev

Open application at http://localhost:5173.


API Documentation Overview

Base URL: http://localhost:8000/api

Method Endpoint Description
GET /health Liveness check
GET /missions List satellite missions
POST /missions Create a new mission
PUT /missions/{id} Update existing mission
DELETE /missions/{id} Delete mission
GET /infrastructure/satellites Get satellite fleet telemetry
GET /infrastructure/ground-stations Get ground station telemetry
POST /optimization/ground-stations Run multi-criteria ground station optimization
GET /resources Get fleet resource metrics & predictions
GET /recommendations Get AI recommendations
POST /maintenance/request Submit equipment maintenance request

Testing

Run unit & integration test suite:

python -m pytest tests/ -o pythonpath=backend

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages