OpenGNSSLabSPP

Module 4 - Satellite orbits and ephemerides

Satellite Position from Broadcast Ephemeris

Propagate a GPS navigation record to an ECEF satellite coordinate.

Difficulty

Intermediate

Estimated time

30 minutes

Series position

4 of 10

Broadcast satellite position, in brief

Broadcast ephemeris parameters are propagated to compute a satellite's Earth-centered, Earth-fixed coordinates at a chosen GPS time. Positioning normally needs the state at signal transmission, not reception. The orbit reference time toe and clock reference time toc serve different parts of the calculation.

Prepared by OpenGNSSLabUpdated Sources, reproducibility and corrections

Learning objectives

  • Compute time from ephemeris reference time.
  • Solve the broadcast orbit equations step by step.
  • Produce an ECEF satellite coordinate ready for range modeling.

This is broadcast orbit propagation, not SP3 interpolation

The legacy file named `interpolation_example.html` actually computes a GPS satellite position from broadcast ephemeris parameters. That is a different task from SP3 coordinate interpolation.

OpenGNSSLab keeps this as an orbit tutorial because SPP needs broadcast satellite coordinates before it can build a pseudorange model.

Numerical inputs from the legacy example

InputValue
Target time2024-01-01 14:30:30
SatelliteG01
C1C pseudorange25092668.962 m
sqrtA5.154027334213e+03 sqrt(m)
e1.305763632990e-02
M01.271399167061 rad
omega0.9986105883222 rad
i00.9903396547303 rad
Omega0-1.610077279119 rad
Delta n3.770514199908e-09 rad/s
toe136800 s

Computation step 1

Compute time from ephemeris reference

Given

Emission time after clock correction from the legacy computation.

Formula

tk=temission−toet_k=t_{emission}-t_{oe}

Compute

tk=1829.916120 st_k=1829.916120\ \text{s}

Result

The time is inside the valid broadcast range: -302400 < 1829.916120 < 302400.

Why it matters: The GPS broadcast equations are evaluated at tk, not directly at the calendar timestamp.

Computation step 2

Mean, eccentric, and true anomaly

Formula

Mk=M0+(μ/A3+Δn)tkM_k=M_0+\left(\sqrt{\mu/A^3}+\Delta n\right)t_k
Ek−esin⁡Ek=MkE_k-e\sin E_k=M_k
νk=atan2⁡(1−e2sin⁡Ek,cos⁡Ek−e)\nu_k=\operatorname{atan2}\left(\sqrt{1-e^2}\sin E_k,\cos E_k-e\right)

Compute

Mk=1.538252 radM_k=1.538252\ \text{rad}
Ek=1.551307 radE_k=1.551307\ \text{rad}
νk=1.564364 rad\nu_k=1.564364\ \text{rad}

Result

The satellite's angular location in its orbital ellipse is now known for the target epoch.

Computation step 3

Apply harmonic corrections

Formula

uk=ω+νk+Cuccos⁡2(ω+νk)+Cussin⁡2(ω+νk)u_k=\omega+\nu_k+C_{uc}\cos 2(\omega+\nu_k)+C_{us}\sin 2(\omega+\nu_k)
rk=A(1−ecos⁡Ek)+Crccos⁡2(ω+νk)+Crssin⁡2(ω+νk)r_k=A(1-e\cos E_k)+C_{rc}\cos 2(\omega+\nu_k)+C_{rs}\sin 2(\omega+\nu_k)
ik=i0+IDOT tk+Ciccos⁡2(ω+νk)+Cissin⁡2(ω+νk)i_k=i_0+IDOT\,t_k+C_{ic}\cos 2(\omega+\nu_k)+C_{is}\sin 2(\omega+\nu_k)

Compute

uk=2.562969 radu_k=2.562969\ \text{rad}
rk=26,557,279.850159 mr_k=26,557,279.850159\ \text{m}
ik=0.990340 radi_k=0.990340\ \text{rad}

Result

These corrected orbit-plane values feed the final ECEF rotation.

Legacy rotation matrices

R1(−ik)=[10000.548406−0.83621200.8362120.548406]R3(−Ωk)=[0.662065−0.74944700.7494470.6620650001]R3(−uk)=[−0.837216−0.54687200.546872−0.8372160001]\begin{aligned} R_1(-i_k)&=\begin{bmatrix}1&0&0\\0&0.548406&-0.836212\\0&0.836212&0.548406\end{bmatrix}\\ R_3(-\Omega_k)&=\begin{bmatrix}0.662065&-0.749447&0\\0.749447&0.662065&0\\0&0&1\end{bmatrix}\\ R_3(-u_k)&=\begin{bmatrix}-0.837216&-0.546872&0\\0.546872&-0.837216&0\\0&0&1\end{bmatrix} \end{aligned}
The legacy page presents the final transformation as a product of rotation matrices.

Result

Computed ECEF satellite coordinate

(-20689614.635, -11390159.940, 12144678.499) m

The final broadcast-position result is X = -20,689,614.63469926 m, Y = -11,390,159.94029376 m, Z = 12,144,678.49890683 m.

This coordinate is the satellite position term used later in geometric range and Sagnac correction.

What you should understand now

  • Broadcast navigation data is propagated through Keplerian orbit equations.
  • The final satellite position is an ECEF vector in meters.
  • SPP repeats this computation for each selected satellite at its signal transmission time.

Related tutorials

Help improve this tutorial

Point out numerical ambiguity, missing prerequisites, or a step that needs a fuller derivation.

Primary sources and further reading

The specifications and research below support the model and terminology. Numerical exports and teaching assumptions are documented in the lesson itself.

Browse the scientific reference library →

Continue with the numbers

GNSS terms and units · Report a correction