Class YawSteering

  • All Implemented Interfaces:
    AttitudeProvider, AttitudeProviderModifier

    public class YawSteering
    extends GroundPointing
    implements AttitudeProviderModifier
    This class handles yaw steering law.

    Yaw steering is mainly used for low Earth orbiting satellites with no missions-related constraints on yaw angle. It sets the yaw angle in such a way the solar arrays have maximal lighting without changing the roll and pitch.

    The motion in yaw is smooth when the Sun is far from the orbital plane, but gets more and more square like as the Sun gets closer to the orbital plane. The degenerate extreme case with the Sun in the orbital plane leads to a yaw angle switching between two steady states, with instantaneaous π radians rotations at each switch, two times per orbit. This degenerate case is clearly not operationally sound so another pointing mode is chosen when Sun comes closer than some predefined threshold to the orbital plane.

    This class can handle (for now) only a theoretically perfect yaw steering (i.e. the yaw angle is exactly the optimal angle). Smoothed yaw steering with a few sine waves approaching the optimal angle will be added in the future if needed.

    This attitude is implemented as a wrapper on top of an underlying ground pointing law that defines the roll and pitch angles.

    Instances of this class are guaranteed to be immutable.

    Author:
    Luc Maisonobe
    See Also:
    GroundPointing
    • Constructor Detail

      • YawSteering

        public YawSteering​(Frame inertialFrame,
                           GroundPointing groundPointingLaw,
                           PVCoordinatesProvider sun,
                           Vector3D phasingAxis)
        Creates a new instance.
        Parameters:
        inertialFrame - frame in which orbital velocities are computed
        groundPointingLaw - ground pointing attitude provider without yaw compensation
        sun - sun motion model
        phasingAxis - satellite axis that must be roughly in Sun direction (if solar arrays rotation axis is Y, then this axis should be either +X or -X)
        Since:
        7.1
    • Method Detail

      • getTargetPV

        public TimeStampedPVCoordinates getTargetPV​(PVCoordinatesProvider pvProv,
                                                    AbsoluteDate date,
                                                    Frame frame)
        Compute the target point position/velocity in specified frame.
        Specified by:
        getTargetPV in class GroundPointing
        Parameters:
        pvProv - provider for PV coordinates
        date - date at which target point is requested
        frame - frame in which observed ground point should be provided
        Returns:
        observed ground point position (element 0) and velocity (at index 1) in specified frame
      • getBaseState

        public Attitude getBaseState​(PVCoordinatesProvider pvProv,
                                     AbsoluteDate date,
                                     Frame frame)
        Compute the base system state at given date, without compensation.
        Parameters:
        pvProv - provider for PV coordinates
        date - date at which state is requested
        frame - reference frame from which attitude is computed
        Returns:
        satellite base attitude state, i.e without compensation.
      • getBaseState

        public <T extends CalculusFieldElement<T>> FieldAttitude<T> getBaseState​(FieldPVCoordinatesProvider<T> pvProv,
                                                                                 FieldAbsoluteDate<T> date,
                                                                                 Frame frame)
        Compute the base system state at given date, without compensation.
        Type Parameters:
        T - type of the field elements
        Parameters:
        pvProv - provider for PV coordinates
        date - date at which state is requested
        frame - reference frame from which attitude is computed
        Returns:
        satellite base attitude state, i.e without compensation.
        Since:
        9.0
      • getAttitude

        public Attitude getAttitude​(PVCoordinatesProvider pvProv,
                                    AbsoluteDate date,
                                    Frame frame)
        Compute the attitude corresponding to an orbital state.
        Specified by:
        getAttitude in interface AttitudeProvider
        Overrides:
        getAttitude in class GroundPointing
        Parameters:
        pvProv - local position-velocity provider around current date
        date - current date
        frame - reference frame from which attitude is computed
        Returns:
        attitude on the specified date and position-velocity state