public class YawSteering extends AbstractGroundPointingWrapper
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 lightning 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(AbstractGroundPointing groundPointingLaw,
PVCoordinatesProvider sunIn,
Vector3D phasingAxisIn)
Creates a new instance.
|
YawSteering(AbstractGroundPointing groundPointingLaw,
PVCoordinatesProvider sunIn,
Vector3D phasingAxisIn,
Vector3D losInSatFrameVec,
Vector3D losNormalInSatFrameVec)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
Attitude |
getAttitude(PVCoordinatesProvider pvProv,
AbsoluteDate date,
Frame frame)
Compute the attitude corresponding to an orbital state.
|
TimeStampedAngularCoordinates |
getCompensation(PVCoordinatesProvider pvProv,
AbsoluteDate date,
Frame orbitFrame,
Attitude base)
Compute the TimeStampedAngularCoordinates at a given time.
|
Vector3D |
getPhasingAxis()
Getter for the satellite axis that must be roughly in Sun direction.
|
PVCoordinatesProvider |
getSun()
Returns the Sun.
|
String |
toString() |
getBaseState, getGroundPointingLaw, getTargetPoint, getTargetPV, getUnderlyingAttitudeLaw, setSpinDerivativesComputation
getBodyFrame, getBodyShape, getLosInSatFrame, getLosNormalInSatFrame
getSpinDerivativesComputation
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
computeSpinByFD, computeSpinDerivativeByFD, getAttitude
public YawSteering(AbstractGroundPointing groundPointingLaw, PVCoordinatesProvider sunIn, Vector3D phasingAxisIn)
groundPointingLaw
- ground pointing attitude provider without yaw compensationsunIn
- sun motion modelphasingAxisIn
- 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)public YawSteering(AbstractGroundPointing groundPointingLaw, PVCoordinatesProvider sunIn, Vector3D phasingAxisIn, Vector3D losInSatFrameVec, Vector3D losNormalInSatFrameVec)
groundPointingLaw
- ground pointing attitude provider without yaw compensationsunIn
- sun motion modelphasingAxisIn
- 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)losInSatFrameVec
- LOS in satellite frame axislosNormalInSatFrameVec
- LOS normal axis in satellite framepublic Attitude getAttitude(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame frame) throws PatriusException
getAttitude
in interface AttitudeProvider
getAttitude
in class AbstractGroundPointing
pvProv
- local position-velocity provider around current datedate
- current dateframe
- reference frame from which attitude is computedPatriusException
- if attitude cannot be computed for provided datepublic TimeStampedAngularCoordinates getCompensation(PVCoordinatesProvider pvProv, AbsoluteDate date, Frame orbitFrame, Attitude base) throws PatriusException
getCompensation
in class AbstractGroundPointingWrapper
pvProv
- provider for PV coordinatesdate
- date at which rotation is requestedorbitFrame
- reference frame from which attitude is computedbase
- base satellite attitude in given frame.PatriusException
- if some specific error occurspublic Vector3D getPhasingAxis()
public PVCoordinatesProvider getSun()
Copyright © 2021 CNES. All rights reserved.