Vallado & Crawford (2008): SGP4 Orbit Determination
Why This Matters for SGP4
Section titled “Why This Matters for SGP4”Every other document in this archive addresses the forward problem: given a TLE, compute the satellite’s position and velocity. This paper addresses the inverse problem: given observations or an externally generated ephemeris, produce a TLE that best fits the data.
The relationship is not symmetric — the inverse is harder. SGP4’s analytical perturbation model includes secular, long-period, and short-period corrections derived from Brouwer’s 1959 theory, atmospheric drag from STR#2, and deep-space resonance from STR#1. Deriving analytical partial derivatives through all of this is impractical. Vallado and Crawford sidestep the problem with finite differencing, treating SGP4 as a black box.
The compatibility constraint is absolute: STR#3 itself stated that “the NORAD element sets must be used with one of the models described in this report.” A TLE generated by inverting SGP4 is only valid when propagated forward with the same SGP4. This paper completes the ecosystem — forward and inverse, using the identical model.
Brouwer (1959) --> Lane & Hoots (STR#2) --> Hoots & Roehrich (STR#3, 1980) | v Vallado et al. (2006/2008, Rev-1) | Forward: TLE --> state | v Vallado & Crawford (2008) <-- THIS PAPER Inverse: state --> TLE (differential correction using SGP4 as the propagation model)The Differential Correction Approach
Section titled “The Differential Correction Approach”The method is batch weighted least-squares, the standard orbit determination technique adapted for TLE fitting. Observations are accumulated across a fit span, residuals are computed against the SGP4-predicted positions, and the orbital elements are iteratively corrected until the residuals converge.
The core update equation:
where:
| Symbol | Meaning |
|---|---|
| Correction to the state vector (orbital elements) | |
| Jacobian matrix — partials of observations with respect to state | |
| Weighting matrix — diagonal, per observation | |
| Residual vector — observed minus computed | |
| Covariance matrix — uncertainty estimate as a byproduct |
The iteration continues until three simultaneous criteria are met: the relative change in RMS drops below , the absolute RMS drops below , and the iteration count stays under 25. Physical bounds are enforced at each step — the semimajor axis cannot drop below 1 Earth radius, eccentricity cannot exceed 1.0, and mean motion cannot go negative.
Two matrix solution methods are implemented: LU decomposition (efficient but fragile near singularities) and SVD (robust, recommended for operational use). The matrix sizes are small (6x6 or 7x7), so the SVD overhead is negligible.
State Representations
Section titled “State Representations”The choice of state variables determines where the singularities fall and how fast the iteration converges. The code supports three options:
Keplerian elements — the most intuitive representation since these are the TLE variables directly. But circular orbits () make undefined, and equatorial orbits () make undefined. These singularities cause the Jacobian matrix to become ill-conditioned.
Equinoctial elements — the preferred representation. The singularities are pushed to retrograde equatorial orbits (), which are not physically encountered in the satellite catalog. The definitions:
The inverse transformation recovers the Keplerian elements needed for TLE output:
Cartesian state vectors — no geometric singularities, but all six elements change rapidly over an orbit, requiring more iterations to converge.
Finite Differencing for the Jacobian
Section titled “Finite Differencing for the Jacobian”SGP4’s perturbation model is a layered stack of Brouwer corrections, Lyddane reformulations, atmospheric drag terms, and deep-space resonance integration. Deriving analytical partial derivatives through this entire model would be a substantial mathematical undertaking — and would need to be re-derived every time the propagator changes.
Instead, the code treats SGP4 as a black box. For each element of the state vector, it:
- Perturbs the element by 0.1% of its current value (floored at )
- Re-initializes SGP4 with the perturbed state
- Propagates to the observation time
- Forms the numerical derivative from the difference
This costs 6 extra SGP4 propagations per observation per iteration (7 if solving for ). For a typical fit with 144 observations and 10 iterations, that is roughly 10,000 SGP4 calls — trivial on modern hardware, but it explains why the original AFSPC system used a simpler propagator (SGP, not SGP4) for operational orbit determination when computational cost mattered.
The Kozai-Brouwer Round Trip
Section titled “The Kozai-Brouwer Round Trip”TLEs publish mean motion in Kozai’s formulation, but SGP4 internally converts to
Brouwer’s formulation during initialization. The forward direction (Kozai to
Brouwer ) is handled by the existing sgp4init code from
STR#3.
The inverse direction — recovering the Kozai mean motion from a Brouwer semimajor axis after the DC process has converged — is not provided by the forward code. This paper adds a Newton-Raphson root solver:
where is the Kozai-to-Brouwer conversion from Hoots & Roehrich (1980, p. 10). This typically converges in 2-4 iterations to machine precision. Without this step, the TLE output would encode incorrect mean motion values, and forward propagation with the standard SGP4 would produce the wrong trajectory.
Step Limiting for Robustness
Section titled “Step Limiting for Robustness”Unconstrained Newton-Raphson corrections can diverge, especially in early iterations when the initial guess is poor. The paper implements a tiered correction limiter based on the ratio of correction to nominal value:
| Correction/Nominal Ratio | Action |
|---|---|
| > 1000 | Limit correction to 10% of nominal |
| > 200 | Limit correction to 30% of nominal |
| > 100 | Limit correction to 70% of nominal |
| > 10 | Limit correction to 90% of nominal |
The authors acknowledge these thresholds are “somewhat arbitrary, and not fully researched.” Two different limiting strategies each fail on a different set of ~20-30 satellites out of the full catalog, with very little overlap between failure sets. This suggests an adaptive strategy could solve nearly the entire catalog.
Catalog-Scale Results
Section titled “Catalog-Scale Results”The acid test: processing the entire unclassified satellite catalog (16,235 objects) through a TLE-to-ephemeris-to-TLE round trip. The baseline configuration recovered 16,198 of 16,235 objects (99.6%) to sub-meter accuracy — the regenerated TLE produces positions within 1 meter of the original across the fit span.
Performance across orbit regimes using precision ephemerides:
| Orbit | Example | Fit Accuracy | Prediction (2 days) |
|---|---|---|---|
| LEO | ICESat | ~500-600 m | ~4-5 km |
| MEO | GPS | ~150 m | ~10 km (30 days) |
| GEO | Intelsat | Variable | Maneuver-dependent |
The ephemeris-derived TLEs outperformed the AFSPC catalog TLEs, confirming Kelso’s (2007) independent finding that higher-quality observations yield better TLEs even through SGP4’s simplified force model.
Covariance as a Byproduct
Section titled “Covariance as a Byproduct”The matrix from the least-squares solution is the formal covariance of the fitted state. This is significant because AFSPC does not distribute covariance data with TLEs — the standard two-line format has no covariance fields.
Representative semimajor axis uncertainties from ephemeris fits:
| Object | (meters) |
|---|---|
| ICESat (LEO) | 0.6 |
| GPS (MEO) | 3.4 |
| GEO satellite | ~6.9 |
Observation Processing
Section titled “Observation Processing”The code supports three observation types:
| Type | Input | Status at Publication |
|---|---|---|
| TLE values | Direct TLE element extraction (test mode) | Operational |
| Ephemeris | Position/velocity in TEME, ECEF, or ECI | Operational |
| Raw observations | Range, azimuth, elevation | Incomplete |
Practical Significance
Section titled “Practical Significance”This paper fills two gaps in the SGP4 ecosystem:
-
Independent TLE generation. Any organization with tracking data (optical telescopes, radars, or access to precision ephemerides) can now produce TLEs that are guaranteed compatible with the standard SGP4 forward propagator.
-
Post-maneuver recovery. When a satellite maneuvers, the pre-maneuver TLE becomes stale. Organizations with independent observations can generate a post-maneuver TLE faster than waiting for the next catalog update.
-
Covariance for conjunction assessment. The covariance matrix output enables uncertainty quantification for collision probability calculations — something the standard TLE format cannot provide.
The same two authors (Vallado and Crawford) who produced the definitive forward propagator in Rev-1 now provide its inverse. The shared authorship guarantees that the forward and inverse pipelines are built on identical code, eliminating the compatibility risk that plagued SGP4 for 25 years.