Project Info
The Problem Tens of thousands of satellites orbit Earth today. SpaceX alone plans 1 million by 2030. At that scale, ground-based collision avoidance doesn't work, especially when communications and GPS jamming are expanding across Ukraine, Taiwan, Iran, and Myanmar, now affecting commercial satellites. The constraints: Satellites can't wait for ground commands when collisions are imminent Communication windows are limited or denied in contested regions GPS is unavailable or jammed Collision windows are measured in minutes, not hours Current satellite operators rely on ground stations for collision warnings and maneuver commands. This doesn't scale to mega-constellations in communication-denied environments. The Solution StarGuard provides autonomous collision avoidance and threat assessment using only onboard star tracker cameras—no ground link or GPS required. Three autonomous capabilities: Collision Detection - YOLOv8 detects satellites/debris in star tracker imagery, BoT-SORT tracks objects across frames, UKF estimates trajectories from angles-only measurements Collision Avoidance - Convex optimization computes fuel-optimal evasive maneuvers Threat Assessment - NVIDIA Cosmos VLM classifies satellite types and assesses maneuver intent All processing happens onboard via edge compute using existing spacecraft hardware (star trackers). How It Works 1. Orbital Simulation (Training Data Generation) Used Tensorgator (GPU-accelerated Keplerian propagator) to simulate 10,000+ satellite constellations and generate synthetic training data for sensors. Built a pinhole camera model to render 256×256 star tracker images from the satellite's frame, auto-labeled via brightness thresholding—satellites appear as bright spots against space. 2. Computer Vision Pipeline (Detection & Tracking) Fine-tuned YOLOv8 for tiny satellite detection (3-5 pixel objects), integrated BoT-SORT for persistent tracking across frames. Extracts pixel coordinates → bearing angles (elevation/azimuth). 3. Angles-Only Navigation (State Reconstruction) Reconstructs full 6-DOF state from sequential images: 1 photo → bearing angles 2 photos → bearing + depth → position vector 3 photos → finite difference → position + velocity 4. State Estimation (Trajectory Prediction) Unscented Kalman Filter fuses orbital dynamics (Keplerian propagation) with star tracker measurements for noise-resistant trajectory estimates and collision prediction. 5. Collision Avoidance (Maneuver Planning) Convex optimization solver (CVXPY) computes minimum-ΔV maneuvers subject to collision constraints, fuel budgets, and thrust limits. 6. Threat Assessment (Object Classification) NVIDIA Cosmos Reason VLM via vLLM provides real-time satellite classification from proximity operations imagery—identifies satellite types and assesses maneuver intent. Technical Challenges & Solutions Angles-Only Navigation: Reconstructing 3D trajectories from 2D bearing angles is ill-posed. Solved by leveraging temporal information across multiple frames and constraining solutions with orbital dynamics. GPU Orbital Mechanics: Kepler's equation (M = E - e sin E) requires iterative numerical methods. Optimized Newton-Raphson for CUDA with vectorized operations across 10k+ satellites—reducing simulation time from hours to seconds. Tiny Object Detection: Satellites appear as 3-5 pixel bright spots in star tracker imagery. Required careful YOLOv8 hyperparameter tuning and augmentation strategies for robust detection. Real-Time Onboard Performance: Star tracker processing, detection, tracking, and maneuver planning must happen in real-time onboard with limited compute. Achieved through efficient model selection, GPU acceleration, and edge compute optimization. Key Results End-to-end autonomy: Raw pixels → executed safety-constrained maneuvers with no human in the loop Fully automated pipeline: Zero manual labeling—synthetic data generation with auto-labeling Scalability: Handles mega-constellations (10,000+ satellites) on consumer GPUs Production-ready: Uses only existing spacecraft hardware (star trackers) Communication-independent: Operates without GPS or ground contact Impact StarGuard enables satellites to operate autonomously in communication-denied environments—critical for mega-constellations, commercial satellites over contested regions, and national security missions where ground contact is limited or unavailable. Technical Insights GPU parallelization transforms orbital simulation from hours to seconds Sequential observations + dynamics constraints enable angles-only navigation Star tracker imagery is ideal for object detection—high contrast, known background Convex optimization guarantees globally optimal collision avoidance solutions VLMs can run efficiently enough for real-time onboard inference and complex threat assessments What's Next Embedded deployment on radiation-hardened flight computers Multi-sensor fusion (star tracker + IMU + magnetometer) Cooperative avoidance protocols for inter-satellite coordination Hardware-in-the-loop testing on satellite testbeds
TreeSats 🛰️🌲
Defending Space Sovereignty
Satellites that protect themselves: end-to-end autonomous satellite collision avoidance in communication-denied environments
TreeSats enables satellites to detect collisions, execute evasive maneuvers, and assess threats—all without GPS or ground contact. Using only star tracker cameras (standard spacecraft hardware), TreeSats provides autonomous protection in contested space.
The Problem
Thousands of satellites orbit Earth today. SpaceX alone plans to deploy 1 million by 2030. Meanwhile, GPS and communications jamming is expanding across Eastern Europe, Southeast Asia, and Myanmar—affecting even commercial satellites. Ground station control isn't viable at this scale in contested regions.
Satellites are no longer passive—they maneuver unpredictably, creating collision risks with no margin for error.
The Solution:
TreeSats' Starguard system provides three autonomous capabilities:
-
Collision Detection - YOLOv8 + BoT-SORT identify satellites and debris in star tracker imagery, UKF estimates trajectories from angles-only measurements
-
Collision Avoidance - Convex optimization computes fuel-optimal evasive maneuvers for non-adversarial and adversarial satellites
- Threat Assessment - NVIDIA Cosmos VLM conducts a satellite threat assessment for satellites in close proximity orbits
All processing happens onboard using existing star tracker cameras. No GPS. No ground link required.
Quick Start
# Install dependencies
pip install -r requirements.txt
# Generate synthetic training data (orbital sim + star tracker images)
python main.py --mode train --duration 0.5 --visualize
# Auto-label the generated images
cd sat/computer_vision
python auto_label.py batch data/images/train/ data/labels/train/
# Train YOLOv8 satellite detector
python train.py --epochs 150 --batch 64
# Run full pipeline (simulate → detect → track → avoid)
cd ../..
python main.py --mode pipeline
Key Features
- Communication-Independent: Operates without GPS or ground contact using only star tracker imagery
- Autonomous: Real-time collision detection, avoidance, and threat assessment without ground intervention
- Scalable: GPU acceleration handles 10,000+ satellites simultaneously
- Mission-Aware: Fuel-optimal maneuvers via convex optimization
Tech Stack
| Component | Technology | Purpose |
|---|---|---|
| Orbital Propagation | Tensorgator (GPU) | High-fidelity Keplerian mechanics for 10k+ satellites |
| Object Detection | YOLOv8 | Detect satellites/debris in star tracker images |
| Object Tracking | BoT-SORT | Persistent IDs across frames for trajectory extraction |
| State Estimation | Unscented Kalman Filter | Fuse measurements with orbital dynamics |
| Maneuver Planning | CVXPY | Convex optimization for collision avoidance |
| Classification | NVIDIA Cosmos VLM | Identify satellite types and assess threats |
Repository Structure
treesats/
├── main.py # Entry point (train/pipeline modes)
├── sim/ # GPU orbital simulation
│ ├── simulate.py # Tensorgator propagation
│ └── star_tracker/ # Camera rendering
├── sat/
│ ├── computer_vision/ # YOLOv8 detection + tracking
│ │ ├── train.py
│ │ ├── auto_label.py
│ │ └── TRAINING.md # Complete training guide
│ └── control/ # Collision avoidance + GNC
├── treesats_proximity/ # VLM threat assessment
└── flyby_data/ # Test imagery (Cassini, TIE, etc.)
Documentation
- Training Guide - YOLOv8 training for satellite detection
- Auto-Labeling Guide - Automated dataset generation
- Presentation Slides - Full system overview
Detailed Technical Overview
How Starguard Works
1. Detection Pipeline
Star trackers are attitude sensors present on virtually all spacecraft. TreeSats repurposes them for threat detection:
Star Tracker Image → YOLOv8 Detection → BoT-SORT Tracking → Bearing Angles
- Filters out background stars (known catalog)
- Detects moving objects as bright spots
- Assigns persistent track IDs
- Extracts pixel coordinates → elevation/azimuth angles
2. Angles-Only Navigation
From sequential star tracker images, TreeSats reconstructs full 6-DOF state:
| Images | Information Extracted |
|---|---|
| 1 photo | Bearing angles (el, az) |
| 2 photos | Bearing + depth → Position vector |
| 3 photos | Finite difference → Position + Velocity |
Output: State vector x = [x, y, z, ẋ, ẏ, ż] in ECI frame
3. State Estimation (UKF)
An Unscented Kalman Filter fuses two information sources:
- Dynamics Model: Keplerian orbital propagation (
M = E - e sin E) - Measurements: Position/velocity from star tracker angles
This provides filtered, noise-resistant state estimates for collision prediction.
4. Collision Detection
Forward-propagate filtered trajectories to compute:
- Closest approach distance (miss distance)
- Time to closest approach
- Probability of collision (from covariance)
If risk exceeds threshold → trigger autonomous maneuver.
5. Evasive Maneuvers
Convex optimization (CVXPY) solves for minimum ΔV subject to:
- Collision avoidance constraint (minimum safe distance)
- Fuel budget limit
- Thrust magnitude/direction limits
- Mission constraints (maintain orbit parameters)
Output: Time-optimal thrust profile for safe evasion.
GPU Orbital Simulation
TreeSats uses Tensorgator (GPU-accelerated Keplerian propagator) to simulate 10,000+ satellites:
# Solve Kepler's equation: M = E - e sin E
# Distribute across 10k satellites on CUDA cores
positions, velocities = propagate_constellation(
n_sats=10000,
duration_hours=24,
dt_seconds=10
)
Performance: 10,000 satellites × 8,640 timesteps (24h @ 10s) in seconds on GPU vs. hours on CPU.
Star Tracker Rendering
Pinhole camera model generates synthetic 256×256 images:
- Project satellite positions into camera frame (RTN → body frame)
- Apply perspective projection with field-of-view
- Render as bright dots on black background
- Save as training images
Auto-labeling: Brightness thresholding automatically generates YOLO bounding boxes from ground truth positions—no manual annotation required.
Computer Vision Pipeline
Training Workflow
# 1. Generate synthetic data
python main.py --mode train --duration 0.5 --visualize
# 2. Auto-label (brightness thresholding)
cd sat/computer_vision
python auto_label.py batch data/images/train/ data/labels/train/
# 3. Validate dataset
python prepare_data.py validate
# 4. Train YOLOv8
python train.py --epochs 150 --batch 64 --model yolov8m
Inference
from sat.computer_vision import detect_single, track
# Single image detection
result = detect_single("star_tracker_image.jpg")
print(f"Detected {result['count']} objects")
# Video tracking
results = track("star_tracker_sequence.mp4", tracker="botsort.yaml")
Output: Bounding boxes + persistent track IDs + pixel coordinates
VLM Threat Assessment
NVIDIA Cosmos Reason (served via vLLM) classifies satellites from imagery:
cd treesats_proximity
python assessment.py flyby_data/cassini/cassini.mp4
Identifies:
- Satellite type (Cassini spacecraft, communications sat, etc.)
- Object class (active satellite vs. debris vs. fairing)
- Threat level based on maneuver capability
vLLM provides high-throughput, low-latency inference for the vision-language model, enabling real-time proximity threat assessment onboard satellites.
Supports images, image sequences, and video (mp4/avi/mov).
Demonstration Scenarios
Chaser-Evader
- Chaser actively pursues target
- Evader (your satellite) detects and autonomously evades
- Real-time trajectory prediction enables proactive response
Multi-Object Tracking
- Simultaneous tracking of multiple threats
- Prioritized risk scoring (closest approach, time-to-collision)
- Coordinated maneuvers to avoid multiple objects
Collision Avoidance
- Forward propagate trajectories
- Predict collisions before they occur
- Compute fuel-optimal avoidance maneuver
Applications
Commercial Space
- Starlink, OneWeb, and mega-constellations
- Earth observation satellites
- Communications satellites
National Security
- Reconnaissance satellites in communication-denied regions
- Resilient operations in contested environments
- Autonomous collision detection, avoidance, and threat assessment
Space Situational Awareness
- Orbital debris tracking
- Traffic management for crowded orbits
- Collision warning systems
Team
- Sid Anantha - SpaceX Starship GNC
- Rahul Ayanampudi - Northrop Grumman GNC/Physical AI
- Lundeen Cahilly - Stanford CS, Incoming GNC @ K2 Space
- Raj Thapliyal - Defence Science Org. - Satellite Technology & Research / NUS ML
Roadmap
- Embedded deployment (spacecraft flight computer)
- Multi-sensor fusion (star tracker + IMU + magnetometer)
- Cooperative avoidance (inter-satellite coordination)
- Hardware-in-the-loop testing
- Flight software integration
Analysis
View
Metric
- 36
- 4
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- PythonIn code
- PyTorchClaimed
1 of 2 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
263 KB
Source files
35
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
lundeen06/treesats
75 files · 166.9 MB · @ 411bfff
Structure
Application logic
31 files · 41%Domain rules, services and shared utilities.
+2 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python89%
- Markdown10%
- YAML1%
- Shell0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 9- cvxpy
- dotenv
- matplotlib
- numpy
- opencv-python
- requests
- rich
- tensorgator
- tqdm
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.