File gnss_yaw_steering.h

Parent directory (agents)

GNSS satellite yaw-attitude steering laws.

Definition (agents/gnss_yaw_steering.h)

Detailed Description

Stanford NAV LAB

0.1

2026-06-07

Copyright (c) 2026

Implements the nominal GNSS yaw-attitude model and the precise (“modeled”) yaw-steering laws used by GPS, Galileo and BDS-3 satellites during yaw maneuvers (orbit midnight/noon turns and eclipse-season yaw steering), following:

  1. Cheng, T. Geng, J. Liu, X. Xie, P. Zhao, W. Liu, “GNSS satellite yaw

attitude laws and impact on satellite clock, phase OSB and PPP-AR”, Advances in Space Research 75 (2025) 2535-2549, https://doi.org/10.1016/j.asr.2024.10.064

Two angles parameterize the satellite-Sun-Earth geometry that drives all of these laws (Kouba, 2009):

  • beta : Sun elevation angle above the orbital plane [rad] positive when the Sun is on the same side of the orbital plane as the orbit-normal (angular-momentum) vector.

  • mu : orbit angle [rad] the geocentric angle, measured in the orbital plane in the direction of motion, from the orbit “midnight point” (where the satellite is directly behind the Earth as seen from the Sun) to the satellite. mu = 0 at the midnight point and mu = +/-pi at the “noon point”.

Each law below is a stateless, pure function mirroring one numbered equation from the paper; they are intentionally low-level building blocks (no maneuver-window detection / state machine is implemented, since the trigger conditions differ across satellite blocks and are only described qualitatively in the reference). A typical caller:

  1. computes beta/mu (and their rates) from the satellite ephemeris and Sun position, e.g. via BetaAngle/OrbitAngle below,

  2. evaluates NominalYawAngle to get the nominal attitude,

  3. detects whether the satellite is inside a yaw-maneuver window (shadow crossing / midnight or noon turn / eclipse season) using the block-specific criteria summarized in the reference (Section 2), and

  4. if so, evaluates the corresponding “modeled” law instead.

Includes

  • lupnt/core/definitions.h

Included By

Namespaces

Classes