tpt-system-zero

Rust

First-principles spacecraft navigation & control library in Rust — orbital mechanics, J2-J4 perturbations, Extended Kalman Filter, multi-object tracking, Lambert trajectory solver & autonomous flight control.

0 stars0 forks0 watchersMIT License
astrodynamicskalman-filternavigationopen-sourceorbital-mechanicsrustsimulationspacespacecrafttrajectory-optimization

Languages

Rust99.3%Dockerfile0.7%
README

TPT System Zero

A comprehensive first principles system for autonomous space navigation, tracking, and control.

Overview

TPT (Tracking, Propulsion, Trajectory) System Zero provides a complete stack for spacecraft autonomy, built from fundamental physics laws without reliance on external simulation suites. From orbital mechanics to sensor fusion, it enables end-to-end mission design.

Features

Core Dynamics

  • Newtonian gravity, J2-J4 perturbations, atmospheric drag, solar radiation pressure
  • Runge-Kutta integration with multi-body ephemerides
  • Support for controlled propulsion and disturbances

Estimation and Tracking

  • Multi-object Extended Kalman Filter (EKF) with full covariance propagation
  • Probabilistic data association (PDA) for measurement assignment
  • Conjunction assessment for collision avoidance
  • Scalable to 10,000+ space objects

Navigation and Control

  • Attitude control via quaternion kinematics (3-axis stabilization)
  • Optimal trajectory planning (Lambert problem, patched conics)
  • Fuel optimization (Tsiolkovsky with gimbal constraints)
  • Autonomous flight: liftoff, interplanetary, landing, docking

Modules

  • tpt-dynamics: Orbital propagation and perturbations
  • tpt-estimation: Kalman filtering and multi-object tracking
  • tpt-navigation: Guidance, control, and trajectory optimization

Getting Started

Installation

cd tpt-system-zero
cargo build --release

Example: Orbital Demonstration

use tpt_dynamics::{StateVector, propagate_rk4, EARTH_MU};

// Create circular LEO state
let initial = StateVector::new(6778100.0, 0.0, 0.0, 0.0, 7668.0, 0.0);
let traj = propagate_rk4(initial, 60.0, 100, EARTH_MU);
println!("Trajectory points: {}", traj.len());

Multi-Object Tracking

use tpt_estimation::{Measurement, TrackManager};

let mut manager = TrackManager::new(5);
manager.init_track(initial_est, cov, process_q, 100.0, 10.0);
// Simulate measurements and update
// Detect conjunctions: manager.detect_conjunctions(1e-4)

API Reference

Core Dynamics (tpt-dynamics)

  • gravitational_acceleration(): Newtonian two-body force
  • propagate_rk4(): RK4 orbital simulation
  • Perturbations: j2_acceleration(), atmospheric_drag(), solar_radiation_pressure()
  • body_acceleration(): N-body gravity for deep space

Estimation & Tracking (tpt-estimation)

  • Ekf::update(): Demonstrate measurement filtering
  • TrackManager: Multi-object covariance tracking
  • conjunction_probability(): Safety collision risk

Navigation & Control (tpt-navigation)

  • AttitudeController: Quaternion PD stabilization
  • lambert_solver(): Optimal trajectory generation
  • optimize_delta_v(): Rocket equation fuel calc

Sensors & Fusion (tpt-sensors)

  • Radar::measure(): SNR modeling
  • SensorFusion: Weighted state estimation
  • Noise: add_noise() with Gaussian/outliers

Systems & Simulation (tpt-systems, tpt-simulation)

  • MissionSimulator: Lifecycle spacedept
  • MonteCarloRunner: Uncertainty propagation

Data & Safety (tpt-data, tpt-safety)

  • state_to_keplerian(): Element conversions
  • verify_altitude(): Assertion contracts
  • mc_uncertainty(): Error quantification

Architecture Diagram

[User/Sensors] --> [Dyn: Propagation] --> [Est: Filtering] --> [Nav: Control]
      ↓               ↓                        ↓                  ↓
[Sim: Monte Carlo] <-- [+ perturb]          [+ EKF]           [+ PID]
      ↓               ↓                        ↓                  ↓
[Data: TLE Export] <-- [Fuse Sensors] <-- [ safety_monitors ] --/
      ↓
[API: Telemetry] <-- [Logs/Replay] <-- [Fault Detect]

User Guides

Configuration

  • Edit Cargo.toml for feature flags (e.g., enable perturbations)
  • Run cargo build --release for optimized binary
  • Docker: docker build . -t tpt-system-zero

Configuration Examples

  • Orbital LEO: 6778100m altitude, 7668 m/s speed
  • Sensor Noise: Gaussian std 0.01, outlier prob 0.05
  • Controller Gains: PID kp/ki/kd = 1.0/0.1/0.5

Mission Planning

  1. Define start/end positions in ECI
  2. Run Lambert solver for transfer arc
  3. Simulate with MissionSimulator under uncertainties
  4. Monitor conjunctions via TrackManager

Mission Examples

  1. Launch to Orbit: Gravity turn to altitude, stabilize with AttitudeController
  2. Interplanetary Transfer: Hohmann/Lambert to Mars, abort thresholds
  3. Satellite Constellation: PCA for 1000 sats, collision avoidance
  4. Lander Mission: Powered descent, fuel optimization

Philosophy

Built entirely from first principles:

  • Newton's laws for dynamics
  • Statistical filtering for estimation
  • Optimal control theory for navigation

No dependencies on legacy orbit catalogs or proprietary tools.

Contributing

See todo.md for development roadmap. PRs welcome for enhancements.

License

MIT License