ADCS.CONOPS.goals.vector_goals.coordinate_goal module

class ADCS.CONOPS.goals.vector_goals.coordinate_goal.Coordinate_Goal(lat, lon, alt, boresight_name=None)[source]

Bases: Vector_Goal

Ground-pointing goal defined by fixed geodetic coordinates.

This class implements a vector-alignment goal that points a spacecraft body-frame vector toward a fixed location on the Earth defined by geodetic latitude, longitude, and altitude using the WGS84 reference ellipsoid.

The target location is fixed in the Earth-Centered Earth-Fixed (ECEF) frame and rotates with the Earth. At runtime, the target position is transformed into the inertial frame using the current orbital state.

The goal mapping implemented by this class is

\[G_{\mathrm{coord}}(\mathcal{O}(t)) = \left( \hat{\mathbf{r}}_{\mathrm{LOS}}(t), \boldsymbol{\omega}_{\mathrm{ref}}(t) \right)\]

where \(\hat{\mathbf{r}}_{\mathrm{LOS}}\) is the inertial line-of-sight unit vector from the spacecraft to the ground target and \(\boldsymbol{\omega}_{\mathrm{ref}}\) is the inertial angular velocity required to maintain continuous pointing.

See also

Goal, Vector_Goal, Orbital_State

Parameters:
  • lat (float)

  • lon (float)

  • alt (float)

  • boresight_name (str | None)

to_ref(os0)[source]

Compute inertial reference vectors for ground target tracking.

The target position is assumed fixed in the ECEF frame and is transformed into the inertial frame using the current orbital state. The inertial line-of-sight vector is computed as the relative position between spacecraft and target.

The reference angular velocity is computed from the relative motion of the line-of-sight vector as

\[\boldsymbol{\omega}_{\mathrm{ref}} = \frac{\mathbf{r}_{\mathrm{rel}} \times \mathbf{v}_{\mathrm{rel}}} {\lVert \mathbf{r}_{\mathrm{rel}} \rVert^2}\]

where:

  • \(\mathbf{r}_{\mathrm{rel}}\) is the relative position from spacecraft to target

  • \(\mathbf{v}_{\mathrm{rel}}\) is the relative velocity accounting for both spacecraft motion and Earth rotation

Earth rotation is modeled using the constant angular velocity

\[\begin{split}\boldsymbol{\omega}_{\oplus} = \begin{bmatrix} 0 \\ 0 \\ 7.2921159 \times 10^{-5} \end{bmatrix} \ \mathrm{rad/s}\end{split}\]
Parameters:

os0 (Orbital_State) – Current orbital state.

Returns:

Inertial line-of-sight unit vector and reference angular velocity.

Return type:

Tuple[numpy.ndarray, numpy.ndarray]