ADCS.environment.star_catalog module¶
Bases:
objectNavigation 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
StarCatalogand returned byget_visible_stars().They are consumed by attitude sensors such as
StarTrackerfor 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.
- 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:
objectNavigation 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
NavigationStarobject 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:
The star lies within the tracker field of view (FOV)
The star is not occluded by the Earth
The star is not occluded by the Moon (optional)
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_radto 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
NavigationStarobjects.- Returns:
List of navigation stars.
- Return type:
list[NavigationStar]