tpt-system-zero
RustFirst-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 forcepropagate_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 filteringTrackManager: Multi-object covariance trackingconjunction_probability(): Safety collision risk
Navigation & Control (tpt-navigation)
AttitudeController: Quaternion PD stabilizationlambert_solver(): Optimal trajectory generationoptimize_delta_v(): Rocket equation fuel calc
Sensors & Fusion (tpt-sensors)
Radar::measure(): SNR modelingSensorFusion: Weighted state estimation- Noise:
add_noise()with Gaussian/outliers
Systems & Simulation (tpt-systems, tpt-simulation)
MissionSimulator: Lifecycle spacedeptMonteCarloRunner: Uncertainty propagation
Data & Safety (tpt-data, tpt-safety)
state_to_keplerian(): Element conversionsverify_altitude(): Assertion contractsmc_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.tomlfor feature flags (e.g., enable perturbations) - Run
cargo build --releasefor 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
- Define start/end positions in ECI
- Run Lambert solver for transfer arc
- Simulate with
MissionSimulatorunder uncertainties - Monitor conjunctions via
TrackManager
Mission Examples
- Launch to Orbit: Gravity turn to altitude, stabilize with
AttitudeController - Interplanetary Transfer: Hohmann/Lambert to Mars, abort thresholds
- Satellite Constellation: PCA for 1000 sats, collision avoidance
- 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