pylupnt.GnssAttitude

class pylupnt.GnssAttitude
static compute(*args, **kwargs)

Overloaded function.

  1. compute(r_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], r_sun_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”]) -> tuple[typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”], typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”], typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”]]

Compute the orthonormal GNSS attitude triad (ex, ey, ez) directly from the Sun direction; returns (ex, ey, ez)

  1. compute(r_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], v_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], r_sun_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”]) -> tuple[typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”], typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”], typing.Annotated[numpy.typing.NDArray[Real], “[3, 1]”]]

Compute the orthonormal GNSS attitude triad (ex, ey, ez) via the documented nominal yaw-steering law (GnssYawSteering.nominal_yaw_angle); numerically identical to compute(r_sat_eci, r_sun_eci) but routes explicitly through the implemented yaw-steering law. Returns (ex, ey, ez)

static compute_from_yaw_angle(r_sat_eci: Annotated[numpy.typing.ArrayLike, Real, '[3, 1]'], v_sat_eci: Annotated[numpy.typing.ArrayLike, Real, '[3, 1]'], yaw_angle: Real) tuple[Annotated[numpy.typing.NDArray[Real], '[3, 1]'], Annotated[numpy.typing.NDArray[Real], '[3, 1]'], Annotated[numpy.typing.NDArray[Real], '[3, 1]']]

Build the attitude triad (ex, ey, ez) from an explicit yaw angle phi [rad] (e.g. from any GnssYawSteering nominal or modeled/maneuver yaw law) and orbital geometry alone, by rotating the orbital reference frame (ex_ref = normalize(v_sat), ey_ref = cross(ez, ex_ref)) about the nadir axis ez by phi. Returns (ex, ey, ez)

get_angles(self: pylupnt._pylupnt.GnssAttitude, u: Annotated[numpy.typing.ArrayLike, Real, '[3, 1]']) tuple[Real, Real]

Off-boresight angles (theta, phi) of unit direction u; returns (theta, phi)

get_ex(self: pylupnt._pylupnt.GnssAttitude) Annotated[numpy.typing.NDArray[Real], '[3, 1]']
get_ey(self: pylupnt._pylupnt.GnssAttitude) Annotated[numpy.typing.NDArray[Real], '[3, 1]']
get_ez(self: pylupnt._pylupnt.GnssAttitude) Annotated[numpy.typing.NDArray[Real], '[3, 1]']
get_rotation_matrix(self: pylupnt._pylupnt.GnssAttitude) Annotated[numpy.typing.NDArray[Real], '[3, 3]']

Body-to-inertial rotation matrix [ex, ey, ez] (columns)

update(*args, **kwargs)

Overloaded function.

  1. update(self: pylupnt._pylupnt.GnssAttitude, r_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], r_sun_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”]) -> None

(Re-)compute and cache the attitude triad for this instance, directly from the Sun direction

  1. update(self: pylupnt._pylupnt.GnssAttitude, r_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], v_sat_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”], r_sun_eci: typing.Annotated[numpy.typing.ArrayLike, Real, “[3, 1]”]) -> None

(Re-)compute and cache the attitude triad for this instance via the documented nominal yaw-steering law; see compute(r_sat_eci, v_sat_eci, r_sun_eci)