public class YawSteering extends GroundPointing implements AttitudeProviderModifier
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.
GroundPointing
,
Serialized FormConstructor and Description |
---|
YawSteering(Frame inertialFrame,
GroundPointing groundPointingLaw,
PVCoordinatesProvider sun,
org.hipparchus.geometry.euclidean.threed.Vector3D phasingAxis)
Creates a new instance.
|
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.RealFieldElement<T>> |
getAttitude(FieldPVCoordinatesProvider<T> pvProv,
FieldAbsoluteDate<T> date,
Frame frame)
Compute the attitude corresponding to an orbital state.
|
Attitude |
getAttitude(PVCoordinatesProvider pvProv,
AbsoluteDate date,
Frame frame)
Compute the attitude corresponding to an orbital state.
|
<T extends org.hipparchus.RealFieldElement<T>> |
getBaseState(FieldPVCoordinatesProvider<T> pvProv,
FieldAbsoluteDate<T> date,
Frame frame)
Compute the base system state at given date, without compensation.
|
Attitude |
getBaseState(PVCoordinatesProvider pvProv,
AbsoluteDate date,
Frame frame)
Compute the base system state at given date, without compensation.
|
<T extends org.hipparchus.RealFieldElement<T>> |
getTargetPV(FieldPVCoordinatesProvider<T> pvProv,
FieldAbsoluteDate<T> date,
Frame frame)
Compute the target point position/velocity in specified frame.
|
TimeStampedPVCoordinates |
getTargetPV(PVCoordinatesProvider pvProv,
AbsoluteDate date,
Frame frame)
Compute the target point position/velocity in specified frame.
|
AttitudeProvider |
getUnderlyingAttitudeProvider()
Get the underlying (ground pointing) attitude provider.
|
getBodyFrame
public YawSteering(Frame inertialFrame, GroundPointing groundPointingLaw, PVCoordinatesProvider sun, org.hipparchus.geometry.euclidean.threed.Vector3D phasingAxis) throws OrekitException
inertialFrame
- frame in which orbital velocities are computedgroundPointingLaw
- ground pointing attitude provider without yaw compensationsun
- sun motion modelphasingAxis
- 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)OrekitException
- if the frame specified is not a pseudo-inertial framepublic AttitudeProvider getUnderlyingAttitudeProvider()
getUnderlyingAttitudeProvider
in interface AttitudeProviderModifier
GroundPointing
instancepublic TimeStampedPVCoordinates getTargetPV(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame) throws OrekitException
This method is public
only to allow users to subclass this
abstract class from other packages. It is not intended to
be used directly.
getTargetPV
in class GroundPointing
pvProv
- provider for PV coordinatesdate
- date at which target point is requestedframe
- frame in which observed ground point should be providedOrekitException
- if some specific error occurs,
such as no target reachedpublic <T extends org.hipparchus.RealFieldElement<T>> TimeStampedFieldPVCoordinates<T> getTargetPV(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame) throws OrekitException
getTargetPV
in class GroundPointing
T
- type of the fiels elementspvProv
- provider for PV coordinatesdate
- date at which target point is requestedframe
- frame in which observed ground point should be providedOrekitException
- if some specific error occurs,
such as no target reachedpublic Attitude getBaseState(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame) throws OrekitException
pvProv
- provider for PV coordinatesdate
- date at which state is requestedframe
- reference frame from which attitude is computedOrekitException
- if some specific error occurspublic <T extends org.hipparchus.RealFieldElement<T>> FieldAttitude<T> getBaseState(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame) throws OrekitException
T
- type of the field elementspvProv
- provider for PV coordinatesdate
- date at which state is requestedframe
- reference frame from which attitude is computedOrekitException
- if some specific error occurspublic Attitude getAttitude(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame) throws OrekitException
getAttitude
in interface AttitudeProvider
getAttitude
in class GroundPointing
pvProv
- local position-velocity provider around current datedate
- current dateframe
- reference frame from which attitude is computedOrekitException
- if attitude cannot be computedpublic <T extends org.hipparchus.RealFieldElement<T>> FieldAttitude<T> getAttitude(FieldPVCoordinatesProvider<T> pvProv, FieldAbsoluteDate<T> date, Frame frame) throws OrekitException
getAttitude
in interface AttitudeProvider
getAttitude
in class GroundPointing
T
- type of the field elementspvProv
- local position-velocity provider around current datedate
- current dateframe
- reference frame from which attitude is computedOrekitException
- if attitude cannot be computedCopyright © 2002-2017 CS Systèmes d'information. All rights reserved.