Theoretical Framework

This page sketches SSA concepts as reflected in the code. For operational limitations (DE421 span, covariance/Pc caveats, strict mode), see Operational limitations and the repository KNOWMORE.md.

ASTRA-Core is a high-performance Python mathematical engine that calculates orbits and predicts satellite collisions. This document outlines the fundamental concepts of Space Situational Awareness (SSA), Orbital Mechanics, and Collision Probability as implemented within the library.

1. Two-Line Elements (TLE)

A Two-Line Element (TLE) set is the standard data format used by NORAD and the US Space Force to describe the orbit of a satellite at a specific epoch. Key orbital elements include:

  • Inclination: The tilt of the orbit relative to the Earth’s equator.

  • Eccentricity: How elliptical vs. circular the orbit is.

  • Mean Anomaly: Where the satellite sits along its orbit at the epoch.

  • BSTAR drag term: Empirical parameter encoding ballistic coefficient effects.

TLEs carry no mass, area, or ballistic coefficient as explicit fields. The two-digit year convention creates ambiguity around 2057; for long horizons prefer OMM (see §8).

2. Orbital Propagation (SGP4)

A TLE is useless without a propagation model. Earth’s oblateness (\(J_2\) bulge), the Moon and Sun’s gravitational pull, and atmospheric drag in LEO all perturb a Keplerian orbit.

SGP4 (Simplified General Perturbations #4) is the standard analytic model that accounts for these perturbations at catalog scale. Feed SGP4 a TLE and a target time; it returns \((x, y, z)\) position and \((v_x, v_y, v_z)\) velocity in the TEME frame. ASTRA-Core vectorizes SGP4 via NumPy to propagate tens of thousands of objects at once with propagate_many.

3. Coordinate Systems

Tracking a satellite requires rigorous conversion between reference frames. ASTRA-Core handles transformations between:

  • TEME (True Equator, Mean Equinox): Native output of SGP4. Also used internally by the Cowell integrator for force computation.

  • ECI / GCRS (Earth-Centred Inertial): Fixed relative to the distant stars. Required for Newtonian mechanics and some covariance conventions.

  • ECEF / ITRS (Earth-Centred, Earth-Fixed): Rotates with the Earth. Needed to derive latitude / longitude / altitude.

  • Topocentric (AER — Azimuth, Elevation, Range): Observer perspective; used for pass prediction and ground-station scheduling.

Frame conversions use Skyfield’s IERS finals2000A for live Earth Orientation Parameters (polar motion, UT1−UTC), or fall back to Spacebook EOP data when available.

4. Conjunction Analysis (Finding Collisions)

With 30,000+ active objects in space, checking every pair at every second over a week is computationally infeasible (\(O(N^2)\) complexity). ASTRA-Core solves this in three phases:

  1. Phase 1 — cKDTree Spatial Partitioning: Object trajectories are mapped into scipy.spatial.cKDTree. Querying spatial overlap in C instantly discards 99.9 % of safely-passing configurations in \(O(N \log N)\). Candidate pairs are evaluated concurrently via ThreadPoolExecutor (bypassing the GIL), delivering ~14.8× operational speedups.

  2. Phase 2 — Cubic Spline TCA Refinement: For surviving candidate pairs, ASTRA builds CubicSpline interpolants on position (and optionally velocity from vel_map) and performs a dense 1-second scan over the bracketed interval to find the exact Time of Closest Approach (TCA).

  3. Phase 3 — Dynamic Collision Radius & P_c: The effective hard-body radius is resolved from object metadata in priority order: explicit dimensions → OMM RCS → DebrisObject.radius_m → 5 m default. Collision probability is then computed (see §5).

5. Covariance & State Transition Matrix

A miss distance alone is insufficient without uncertainty information. ASTRA maps this fundamentally:

  • 6×6 STM Propagation: propagate_covariance_stm(cov0, Phi) propagates an initial covariance forward with \(P(t) = \Phi P_0 \Phi^T\). The Jacobian _compute_force_jacobian includes analytical \(J_2\) partials (Montenbruck & Gill §3.2.4) so nodal-precession uncertainty growth in LEO is correctly captured. A co-rotating drag correction preserves positive-definiteness.

  • Spacebook Synthetic Covariance: load_spacebook_covariance fetches Spacebook’s SynCoPate STK ephemeris containing a 6×6 observational covariance matrix, injecting flight-grade uncertainty into probability calculations.

  • 2D Quadrature (Chan/Foster): For the encounter-plane integral, ASTRA uses scipy.integrate.dblquad over the hard-body disk for near-miss or co-orbital events where the rectilinear approximation would degrade accuracy.

  • 6D Monte Carlo: Full 6-DOF sampling from \(\mathcal{N}(\text{miss},\Sigma)\) for complex probabilistic sweeps when full 6×6 covariances exist.

The final ratio of sample hits to total samples (or the analytical integral) yields the Probability of Collision \(P_c\).

6. Active Collision Avoidance Maneuvers

When risk exceeds a threshold, operators plan Collision Avoidance (COLA) Maneuvers. ASTRA-Core uses a 7-DOF Variable Mass Cowell Integrator:

  1. Segmented Integration: The propagation arc is sliced at burn ignition / cutoff boundaries by the orchestrator so the integrator never steps across a force-model discontinuity.

  2. Attitude-Steered Burns: Thrust direction is defined in VNB (Velocity-Normal-Binormal) or RTN (Radial-Transverse-Normal) frames. At each micro-step the frame rotation matrix is recomputed from the instantaneous state, then applied to the body-frame thrust vector. RTN basis: \(\hat{R} = \vec{r}/|\vec{r}|\), \(\hat{N} = (\vec{r} \times \vec{v})/|\vec{r} \times \vec{v}|\), \(\hat{T} = \hat{N} \times \hat{R}\).

  3. Mass Depletion: The 7th state element is mass, depleted continuously as \(\dot{m} = -F / (I_{sp} \cdot g_0)\).

  4. Numba JIT Acceleration: Force kernels are compiled with @njit(fastmath=True, cache=True). JPL DE421 planetary positions are pre-fitted into piecewise 7-day, 20-node Chebyshev splines evaluated entirely in memory via Clenshaw recurrence.

  5. Space Weather & Celestial Truth: Atmospheric density uses live F10.7 and Ap via NRLMSISE-00; Sun/Moon positions come from JPL DE421 via Skyfield. Spacebook COMSPOC provides higher-precision SW and EOP when available.

  6. Integrator tolerances: DOP853 with rtol = atol = 1e-8 on coast arcs; rtol = atol = 1e-12 on powered arcs.