ADCS.environment.star_catalog module

class ADCS.environment.star_catalog.NavigationStar(hip_id, name, ra_rad, dec_rad, vmag, s_eci)[source]

Bases: object

Navigation Star Definition

This class defines a single navigation star used by attitude determination sensors such as star trackers.

A navigation star is modeled as a distant, fixed-direction celestial reference whose inertial pointing direction is known with high accuracy. The class encapsulates both the catalog metadata and the corresponding inertial-frame unit vector.

Inertial Direction Model

Each star is assumed to be located at an effectively infinite distance. Therefore, its apparent direction is constant and independent of the spacecraft position. The star direction is represented as a unit vector in the Earth-Centered Inertial (ECI) frame.

Given right ascension \(\alpha\) and declination \(\delta\), the inertial direction vector is defined as:

\[\begin{split}\mathbf{s}_{\mathrm{ECI}} = \begin{bmatrix} \cos\delta \cos\alpha \\ \cos\delta \sin\alpha \\ \sin\delta \end{bmatrix}\end{split}\]

This mapping follows the standard spherical-to-Cartesian conversion described in Vallado (2013).

Intended Usage

Instances of this class are typically constructed by StarCatalog and returned by get_visible_stars().

They are consumed by attitude sensors such as StarTracker for centroiding, pattern matching, and attitude estimation.

Assumptions

  • Stellar parallax is neglected

  • Proper motion is neglected

  • Stellar aberration is neglected

These approximations are appropriate for typical small-satellite star tracker simulations.

param hip_id:

Hipparcos catalog identifier.

type hip_id:

int

param name:

Common or Bayer star name.

type name:

str

param ra_rad:

Right ascension in radians.

type ra_rad:

float

param dec_rad:

Declination in radians.

type dec_rad:

float

param vmag:

Apparent visual magnitude (lower is brighter).

type vmag:

float

param s_eci:

Unit direction vector toward the star in the ECI frame.

type s_eci:

numpy.ndarray

References

  • Vallado, D. A., Fundamentals of Astrodynamics and Applications, 4th ed., Section 2.3.

dec_rad: float
hip_id: int
name: str
ra_rad: float
s_eci: ndarray[tuple[int, ...], dtype[float64]]
vmag: float
Parameters:
  • hip_id (int)

  • name (str)

  • ra_rad (float)

  • dec_rad (float)

  • vmag (float)

  • s_eci (ndarray[tuple[int, ...], dtype[float64]])

class ADCS.environment.star_catalog.StarCatalog[source]

Bases: object

Navigation Star Catalog

This class provides a curated catalog of bright navigation stars and implements geometric visibility filtering suitable for star tracker simulations and attitude determination algorithms.

The catalog is intentionally limited to stars with relatively high apparent brightness to reflect realistic onboard sensor constraints and to reduce computational load.

Catalog Composition

Each catalog entry is represented by a NavigationStar object containing:

  • Hipparcos identifier

  • Common name

  • Right ascension and declination

  • Apparent visual magnitude

  • Precomputed ECI-frame unit direction

The default catalog is derived from the Hipparcos Catalog (ESA, 1997).

Visibility Model Overview

A star is considered visible to a star tracker if all of the following geometric conditions are satisfied:

  1. The star lies within the tracker field of view (FOV)

  2. The star is not occluded by the Earth

  3. The star is not occluded by the Moon (optional)

  4. The tracker is not blinded by the Sun

These checks are purely geometric and are independent of sensor noise, detector physics, or image processing effects.

Coordinate Frames

  • All direction vectors are expressed in the Earth-Centered Inertial (ECI) frame.

  • Position vectors are expressed in kilometers.

  • Angular quantities are expressed in radians.

param R_EARTH:

Mean Earth radius [km].

type R_EARTH:

float

param R_MOON:

Mean Moon radius [km].

type R_MOON:

float

See also

-

class:~ADCS.environment.NavigationStar

-

class:~ADCS.satellite_hardware.sensors.star_tracker.StarTracker

get_visible_stars(boresight_eci, fov_rad, r_sat_eci, sun_eci=None, moon_eci=None, sun_exclusion_rad=np.float64(0.4363323129985824))[source]

Determine which navigation stars are visible to a star tracker.

This method applies a sequence of geometric visibility checks to every star in the catalog and returns only those that satisfy all criteria.

1. Field-of-View Constraint

A star is inside the sensor field of view if the angular separation between the boresight direction \(\mathbf{b}\) and the star direction \(\mathbf{s}\) satisfies:

\[\arccos(\mathbf{b}^\top \mathbf{s}) \le \frac{\mathrm{FOV}}{2}\]

2. Earth Occlusion

The Earth subtends an angular radius as seen from the spacecraft:

\[\theta_\oplus = \arcsin\left(\frac{R_\oplus}{\|\mathbf{r}_{\mathrm{sat}}\|}\right)\]

Let \(\mathbf{n} = -\mathbf{r}_{\mathrm{sat}} / \|\mathbf{r}_{\mathrm{sat}}\|\) be the nadir direction. A star is considered occluded by Earth if:

\[\arccos(\mathbf{n}^\top \mathbf{s}) < \theta_\oplus\]

3. Moon Occlusion (Optional)

If the Moon position is provided, its angular radius is computed as:

\[\theta_{\leftmoon} = \arcsin\left(\frac{R_{\leftmoon}}{\|\mathbf{r}_{\leftmoon} - \mathbf{r}_{\mathrm{sat}}\|}\right)\]

The star is rejected if it lies within this angular radius.

4. Sun Exclusion

If the Sun direction lies closer than sun_exclusion_rad to the boresight, the star tracker is assumed to be completely blinded and no stars are returned.

\[\arccos(\mathbf{b}^\top \mathbf{s}_{\odot}) < \theta_{\mathrm{excl}}\]
param boresight_eci:

Star tracker boresight direction (unit vector).

type boresight_eci:

numpy.ndarray

param fov_rad:

Full angular field of view of the star tracker [rad].

type fov_rad:

float

param r_sat_eci:

Spacecraft position in the ECI frame [km].

type r_sat_eci:

numpy.ndarray

param sun_eci:

Sun position in the ECI frame [km].

type sun_eci:

numpy.ndarray | None

param moon_eci:

Moon position in the ECI frame [km].

type moon_eci:

numpy.ndarray | None

param sun_exclusion_rad:

Minimum allowable Sun–boresight separation [rad].

type sun_exclusion_rad:

float

return:

List of visible navigation stars.

rtype:

list[~ADCS.environment.NavigationStar]

References

  • Vallado (2013), Section 5.3 — Earth occlusion geometry

  • Liebe (2002), Section IV-A — Star tracker Sun exclusion

Parameters:
  • boresight_eci (ndarray[tuple[int, ...], dtype[float64]])

  • fov_rad (float)

  • r_sat_eci (ndarray[tuple[int, ...], dtype[float64]])

  • sun_eci (ndarray[tuple[int, ...], dtype[float64]] | None)

  • moon_eci (ndarray[tuple[int, ...], dtype[float64]] | None)

  • sun_exclusion_rad (float)

Return type:

List[NavigationStar]

R_EARTH: float = 6378.1363
R_MOON: float = 1737.4
property stars: List[NavigationStar]

Return the list of navigation stars in the catalog.

This property provides read-only access to the internally stored list of NavigationStar objects.

Returns:

List of navigation stars.

Return type:

list[NavigationStar]