INITIAL DATA HANDLING

Key Parameters

Notation Description
\(\mu\)Earth’s gravitational parameter, \(3.986005 \times 10^{14} \, \text{m}^3\text{s}^{-2}\) for GPS (WGS-84), \(398600.44 \, \text{km}^3\text{s}^{-2}\) for GLONASS (PZ-90). Note: Previously denoted as \(m\) in some documentation.
\(A\)Semi-major axis (meters), computed as \( A = (\sqrt{A})^2 \) from the broadcast square root of the semi-major axis (\(\sqrt{A}\)).
\(\Delta n\)Broadcast mean motion difference (rad/s), corrects theoretical mean motion for GPS.
\(e_0\)Eccentricity of the satellite orbit (dimensionless).
\(\omega\)Argument of perigee (radians), part of the orbital elements.
\(t_{0E}\)Ephemeris reference epoch time (seconds), GPS time of ephemeris.
\(\dot{\Omega}\)Rate of right ascension of the ascending node (rad/s), denoted as OMEGADOT in GPS.
\(I_0\)Inclination angle at reference epoch (radians).
\(\dot{I}\)Rate of inclination angle (rad/s), denoted as IDOT in GPS.
\(C_{UC}, C_{US}\)Amplitude of cosine/sine harmonic correction terms to the argument of latitude (radians).
\(C_{RC}, C_{RS}\)Amplitude of cosine/sine harmonic correction terms to the orbital radius (meters).
\(C_{IC}, C_{IS}\)Amplitude of cosine/sine harmonic correction terms to the angle of inclination (radians).
\(\omega_3\)Earth’s angular rotation rate, \(7.2921151467 \times 10^{-5} \, \text{rad/s}\).
\(a_{f0}, a_{f1}, a_{f2}\)Polynomial coefficients for GPS satellite clock correction model (seconds, seconds/s, seconds/s²).
\(\Delta t_R\)Relativistic correction term for GPS clock offset (seconds).
\(T_{GD}\)Total group delay differential for GPS (seconds), inter-frequency bias correction.
\(\tau_n(t_b)\)GLONASS clock bias at reference time \(t_b\) (seconds).
\(\gamma_n(t_b)\)GLONASS relative frequency bias at \(t_b\) (dimensionless).
\(\tau_i\)GLONASS time interval for ephemeris recalculation (seconds).
\(C_{20}\)Second zonal harmonic coefficient of the geopotential, \(-1082.63 \times 10^{-6}\) (dimensionless, PZ-90).
\(a_e\)Earth’s equatorial radius, \(6378.136 \, \text{km}\) (PZ-90).
\(h_{max}\)Maximum allowable integration step for Runge-Kutta method, typically \(60 \, \text{s}\).

1. Received data is verified for validity by calculating checksums of received messages and comparing them with transmitted checksums.

In case of mismatch, the received packet is rejected. Types of checksums and methods of their calculation are presented in the previous lecture and its appendix. If parameters are valid, then their validity flags are formed \(\bigl(Пр_{i,j,k} = 0\bigr)\), where \(i\) — navigation receiver number; \(j\) — navigation satellite number; \(k\) — navigation system type: 0 — GPS; 1 — GLONASS.

2. Converting data to physical quantities format

Converting data to physical quantities format is performed by multiplying by corresponding scale factors (table 1).

Table 1. Measurement Data Fields

Field Message Type Scale Factor
Satellite azimuth (units of 2 degrees) Z18 Receiver Measurement Data Structure (MPC) 2
Doppler Z18 Receiver Measurement Data Structure (MPC) 10⁴
Satellite azimuth (units of 2 degrees) GG24 Receiver Measurement Data Structure 2
Doppler GG24 Receiver Measurement Data Structure 10⁴
RCVtime GG24 Receiver Measurement Data Structure 10³
Navt GG24 Receiver Measurement Data Structure 1/c = 1 / 299792458 m/s
Navtdot GG24 Receiver Measurement Data Structure 1/c = 1 / 299792458 m/s
PDOP Position Data Structure 0.01

3. Ephemeris data from the previous lecture and its appendix is used for calculating coordinates, velocity vector components, clock offset, and drift of GPS and GLONASS satellites respectively.

Calculation is performed for time \(\,t_{\text{изл}}\), computed as:

\[ t_{\text{изл}} = rcvtime - Raw\_range \]

Signal transmission time calculation. Accounts for light-time delay between satellite transmission and receiver reception. Critical for precise orbit interpolation.

3.1. Calculation of GPS GNSS spacecraft motion parameters for a specified time based on ephemeris data is performed according to the following algorithm.

The input data include the parameters described in the previous lecture and its appendix.

1) Convert all values \(M_{0}\), \(\Delta n\), \(\Omega_{0}\), OMEGADOT, \(I_{0}\), IDOT to radians by multiplying by \(\pi\), where \(\pi = 3.1415926535898\).

2) Compute the moment \(\,t_{K}\) from the GPS epoch corresponding to the calculation time \(\,t\):

\[ t_{K} = t - t_{0E} \]

Time elapsed since ephemeris reference epoch. Must handle week rollover (±302400s adjustment) for proper ephemeris validity window.

if \(t_{K} > 302400\) s, then \(t_{K} = t_{K} - 604800\) s (for ephemerides);

if \(t_{K} < -302400\) s, then \(t_{K} = t_{K} + 604800\) s.

3) Compute the corrected mean motion:

\[ n = \sqrt{\frac{\mu}{A^3}} \;+\; \Delta n \]

Corrected mean motion: \( n_{0}=\sqrt{\mu/A^{3}} \) from two-body Keplerian dynamics, corrected by the broadcast mean motion difference \( \Delta n \) (rad/s). Here \( \mu \) is Earth’s gravitational parameter and \( A \) is the semi-major axis.

where \(\mu = 3.986005 \times 10^{14} \text{ m}^3\text{s}^{-2}\) — the gravitational constant.

4) Determine the current value of the mean anomaly \(M_{k}\) at time \(t_{k}\):

\[ M_{k} = M_{0} + n \, t_{k} \]

5) Solve Kepler’s equation for the eccentric anomaly \(E_{k}\) by Newton’s iterative method:

\( E_{k} \;-\; e_{0}\,\sin E_{k} \;=\; M_{k} \)

Kepler's transcendental equation. No closed-form solution; requires iterative solving. Links mean anomaly (uniform motion) to eccentric anomaly (actual position).

\( E_{k(n+1)} \;=\; E_{k(n)} \;+\; \frac{M_{k} \;-\; E_{k(n)} \;+\; e_{0}\,\sin E_{k(n)}}{1 \;-\; e_{0}\,\cos E_{k(n)}} \)

Newton-Raphson iteration for Kepler's equation. Converges quadratically; typically 3-5 iterations for GPS eccentricities (e < 0.02).

where \(n = 1, 2, 3, ...\);

\(E_{k1} = M_{k}\);

\(\bigl| E_{k(n+1)} - E_{k(n)} \bigr| < \text{eps}\);

\(\text{eps}\) — required accuracy.

6) Compute the derivative \(E_{k}'\):

\[ E_{K}' = \frac{n}{1 - e_{0} \cos E_{Kn}} \]

Rate of change of eccentric anomaly. Required for velocity computations and orbit propagation. Singular at e=1 (parabolic orbit).

7) Compute the relativistic correction term:

\( \Delta t_R = C \cdot \sqrt{A} \cdot e \cdot \sin E \)

where: \(C = -4.442807633 \times 10^{-10}\).

Relativistic clock correction due to orbital eccentricity. Important for GPS satellite timing precision.

8) Compute the true anomaly:

\[ \Theta_{K} = \arctan\!\Bigl(\tfrac{\sqrt{1 - e_{0}^{2}} \,\sin E_{K}}{\cos E_{K} \;-\; e_{0}}\Bigr)\! \]

True anomaly: actual angular position in orbit. Four-quadrant arctangent required for correct angle determination across all orbital positions.

9) Compute the argument of latitude:

\[ \Phi_{K} = \Theta_{K} \;+\; \omega \]

Argument of latitude: angle from ascending node to satellite position. Base parameter for harmonic corrections (Cuc, Cus, etc.).

10) Compute the derivative of the argument of latitude:

\[ \Phi_{K}' = \tfrac{\sqrt{1 - e_{0}^{2}}\, E_{K}'}{1 \;-\; e_{0} \,\cos E_{K}} \]

Rate of change of argument of latitude. Critical for velocity calculations and harmonic correction derivatives.

11) Compute the corrected argument of latitude:

\[ U_{K} = \Phi_{K} + C_{UC}\,\cos(2\Phi_{K}) + C_{US}\,\sin(2\Phi_{K}) \]

Second-harmonic corrections to argument of latitude. Models orbital perturbations from Earth's oblateness (J2 effect).

12) Compute the derivative of the corrected argument of latitude:

\[ U_{K}' = \Phi_{K}' \Bigl( 1 \;+\; 2\bigl(C_{US}\cos 2\Phi_{K} \;-\; C_{UC}\,\sin 2\Phi_{K}\bigr)\Bigr). \]

Velocity component of latitude argument including harmonic terms. Required for accurate satellite velocity in orbital plane.

13) Determine the current value of the corrected radius vector:

\( r_{K} = A \,(1 - e_{0}\,\cos E_{K}) + C_{RC}\,\cos(2\Phi_{K}) \;+\; C_{RS}\,\sin(2\Phi_{K}) \)

Orbital radius with harmonic corrections. Models deviations from pure Keplerian ellipse due to Earth's gravitational field.

14) Compute the derivative of the radius vector:

\[ r_{K}' = A\,e_{0}\,E_{K}'\,\sin E_{K} + 2\,\Phi_{K}' \Bigl(C_{RS}\,\cos 2\Phi_{K} - C_{RC}\,\sin 2\Phi_{K}\Bigr). \]

Radial velocity component. Combines Keplerian motion with harmonic correction rates. Zero at apogee/perigee for circular orbits.

15) Determine the corrected angle of inclination of the orbit:

\( I_{K} = I_{0} + C_{IC}\,\cos(2\Phi_{K}) \;+\; C_{IS}\,\sin(2\Phi_{K}) + IDOT \, t_{K} \)

Orbital inclination with secular drift and periodic variations. IDOT term models long-term precession due to Earth's J2.

16) Compute the derivative of the corrected orbit inclination angle:

\[ I_{K}' = IDOT \;+\; 2\,\Phi_{K}'\bigl(C_{IS}\,\cos 2\Phi_{K} - C_{IC}\,\sin 2\Phi_{K}\bigr). \]

17) Compute the satellite position vector in the orbital plane:

\(X_{\Phi_{K}} = r_{K}\,\cos U_{K}\),

\(Y_{\Phi_{K}} = r_{K}\,\sin U_{K}\).

Satellite position in orbital plane coordinates. Origin at Earth center, X-axis toward ascending node. Precedes ECEF transformation.

18) Compute the derivative of this vector:

\[ X'_{\Phi_K} = r_K' \cos U_K - Y_{\Phi_K} U_K' \]

Velocity components in orbital plane. Combines radial motion (r') with angular motion (U'). Maximum tangential velocity at perigee.

\[ Y'_{\Phi_K} = r_K' \sin U_K - X_{\Phi_K} U_K' \]

19) Compute the corrected longitude of the ascending node of the orbit:

\[ \Omega_{K} = \Omega_{0} + (OMEGADOT \;-\; \omega_{3})\,t_{K} \;-\; \omega_{3}\,t_{0E} \]

Right ascension of ascending node in Earth-fixed frame. Accounts for orbit precession (OMEGADOT) and Earth rotation (ω₃) during signal flight.

where \(\omega_{3} = 7.2921151467 \times 10^{-5}\,\text{rad}\,\cdot\,\text{s}^{-1}\) — Earth’s rotation rate.

20) Compute the derivative of the longitude of the ascending node:

\[ \Omega_{K}' = OMEGADOT \;-\; \omega_{3} \]

21) Compute the spacecraft coordinates at time \(t_{K}\):

\(X_{SVK} = X_{\Phi_{K}}\cos \Omega_{K} - Y_{\Phi_{K}}\,\cos I_{K}\,\sin \Omega_{K}\),

Transformation from orbital to Earth-Centered Earth-Fixed coordinates. Two rotations: through node angle (Ω) and inclination (I). Output in WGS-84.

\(Y_{SVK} = X_{\Phi_{K}}\sin \Omega_{K} - Y_{\Phi_{K}}\,\cos I_{K}\,\cos \Omega_{K}\),

\(Z_{SVK} = Y_{\Phi_{K}}\,\sin I_{K}\).

22) Compute the velocities:

\(X'_{SVK} = -\,\Omega_{K}'\,Y_{SVK} + X'_{\Phi_{K}}\,\cos\Omega_{K} - \bigl(Y'_{\Phi_{K}}\,\cos I_{K} - Y_{\Phi_{K}}\,I'_{K}\,\sin I_{K}\bigr)\sin\Omega_{K}\),

ECEF velocity including Coriolis terms from rotating reference frame. Critical for Doppler predictions and orbit propagation beyond ephemeris validity.

\(Y'_{SVK} = \Omega_{K}'\,X_{SVK} + X'_{\Phi_{K}}\,\sin\Omega_{K} + \bigl(Y'_{\Phi_{K}}\,\cos I_{K} - Y_{\Phi_{K}}\,I'_{K}\,\sin I_{K}\bigr)\cos\Omega_{K}\),

\(Z'_{SVK} = Y_{\Phi_{K}}\,I'_{K}\,\sin I_{K} + Y'_{\Phi_{K}}\,\sin I_{K}\).

23) Compute the accelerations:

\[ X''_{SVK} = \Bigl(-\frac{\mu}{r_{K}^{3}} + \omega_{3}^{2}\Bigr)\,X_{SVK} \;+\; 2\,Y'_{SVK}\,\omega_{3} \]

Acceleration in rotating ECEF frame. Includes central gravity, centrifugal acceleration, and Coriolis effect. Used for orbit propagation.

\[ Y''_{SVK} = \Bigl(-\frac{\mu}{r_{K}^{3}} + \omega_{3}^{2}\Bigr)\,Y_{SVK} \;-\; 2\,X'_{SVK}\,\omega_{3} \]

\[ Z''_{SVK} = \frac{\mu}{r_{K}^{3}}\;Z_{SVK} \]

24) Compute the time difference:

\(t_{k} = t - t_{0c}\)

if \(t_{k} > 302400\) s, then \(t_{k} = t_{k} - 604800\) s,

if \(t_{k} < -302400\) s, then \(t_{k} = t_{k} + 604800\) s.

25) Compute the current clock offset of the spacecraft for L1 and L2 frequencies:

\[ \text{offset}_{L1} = a_{f0} + t_{K} \bigl(a_{f1} + t_{K} a_{f2}\bigr) + \Delta t_{R} - T_{GD} \]

GPS SV clock model: Polynomial + relativity correction (\(\Delta t_R\)) and inter-frequency bias (\(T_{GD}\)). Eliminates 2-5m timing errors from orbital eccentricity and hardware delays.

\[ \text{offset}_{L2} = a_{f0} + t_{K} \bigl(a_{f1} + t_{K} a_{f2}\bigr) + \Delta t_{R} - 1.64694\,T_{GD} \]

L2 clock correction with scaled group delay. Factor 1.64694 = (f_L1/f_L2)² accounts for frequency-dependent ionospheric delay.

26) Compute the drift:

\[ drift = a_{f1} \;+\; 2\,a_{f2}\,t_{k} \]

Satellite clock frequency offset (“drift”): linear term \(a_{f1}\) plus aging term \(2\,a_{f2}\,t_{k}\). Typical drift: \(10^{-11}\)–\(10^{-12}\) for rubidium clocks.

3.2.Calculation of GLONASS GNSS spacecraft motion parameters for a specified time based on ephemeris data.

The input data includes the parameters described in the previous lecture.

Recalculation of ephemerides from the time moment \(t_{b}\) to the time moment

\(\bigl|\tau_{i}\bigr| = \bigl|t_{i} - t_{b}\bigr| \leq 15\,\text{min}\)

is performed by numerical integration of the spacecraft differential equations of motion, whose right-hand sides account for accelerations determined by Earth’s gravitational constant, the harmonic \(C_{20}\) that characterizes Earth’s polar flattening, and the accelerations of lunar–solar gravitational perturbations. The spacecraft equations of motion are integrated in the rectangular geocentric PZ-90 coordinate system by the fourth-order Runge–Kutta method and have the form:

\(\frac{dx}{dt} = V_{x},\)

\(\frac{dy}{dt} = V_{y},\)

\(\frac{dz}{dt} = V_{z}.\)

\[ dV_{x} / dt = -\frac{\mu}{r^{3}}x + \frac{3}{2}C_{20} \frac{\mu a_{e}^{2}}{r^{5}} x \left[1 - \frac{5z^{2}}{r^{2}}\right] + \omega_{3}^{2}x + 2\omega_{3}V_{y} + \ddot{x}, \]

GLONASS dynamics model: Geopotential (\(C_{20}\)), Earth rotation (\(\omega_3\)), and lunisolar perturbations (\(\ddot{x}\)). Runge-Kutta integration achieves <5cm orbital precision over 15-min intervals.

\[ dV_{y} / dt = -\frac{\mu}{r^{3}}y + \frac{3}{2}C_{20} \frac{\mu a_{e}^{2}}{r^{5}} y \left[1 - \frac{5z^{2}}{r^{2}}\right] + \omega_{3}^{2}y + 2\omega_{3}V_{x} + \ddot{y}, \]

\[ dV_{z} / dt = -\frac{\mu}{r^{3}}z + \frac{3}{2}C_{20} \frac{\mu a_{e}^{2}}{r^{5}} z \left[3 - \frac{5z^{2}}{r^{2}}\right] + \ddot{z}. \]

where:

  • \(r = \sqrt{x^{2} + y^{2} + z^{2}}\)
  • \(\mu = 398600.44 \text{ km}^{3}/\text{s}^{2}\) — Earth’s gravitational constant
  • \(a_{e} = 6378.136 \text{ km}\) — Earth’s equatorial radius
  • \(C_{20} = -1082.63 \times 10^{-6}\) — coefficient of the second zonal harmonic of the geopotential expansion in spherical functions
  • \(\omega_{3} = 0.7292115 \times 10^{-4}\,\text{s}^{-1}\) — Earth’s angular rotation rate

The values \(\mu, a_{e}, C_{20}, \omega_{3}\) are adopted in the PZ-90 coordinate system.

Computation procedure:

1) Compute the time interval for which the prediction is made:
\(\tau_{i} = t_{i} - t_{b} \cdot 60.\)

If \(\tau_{i} > 43200\), set \(\tau_{i} = t_{i} - 86400\),
If \(\tau_{i} < -43200\), set \(\tau_{i} = t_{i} + 86400\).

2) Compute the number of integration steps:

\[ K = \frac{\tau_{i}}{h_{max}} + 1 \]

where \(h_{max}\) is the maximum allowable integration step defining the accuracy of the integral; in this task it is sufficient to take \(h_{max} = 60\) s.

3) Compute the integration step:

\[ h = \frac{\tau_{i}}{K} \]

4) Compute the coefficients \(K\) times:

\(K_{0j} = h\,F_{j}(Y_{ji});\)

RK4 first coefficient. Step size h ≤ 60s ensures < 5cm accuracy over 15-minute GLONASS ephemeris validity window with precise initial conditions and perturbation models.

\(K_{1j} = h\,F_{j}\bigl(Y_{ji} + \tfrac{1}{3}K_{0j}\bigr);\)

\(K_{2j} = h\,F_{j}\bigl(Y_{ji} + \tfrac{1}{6}K_{0j} + \tfrac{1}{6}K_{1j}\bigr);\)

\(K_{3j} = h\,F_{j}\bigl(Y_{ji} + \tfrac{1}{8}K_{0j} + \tfrac{3}{8}K_{2j}\bigr);\)

\(K_{4j} = h\,F_{j}\bigl(Y_{ji} + \tfrac{1}{2}K_{0j} - \tfrac{3}{2}K_{2j} + 2K_{3j}\bigr).\)

Where:

\(F_{1}(Y_{1i}) = \frac{dx}{dt};\)

\(F_{2}(Y_{2i}) = \frac{dy}{dt};\)

\(F_{3}(Y_{3i}) = \frac{dz}{dt};\)

\(F_{4}(Y_{4i}) = \frac{dV_{x}}{dt};\)

\(F_{5}(Y_{5i}) = \frac{dV_{y}}{dt};\)

\(F_{6}(Y_{6i}) = \frac{dV_{z}}{dt};\)

\(i = 1, \ldots, K;\)

\(j = 1, \ldots, 6.\)

The initial conditions \(Y_{j1}\) are the spacecraft coordinates and velocities from the ephemeris data at time \(t_{b}\).

After each cycle over \(i\) the new values are obtained:

\(Y_{j(i+1)} = Y_{ji} + \tfrac{1}{6}\bigl(K_{0j} + 4K_{3j} + K_{4j}\bigr).\)

The spacecraft coordinates and velocities at time \(t_{i}\) are the values \(Y_{ji}\) after completing the cycle over \(i\).

5) Compute the clock offset of the \(n\)-th spacecraft relative to the GLONASS time scale:

\(\text{offset} = \tau_{n}(t_{b}) - \gamma_{n}(t_{b}) \cdot \tau_{i}\)

GLONASS clock model: linear only (no quadratic term). \( \tau_{n}(t_{b}) \) — clock bias; \( \gamma_{n}(t_{b}) \) — relative frequency bias; \( \tau_{i} \) — time interval. Simpler than the GPS model.

6) The clock drift of the \(n\)-th spacecraft equals the parameter \(\gamma_{n}(t_{b})\):

\(\text{drift} = \gamma_{n}(t_{b}).\)

4. Almanac data from the previous lecture and its appendix are used to compute the coordinates and velocity-vector components of GPS and GLONASS spacecraft.

The calculation algorithms are given below.

4.1. Calculation of GPS GNSS spacecraft motion parameters for a specified time based on almanac data.

The input data includes the parameters described in the previous lecture and its appendix.

1) Convert all values \(M_{0}\), \(\Omega_{0}\), OMEGADOT, \(I_{0}\) to radians by multiplying by \(\pi\), where \(\pi = 3.1415926535898\).

2) Compute the moment \(t_{K}\) from the GPS epoch corresponding to the calculation time \(t\):

\(t_{K} = t - t_{0A};\)

3) Compute the corrected mean motion:

\[ n = \sqrt{\frac{\mu}{A^{3}}} \]

where \(\mu = 3.986005 \times 10^{14} \text{ m}^{3}\text{s}^{-2}\) — the gravitational constant.

4) Determine the current value of the mean anomaly \(M_{K}\) at time \(t_{K}\):

\[ M_{K} = M_{0} + n\,t_{K} \]

5) Solve Kepler’s equation for the eccentric anomaly \(E_{K}\) by Newton’s iterative method:

\( E_{K} \;-\; e_{0}\,\sin E_{K} \;=\; M_{K} \)

\( E_{K(n+1)} = E_{K(n)} + \frac{M_{K} - E_{K(n)} + e_{0}\,\sin E_{K(n)}}{1 - e_{0}\,\cos E_{K(n)}} \)

where \(n = 1, 2, 3, \ldots\)

\(E_{K1} = M_{K},\)

\(\bigl|E_{K(n+1)} - E_{K(n)}\bigr| < \text{eps},\)

\(\text{eps}\) — required accuracy.

6) Compute the derivative \(\,E_{K}'\):

\[ E_{K}' = \frac{n}{1 - e_{0}\,\cos E_{K(n)}} \]

7) Compute the true anomaly:

\[ \Theta_{K} = \arctan\!\Bigl(\frac{\sqrt{1 - e_{0}^{2}}\;\sin E_{K}}{\cos E_{K} - e_{0}}\Bigr)\! \]

8) Compute the argument of latitude:

\[ \Phi_{K} = \Theta_{K} + \omega \]

9) Compute the derivative of the argument of latitude:

\[ \Phi_{K}' = \frac{\sqrt{1 - e_{0}^{2}}\;E_{K}'}{\,1 - e_{0}\,\cos E_{K}\,} \]

10) Determine the current value of the radius vector:

\[ r_{K} = A \bigl(1 - e_{0}\,\cos E_{K}\bigr) \]

11) Compute the derivative of the radius vector:

\[ r_{K}' = A\,e_{0}\,E_{K}'\,\sin E_{K} \]

12) Compute the satellite position vector in the orbital plane:

\(X_{\Phi K} = r_{K}\,\cos \Phi_{K}, \quad Y_{\Phi K} = r_{K}\,\sin \Phi_{K}.\)

13) Compute the derivative of this vector:

\[ X'_{\Phi_K} = r'_K \cos\Phi_K - Y_{\Phi_K} \Phi'_K, \]

\[ Y'_{\Phi_K} = r'_K \sin\Phi_K - X_{\Phi_K} \Phi'_K. \]

14) Compute the corrected longitude of the ascending node of the orbit:

\[ \Omega_{K} = \Omega_{0} + \bigl(OMEGADOT - \omega_{3}\bigr)\,t_{K} \;-\; \omega_{3}\,t_{0A} \]

where \(\omega_{3} = 7.2921151467 \times 10^{-5}\,\text{rad}\cdot\text{s}^{-1}\) — Earth’s rotation rate.

15) Compute the derivative of the longitude of the ascending node:

\[ \Omega_{K}' = OMEGADOT - \omega_{3} \]

16) Compute the spacecraft coordinates at time \(t_{K}\):

\[ X_{SVK} = X_{\Phi_K} \cos\Omega_K - Y_{\Phi_K} \cos I_0 \sin\Omega_K, \]

\[ Y_{SVK} = X_{\Phi_K} \sin\Omega_K - Y_{\Phi_K} \cos I_0 \cos\Omega_K, \]

\[ Z_{SVK} = Y_{\Phi_K} \sin I_0. \]

17)Compute the velocities:

\[ X'_{SVK} = -\,\Omega'_K Y_{SVK} + X'_{\Phi_K} \cos\Omega_K - Y'_{\Phi_K} \cos I_0 \sin\Omega_K, \]

\[ Y'_{SVK} = \Omega'_K X_{SVK} + X'_{\Phi_K} \sin\Omega_K + Y'_{\Phi_K} \cos I_0 \cos\Omega_K, \]

\[ Z'_{SVK} = Y'_{\Phi_K} \sin I_0. \]

4.2. Calculation of GLONASS GNSS spacecraft motion parameters for a specified time based on almanac data.

The input data includes the parameters described in the previous lecture and its appendix.

The specified time moment is given in GLONASS time, where \(N_{T}\) is the day number within the four-year period and \(t_{ТЕК}\) is the time in seconds from the start of that day.

1)Determine the current values of the Keplerian elements and some other orbit elements:

\(i = i_{cp} + \Delta i;\quad T_{ДР} = T_{СР} + \Delta T;\)

\(n = \frac{2\pi}{T_{ДР}};\quad p = \sqrt[\,3]{\frac{\mu}{n^{2}}};\)

where

\(n\) – mean motion of the spacecraft;

\(p\) – semi-major axis of the spacecraft orbit;

\(\pi = 3.1415926536;\quad \mu = 398600.44;\)

2)Apply corrections for Earth’s nonsphericity:

\[ \lambda^{*} = \lambda + (\dot{\lambda} - \omega_{3})\,\Delta t_{n},\quad \omega^{*} = \omega + \dot{\omega}\,\Delta t_{n}; \]

\[ \Delta t_{n} = (N_{T} - N^{A}) \cdot 86400 + t_{TEK} - t_{\lambda}; \]

where

\(\dot{\lambda} = -10 \Bigl(\frac{a_{c}}{p}\Bigr)^{\tfrac{7}{2}}\,\cos(i)\,\frac{\pi}{180 \cdot 86400}\);

\(\dot{\omega} = 5 \Bigl(\frac{a_{c}}{p}\Bigr)^{\tfrac{7}{2}} \bigl(5\cos^{2}i - 1\bigr)\,\frac{\pi}{180 \cdot 86400}\);

3)Solve Kepler’s equation by Newton’s method

\[ E_{k+1} = E_{M} + \varepsilon \sin(E_{k}),\; k = 0, \ldots \text{ until } \]

\[ \bigl|E_{k+1} - E_{k}\bigr| > 3 \cdot 10^{-8}; \]

\[ E_{0} = E_{M}; \]

\[ E_{M} = n(\Delta t_{n} - \Delta T); \]

\[ \Delta T = \frac{E_{n} - \varepsilon \sin E_{n}}{n} + \begin{cases} 0, & \omega^{*} < \pi; \\ T_{др}, & \omega^{*} > \pi; \end{cases} \]

\[ E_{\pi} = 2 \arctan \left( \tan \left( \frac{\omega^{*}}{2} \right) \sqrt{\frac{1 - e}{1 + e}} \right) \]

4)Determine the spacecraft state vector in the orbital coordinate system:

\[ X^{0}_{1} = p (\cos E_{k+1} - \varepsilon), \quad \dot{X}^{0}_{1} = -\frac{np \sin E_{k+1}}{1 - \varepsilon \cos E_{k+1}}; \]

\[ X^{0}_{2} = p \sqrt{1 - \varepsilon^{2}} \sin E_{k+1}, \quad \dot{X}^{0}_{2} = \frac{np \sqrt{1 - \varepsilon^{2}} \cos E_{k+1}}{1 - \varepsilon \cos E_{k+1}}; \]

5)Calculate the unit vectors of the orbital coordinate system in the PZ-90 coordinate system:

\[ e^{0}_{11} = \cos\omega^{*} \cos\lambda^{*} - \sin\omega^{*} \sin\lambda^{*} \cos i; \]

\[ e^{0}_{12} = \cos\omega^{*} \sin\lambda^{*} + \sin\omega^{*} \cos\lambda^{*} \cos i; \]

\[ e^{0}_{13} = \sin\omega^{*} \sin i; \]

\[ e^{0}_{21} = -\sin\omega^{*} \cos\lambda^{*} - \cos\omega^{*} \sin\lambda^{*} \cos i; \]

\[ e^{0}_{22} = -\sin\omega^{*} \sin\lambda^{*} + \cos\omega^{*} \cos\lambda^{*} \cos i; \]

\[ e^{0}_{23} = \cos\omega^{*} \sin i; \]

6)Transform the spacecraft state vector from the orbital coordinate system to the PZ-90 coordinate system:

\[ \overline{X}^{S} = X^{0}_{1} \overline{e}^{0}_{1} + X^{0}_{2} \overline{e}^{0}_{2}; \]

\[ \dot{\overline{X}}^{S} = \dot{X}^{0}_{1} \overline{e}^{0}_{1} + \dot{X}^{0}_{2} \overline{e}^{0}_{2}; \]

\[ \dot{X}^{S}_{1} = \dot{X}^{S}_{1} + \omega_{1} X^{S}_{2}; \]

\[ \dot{X}^{S}_{2} = \dot{X}^{S}_{2} - \omega_{1} X^{S}_{1}; \]

\[ \dot{X}^{S}_{3} = \dot{X}^{S}_{3}. \]

5. Calculation of code pseudoranges

\[ \begin{cases} S_{C/A} = \bigl(Raw\_range_{C/A} + offset_{L1}\bigr)\,c,\\ S_{L1(L2)} = \bigl(Raw\_range_{L1(L2)} + offset_{L1(L2)}\bigr)\,c \end{cases} \quad \text{for GPS;} \]

Corrected pseudorange: Raw code measurement + SV clock offset. Note: GPS adds offset, GLONASS subtracts. Residual error: 0.5-1m RMS.

\[ \begin{cases} S_{C/A} = \bigl(Raw\_range_{C/A} - offset\bigr)\,c,\\ S_{L1(L2)} = \bigl(Raw\_range_{L1(L2)} - offset\bigr)\,c \end{cases} \quad \text{for GLONASS;} \]

GLONASS pseudorange with opposite clock correction sign convention. Reflects different time system definitions between GPS/GLONASS.

where: \( c \) is the speed of light in a vacuum; \( c = 299792458 \) m/s.

The pseudorange rate is calculated by:

\[ \dot{S}_{L1(2)} = -\,c \;\cdot\; \frac{F_{d,L1(L2)}}{f^{*}_{L1(2)}} \]

Pseudorange rate from Doppler shift. Critical for carrier-smoothed code and velocity solutions (0.05 m/s accuracy). Sign convention matches RINEX standards.

where:

\[ F_{d,L1(L2)} \text{ — Doppler frequency measured on } f_{L1} \text{ and } f_{L2} \]

(Structure of measurement data for Z18 receiver for GPS and structure of measurement data for GG24 receiver for GLONASS — see the previous lecture and its appendix for details.);

The frequency is calculated by:

\[ f^{*}_{L1(2)} = f_{L1(2)} \;\cdot\; (1 + drift); \]

Satellite transmitted frequency accounting for clock drift. Essential for precise Doppler-to-velocity conversion.

\[ \begin{cases} f_{L1} = 1575.42 \cdot 10^{6}\,\text{Hz}, \\ f_{L2} = 1227.6 \cdot 10^{6}\,\text{Hz}; \end{cases} \quad \text{for GPS;} \] \[ \begin{cases} f_{L1} = 1602 \cdot 10^{6} + n \cdot 562.5 \cdot 10^{3}\,\text{Hz}, \\ f_{L2} = 1246 \cdot 10^{6} + n \cdot 437.5 \cdot 10^{3}\,\text{Hz}; \end{cases} \quad \text{for GLONASS;} \]

\(n\) is the GLONASS frequency channel number.

The phase pseudoranges are calculated using the following formulas:

\[ \begin{cases} \varphi_{L1} = \varphi_{1} \,\frac{c}{f_{L1}} + offset_{L1}\,c, \\ \varphi_{L2} = \varphi_{2} \,\frac{c}{f_{L2}} + offset_{L2}\,c \end{cases} \quad \text{for GPS;} \]

Phase pseudorange construction. Enables mm-level positioning when combined with integer ambiguity resolution (PPP/RTK).

\[ \begin{cases} \varphi_{L1} = \varphi_{1} \,\frac{c}{f_{L1}} - offset\,c, \\ \varphi_{L2} = \varphi_{2} \,\frac{c}{f_{L2}} - offset\,c \end{cases} \quad \text{for GLONASS;} \]

6. Calculation of corrections accounting for Earth’s rotation

Corrections accounting for Earth’s rotation are applied only to the parameters \( S_{C/A}, S_{L1}, S_{L2}, \dot{S}_{L1}, \dot{S}_{L2}, \varphi_{L1}, \varphi_{L2} \) whose validity flags are zero \( (\text{П} p_{i,j,k} = 0) \), according to:

\[ \Delta_{\omega} \eta_{i,j,k} = \frac{\omega_3}{c} \cdot \bigl( y_{j} \cdot (x_{j} - X_{i}) - x_{j} \cdot (y_{j} - Y_{i}) \bigr); \]

Compensates for Sagnac effect in pseudoranges due to Earth's rotation during signal propagation. Critical for achieving < 10 cm positioning accuracy in PPP systems.

\[ \Delta_{\omega} \dot{\eta}_{i,j,k} = \frac{\omega_3}{c} \cdot \bigl( -\dot{y}_{j} \cdot X_{i} + \dot{x}_{j} \cdot Y_{i} \bigr); \]

Compensates Doppler shift induced by Earth's rotation. Required for <0.1 mm /s velocity accuracy.

where \(i\) is the navigation receiver number;
\(j\) is the navigation satellite number;
\(k\) is the navigation system type;
\[\eta = S_{C/A}, S_{L1}, S_{L2}, \varphi_{L1}, \varphi_{L2};\]
\[\dot{\eta} = \dot{S}_{L1}, \dot{S}_{L2}.\]
Refined TNP values are determined as:
\[\eta_{i,j,1,k} = \eta_{i,j,k} + \Delta_{\omega}\eta_{i,j,k},\]
\[\dot{\eta}_{i,j,1,k} = \dot{\eta}_{i,j,k} + \Delta_{\omega}\dot{\eta}_{i,j,k},\]

7. Sequence of measurement information processing. Software structure.

During normal operation, the Coordinate Correction Station (CCS) software executes the following sequence of measurement-information (MI) processing steps:

  • MI acquisition from all Navigation Receiver Systems (NRS);
  • Preliminary MI processing;
  • MI filtering and statistical-characteristics calculation;
  • Application of correction parameters accounting for the signal-propagation medium;
  • MI analysis and navigation-field integrity monitoring;
  • Generation of differential-correction and integrity (DCI) data;
  • DCI quality validation and storage of results in the RPKNP Database.

The CCS software is a set of modules that populate the RPKNP DB. Core functions:

  • Input, verification, and adjustment of CCS status information;
  • Input, verification, and adjustment of external-system status information;
  • Accounting for geophysical fields in the CCS geographic zone;
  • DCI generation;
  • CCS performance-and-fault monitoring;
  • External-systems performance monitoring;
  • Automated CCS hardware self-test via Management & Control APM commands.
// Software structure of the Coordinate-Time and Navigation Support System of Ukraine

FUNCTION main():
            // Initialize database
            rpknp_db = INIT_RPKNP_DATABASE()

            WHILE has_new_data_frame():
// Step 1: Acquire and unpack raw data raw_frame = ACQUIRE_NRS_FRAME() unpacked_data = UNPACK_FRAME(raw_frame) // Step 2: Decode DI di_data = DECODE_DI(unpacked_data) // Step 3: Convert to physical parameters physical_params = CONVERT_DI_TO_PHYSICAL(di_data) // Step 4: Detect and remove outliers cleaned_params = DETECT_AND_REMOVE_OUTLIERS(physical_params) REPEAT:
// Step 5: Filter and align filtered_data = APPLY_FILTERS(cleaned_params, rpknp_db) statistical_data = PERFORM_STATISTICAL_ANALYSIS(filtered_data) aligned_data = TIME_ALIGN_DI(statistical_data) // Step 6: Measurement corrections corrected_data = APPLY_MEASUREMENT_CORRECTIONS(aligned_data, rpknp_db) // Step 7: Navigation field integrity check integrity_status = NAVIGATION_FIELD_INTEGRITY_MONITOR(corrected_data, rpknp_db) // Step 8: Generate optimal DCI optimal_dci = GENERATE_OPTIMAL_DCI(corrected_data, integrity_status) // Step 9: Validate DCI quality dci_quality_ok = VALIDATE_DCI_QUALITY(optimal_dci, rpknp_db)
UNTIL dci_quality_ok == TRUE // Step 10: Encode and deliver DCI encoded_dci = ENCODE_DCI_FOR_USERS(optimal_dci) DELIVER_TO_END_USERS(encoded_dci) // Step 11: Encode MI/DI and transfer to CCS encoded_midi = ENCODE_MI_DI_FOR_CCS(optimal_dci) TRANSFER_TO_CCS(encoded_midi) // Step 12: Update DB UPDATE_RPKNP_DATABASE(optimal_dci)
END WHILE CLOSE_DATABASE(rpknp_db) END FUNCTION

Measurement-Information Pre-processing Module shall perform:

  • Data acquisition from all NRS;
  • NRS mode control via commands from the Management & Control module;
  • DI/MI frame unpacking and decoding received from NRS;
  • MI-to-physical-parameters conversion;
  • DI/MI validity check.

DCI Computation Module shall perform:

  • MI filtering and statistical analysis;
  • Applying signal-medium corrections to measured parameters;
  • MI analysis;
  • DCI formation;
  • DCI quality validation.

DCI Encoding Module shall generate messages for end-user delivery (RTCM SC-104) and for upload to the RPKNP DB.

// Logic-software structure of the Coordinate-Time and Navigation Support System of Ukraine

Begin Coordinate-Time and Navigation Support System
            INITIALIZE RPKNP_DATABASE
            INITIALIZE Control_And_Management_Module

            WHILE system_is_running:
// Управляющий модуль управляет остальными Control_And_Management_Module:
▸ Trigger MI_Preprocessing_Module ▸ Trigger DCI_Computation_Module ▸ Trigger DCI_Encoding_Module ▸ Monitor status of all modules
// Модуль предварительной обработки измерительной информации MI_Preprocessing_Module:
▸ Input raw Measurement Information (MI) ▸ Perform preprocessing ▸ Write preprocessed_MI to RPKNP_Database
// Модуль вычисления дифференциальной информации DCI_Computation_Module:
▸ Read preprocessed_MI from RPKNP_Database ▸ Compute DCI ▸ Write DCI_result to RPKNP_Database
// Модуль кодирования дифференциальной информации DCI_Encoding_Module:
▸ Read DCI_result from RPKNP_Database ▸ Encode into transmission format ▸ Write encoded_DCI to RPKNP_Database
END WHILE END SYSTEM

Implementation Result: The described algorithms provide initial GNSS data processing, including satellite coordinate computation, pseudorange calculation, and Earth rotation corrections. These algorithms use standard orbital mechanics methods, such as solving Kepler's equation and coordinate transformations, as well as corrections to account for signal propagation effects. This ensures preliminary preparation of navigation data for subsequent processing and analysis.