ADCS.estimators.orbit_estimators.orbit_GPS module

class ADCS.estimators.orbit_estimators.orbit_GPS.Orbit_GPS(est_sat, J2000, os_template)[source]

Bases: Orbit_Estimator

Pass-through GPS-based orbit estimator.

This estimator directly converts raw GPS measurements into an inertial orbital state without performing any temporal propagation or filtering. No dynamic model, prediction step, or recursive estimation is applied. Instead, the most recent GPS measurement is assumed to be the best available estimate of the satellite state.

Given a GPS measurement expressed in the Earth-Centered Earth-Fixed (ECEF) frame, the estimator constructs the inertial estimate via a deterministic coordinate transformation:

\[\begin{split}\hat{\mathbf{x}}_{ECI}(t) = \begin{bmatrix} \mathbf{r}_{ECI} \\ \mathbf{v}_{ECI} \end{bmatrix} = T_{ECEF \rightarrow ECI}(t) \begin{bmatrix} \mathbf{r}_{ECEF} \\ \mathbf{v}_{ECEF} \end{bmatrix}\end{split}\]

where \(T_{ECEF \rightarrow ECI}(t)\) is the time-dependent rotation defined by the Earth orientation and ephemeris models.

This estimator is primarily intended for:

  • Initializing more advanced orbit estimators

  • Scenarios where GPS data is trusted without filtering

  • Debugging and validation of coordinate-frame transformations

The estimated covariance matrix is constructed directly from the GPS sensor noise parameters provided by the satellite hardware model.

Inherits:

Orbit_Estimator

Parameters:
reset(est_sat, os_template)[source]

Reset the estimator configuration and noise parameters.

This method reinitializes the estimator by extracting GPS sensor noise characteristics from the provided satellite hardware model. The standard deviation of the first available GPS sensor is stored and later used to construct the state covariance matrix.

No state estimate is created during reset; the estimator will produce an estimate upon the next call to update().

Parameters:
  • est_sat (EstimatedSatellite) – Satellite hardware model containing GPS sensor definitions.

  • os_template (Orbital_State) – Template orbital state providing access to ephemeris and environmental models.

Raises:

ValueError – If the satellite hardware model does not contain any GPS sensors.

Returns:

None

Return type:

None

update(GPS_measurements, J2000)[source]

Update the orbital state estimate using GPS measurements.

This method converts the most recent GPS measurement into an inertial orbital state and constructs a corresponding covariance matrix based on sensor noise specifications.

The update procedure is as follows:

  1. A temporary Orbital_State is created at the current epoch to enable frame transformations.

  2. The GPS measurement is transformed from ECEF to ECI coordinates.

  3. A covariance matrix \(\mathbf{P}\) is constructed assuming independent measurement noise:

    \[\mathbf{P} = \mathrm{diag} \left( \sigma_{r}^2, \sigma_{r}^2, \sigma_{r}^2, \sigma_{v}^2, \sigma_{v}^2, \sigma_{v}^2 \right)\]

If only position is measured, the velocity is either inherited from the previous estimate or set to zero, with a deliberately large velocity uncertainty to reflect the lack of direct measurement.

Parameters:
  • GPS_measurements (list[numpy.ndarray]) – List of GPS measurement vectors. Each measurement must have length 3 (position only) or 6 (position and velocity).

  • J2000 (float) – Current epoch expressed in seconds since J2000.

Returns:

Estimated orbital state containing the inertial state vector \(\hat{\mathbf{x}}\) and covariance matrix \(\mathbf{P}\).

Return type:

EstimatedOrbital_State

Raises:

ValueError – If the GPS measurement vector does not have length 3 or 6.