DEIMOS
Earth Observation Mission CFI Software
Pointing Software User Manual
ESA

EECFI::SatNomTransId Class Reference

Class for storing the Satellite Nominal Attitude configuration parameters. More...

Inheritance diagram for EECFI::SatNomTransId:
EECFI::CfiId EECFI::CfiClass

List of all members.

Public Member Functions

 SatNomTransId ()
 Default constructor.
 SatNomTransId (const SatNomTransId &other)
virtual ~SatNomTransId () EXCEPT
 Class destructor.
void init (long aocsModel)
 Initialise using AOCS model.
void init (long model, const std::vector< double > &modelParams)
 Initialise satellite nominal attitude model for a given satellite.
void init (long angleType, const std::vector< long > &harmTypePitch, const std::vector< long > &harmTypeRoll, const std::vector< long > &harmTypeYaw, const std::vector< double > &harmCoeffPitch, const std::vector< double > &harmCoeffRoll, const std::vector< double > &harmCoeffYaw)
 Initialise satellite orbital to satellite nominal attitude mispointing angles for a given satellite with harmonics.
void init (const TimeCorrelation &timeId, const std::vector< std::string > &files, long timeInitMode, long timeRef, double time0, double time1)
 Initialise satellite nominal attitude angles for a given satellite reading values from the attitude files.
long getAOCS () const
 Get AOCS parameters.
void setAOCS (long aocsModel)
 Change initialisation AOCS parameters from the object.
ParamModel getParam () const
 Get initialisation parameters of object.
void setParam (const ParamModel &paramModel)
 Change initialisation parameters of the object.
HarmonicModel getHarmonic () const
 Get harmonic parameters of object.
void setHarmonic (const HarmonicModel &harmModel)
 Change harmonic parameters of the object.
AttFileModel getFile () const
 Get file data of object.
void setFile (const AttFileModel &fileModel)
 Change initialisation file data of the object.
void setAzElDefinition (const AzElDefinition &azElDef)
 Set azimuth/elevation definition.
SatId satId () const
 Return satellite id.
SatNomTransIdoperator= (const SatNomTransId &other)

Protected Member Functions

void eraseObject ()
 Erase object and free memory.

Detailed Description

Class for storing the Satellite Nominal Attitude configuration parameters.


Constructor & Destructor Documentation

EECFI::SatNomTransId::SatNomTransId (  ) 

Default constructor.

EECFI::SatNomTransId::SatNomTransId ( const SatNomTransId other  ) 

Copy constructor

Parameters:
other The SatNomTransId to copy from
EECFI::SatNomTransId::~SatNomTransId (  )  [virtual]

Class destructor.

References eraseObject().


Member Function Documentation

void EECFI::SatNomTransId::eraseObject (  )  [protected]

Erase object and free memory.

References EECFI::CfiId::status(), EECFI::CfiId::subtractInstance(), and EECFI::CfiClass::throwWarn.

Referenced by operator=(), and ~SatNomTransId().

long EECFI::SatNomTransId::getAOCS (  )  const

Get AOCS parameters.

Returns:
AOCS model.

References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

ParamModel EECFI::SatNomTransId::getParam (  )  const

Get initialisation parameters of object.

Returns:
Parameters of model; the size of the returning vector will be always 15, but meaningful positions depend on the model.

References EECFI::CfiError::addMsg(), EECFI::ParamModel::model, EECFI::ParamModel::modelParam, and EECFI::CfiClass::throwWarn.

void EECFI::SatNomTransId::init ( long  aocsModel  ) 

Initialise using AOCS model.

Parameters:
aocsModel AOCS model (SatNominalAttAocsModeEnum).

References EECFI::CfiId::addInstance(), and EECFI::CfiClass::throwWarn.

void EECFI::SatNomTransId::init ( const TimeCorrelation timeId,
const std::vector< std::string > &  files,
long  timeInitMode,
long  timeRef,
double  time0,
double  time1 
)

Initialise satellite nominal attitude angles for a given satellite reading values from the attitude files.

In order to read files, this method internally uses Data Handling functions. Please refer to [D_H_SUM] for further details.

Parameters:
timeId Time correlations.
files Vector of files.
timeInitMode Flag for selecting the time range of the initialisation (XPCFI_SEL_TIME or XPCFI_SEL_FILE).
timeRef Time reference (TimeRefPointingEnum).
time0 Start of the time range..
time1 Stop of the time range.

References EECFI::CfiId::addInstance(), and EECFI::CfiClass::throwWarn.

void EECFI::SatNomTransId::init ( long  model,
const std::vector< double > &  modelParams 
)

Initialise satellite nominal attitude model for a given satellite.

Parameters:
model Model (SatNominalAttModelEnum).
modelParams Vector with parameters of the corresponding model.

Model parameters depending on the attitude model
Attitude Model Array Element Description (Reference) Unit (Format)
XPCFI_MODEL_GENERIC [0] First Axis enumeration value -
[1] First Target enumeration value -
[2] First Vector[0] - or deg
[3] First Vector[1] - or deg
[4] First Vector[2] - or deg
[5] Second Axis enumeration value -
[6] Second Target enumeration value -
[7] Second Vector[0] - or deg
[8] Second Vector[1] - or deg
[9] Second Vector[2] - or deg
XPCFI_MODEL_ENVISAT [0] AOCS Cx parameter [pitch] deg
[1] AOCS Cy parameter [roll] deg
[2] AOCS Cz parameter [yaw] deg
XPCFI_MODEL_CRYOSAT [0] Local Normal Z Coefficient -
XPCFI_MODEL_ADM [0] Scan Angle deg
[1] Scan Limit deg
[2] Velocity Offset m/s
XPCFI_MODEL_SENTINEL1 [0] Local Normal Coefficient -
[1] Earth‘s angular velocity vector rad/s
[2] Antenna bore sight off nadir angle at
reference altitude
deg
[3] Reference altitude m
[4] Roll steering sensitivity versus altitude deg/km
[5] h0 m
[6] h1 m
[7] h2 m
[8] h3 m
[9] h4 m
[10] φ1 rad
[11] φ2 rad
[12] φ3 rad
[13] φ4 rad
XPCFI_MODEL_METOPSG [0] Local Normal Coefficient -
[1] Earth‘s angular velocity vector rad/s

Generic Model description

The generic model builds the reference frames from the specified direction vectors.
The model parameters are:
  • first_axis: It can be any of {+/-XPCFI_X_AXIS, +/-XPCFI_Y_AXIS, +/-XPCFI_Z_AXIS}
  • first_target: It can be any of {XPCFI_SUN_VEC, XPCFI_MOON_VEC, XPCFI_EARTH_VEC, XPCFI_NADIR_VEC, XPCFI_INERTIAL_VEL_VEC, XPCFI_EF_VEL_VEC, XPCFI_INERTIAL_TARGET_VEC, XPCFI_EF_TARGET_VEC, XPCFI_SC_EF_VEL_VEC, XPCFI_ORBIT_POLE, XPCFI_INERTIAL_POS_VEC_CORRECTED, XPCFI_INERTIAL_VEL_VEC_ROTATED}
  • first_vector[3]: contains either:
    • dummies
    • [long, lat, alt] if first target = XPCFI_EF_TARGET_VEC
    • [ra, decl, parallax] if first target = XPCFI_INERTIAL_TARGET_VEC
    • correction coefficients if first target = XPCFI_INERTIAL_POS_VEC_CORRECTED
    • rotation vector if first target = XPCFI_INERTIAL_VEL_VEC_ROTATED
  • second_axis: It can be any of {+/-XPCFI_X_AXIS, +/-XPCFI_Y_AXIS, +/-XPCFI_Z_AXIS}
  • second_target: : It can be any of {XPCFI_SUN_VEC, XPCFI_MOON_VEC, XPCFI_EARTH_VEC, XPCFI_NADIR_VEC, XPCFI_INERTIAL_VEL_VEC, XPCFI_EF_VEL_VEC, XPCFI_INERTIAL_TARGET_VEC, XPCFI_EF_TARGET_VEC, XPCFI_SC_EF_VEL_VEC, XPCFI_ORBIT_POLE, XPCFI_INERTIAL_POS_VEC_CORRECTED, XPCFI_INERTIAL_VEL_VEC_ROTATED}
  • second_vector[3]: contains either:
    • dummies
    • [long, lat, alt] if second target= XPCFI_EF_TARGET_VEC
    • [ra, decl, parallax] if fsecond target=XPCFI_INERTIAL_TARGET_VEC
    • correction coefficients if second target=XPCFI_INERTIAL_POS_VEC_CORRECTED
    • rotation vector if second target = XPCFI_INERTIAL_VEL_VEC_ROTATED
It is necessary to define a convention for each target type (e.g, always from Satellite to XXX):
  • XPCFI_SUN_VEC: Unit direction vector from Satellite to Sun
  • XPCFI_MOON_VEC: Unit direction vector from Satellite to Moon
  • XPCFI_EARTH_VEC: Unit direction vector from Satellite to Earth centre (opposite to Satellite Position Vector)
  • XPCFI_NADIR_VEC: Unit direction vector from Satellite to Nadir point
  • XPCFI_INERTIAL_VEL_VEC: Inertial Velocity vector (in TOD)
  • XPCFI_EF_VEL_VEC: Earth Fixed Velocity vector
  • XPCFI_INERTIAL_TARGET_VEC: Unit direction vector from Satellite to a target defined by a given [ra, decl, parallax]. The annual parallax is used in case we are pointing to a close object (for instance, the Moon), in order to get the distance. For stars, parallax=0 shall be used, meaning infinite distance. Units: degrees
  • XPCFI_EF_TARGET_VEC: Unit direction vector from Satellite to a target defined by a given [long, lat, alt]
  • XPCFI_SC_EF_VEL_VEC: Satellite Earth Fixed Velocity vector
  • XPCFI_ORBIT_POLE: Unit direction vector normal to the orbital plane (computed as the cross product of the Satellite Position vector and its Velocity vector)
  • XPCFI_INERTIAL_POS_VEC_CORRECTED: Unit Satellite position vector in ToD corrected by coefficients (e.g to approximate the local normal direction)
  • XPCFI_INERTIAL_VEL_VEC_ROTATED: Inertial Velocity vector in ToD rotated (e.g correcting for the Earth rotation)
  • XPCFI_EF_NORTH: Unit direction vector pointing North (in Earth Fixed)
  • XP_EF_SOUTH: Unit direction vector pointing South (in Earth Fixed)
With these parameters, the calculation is done as follows:
  • Compute the unit direction vector specified by first_target
    • Assign the calculated first target vector to the first axis vector
  • Compute the unit direction vector specified by second_target
    • Cross-product of the first axis vector and the second target vector
    • Assign the resulting vector to the second axis vector
    • Complete the right-handed frame
The following are some examples:
** Sun-Fixed Reference Frame
  • model_param = {XPCFI_X_AXIS, XPCFI_SUN_VEC, 0.0, 0.0, 0.0, XPCFI_Z_AXIS, XPCFI_EARTH_VEC, 0.0, 0.0, 0.0}
Then:
  • X-axis = Unit vector from Satellite to Sun (Sun Vector)
  • Z-axis = Unit cross product: X-axis x (Unit vector from Satellite to Earth (Earth Vector))
  • Y-axis = Z-axis x X-axis (completing the right-handed frame)
  • ** Yaw Steering Mode
    • model_param={-XPCFI_Z_AXIS, XPCFI_NADIR_VEC, 0.0, 0.0, 0.0, XPCFI_X_AXIS, XPCFI_EF_VEL_VEC, 0.0, 0.0, 0.0}
    Then:
    • Z-axis = -(Unit vector from Satellite to Nadir (Nadir Vector))
    • X-axis = Unit cross product: Z-axis x (Earth-Fixed Velocity Vector)
    • Y-axis = Z-axis x X-axis (completing the right-handed frame)

    Sentinel-1 Model parameters description

    The parameters for the Sentinel-1 attitude model corresponds to the roll steering law:

    where the actual altitude of the satellite is approximated by the harmonic function:

    The first fourth terms of the series are considered. Consult [MSC] for more information.

    Sentinel-2 Model description

    Sentinel 2 model is implemented as generic model with the following definitions:
    • First axis: XP_NEG_Z_AXIS; first target = XP_EARTH_VEC.
    • Second axis: XP_X_AXIS; second target = XP_INERTIAL_VEL_VEC_ROTATED

    Yaw flip attitude Model description

    Yaw Flip model is implemented as generic model with the following definitions:
    • For WINTER mode:
      • First axis: XP_NEG_Z_AXIS; first target = XP_NADIR_VEC.
      • Second axis: XP_X_AXIS; second target = XP_EF_SOUTH
    • For SUMMER mode:
      • First axis: XP_NEG_Z_AXIS; first target = XP_NADIR_VEC.
      • Second axis: XP_X_AXIS; second target = XP_EF_NORTH
    • For AUTOMATIC Yaw Flip, the attitude is set to WINTER or SUMMER mode depending on the Sun position: if the Sun position is above the equatorial plane, SUMMER mode is selected; if the Sun position is below the equatorial plane, WINTER mode is selected.

    MetOp-SG Model description

    MetOp-SG model is implemented as a generic model with the ideal YSM law and the following definitions:
    • The Z axis that is computed with an approximation for the local normal vector using an altitude dependent correction factor.
    • The input parameters are the local normal coefficient and the Earth‘s rotation speed.
    • First axis: XP_Z_AXIS; first target = XP_INERTIAL_POS_VEC_CORRECTED.
    • Second axis: XP_X_AXIS; second target = XP_INERTIAL_VEL_VEC_ROTATED

    References EECFI::CfiId::addInstance(), EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

    void EECFI::SatNomTransId::init ( long  angleType,
    const std::vector< long > &  harmTypePitch,
    const std::vector< long > &  harmTypeRoll,
    const std::vector< long > &  harmTypeYaw,
    const std::vector< double > &  harmCoeffPitch,
    const std::vector< double > &  harmCoeffRoll,
    const std::vector< double > &  harmCoeffYaw 
    )

    Initialise satellite orbital to satellite nominal attitude mispointing angles for a given satellite with harmonics.

    The Attitude::compute and Attitude::changeFrame functions will then compute the values as follows:

    harmonic.jpg
    Parameters:
    angleType Type of angle (given by PointingAngleTypeEnum).
    harmTypePitch Type of coefficients:

    • 0= for the bias parameter
    • <0 for the sinus coefficients (-n means that corresponds to the sinus coefficient of order n)
    • >0 for the cosinus coefficients (-n means that corresponds to the cosinus coefficient of order n)

    .

    harmTypeRoll Type of coefficients (bias, sinus, cosinus).
    harmTypeYaw Type of coefficients (bias, sinus, cosinus).
    harmCoefPitch Bias, sinus and cosinus coefficients for the pitch angle.
    harmCoefRoll Bias, sinus and cosinus coefficients for the roll angle.
    harmCoefYaw Bias, sinus and cosinus coefficients for the yaw angle.

    References EECFI::CfiId::addInstance(), EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

    SatNomTransId & EECFI::SatNomTransId::operator= ( const SatNomTransId other  ) 

    Copy assignment operator.

    Parameters:
    other The SatNomTransId to copy/assign from

    References EECFI::CfiId::addInstance(), and eraseObject().

    SatId EECFI::SatNomTransId::satId (  )  const

    Return satellite id.

    Returns:
    Satellite id.
    void EECFI::SatNomTransId::setAOCS ( long  aocsModel  ) 

    Change initialisation AOCS parameters from the object.

    Parameters:
    aocsModel AOCS model.

    References EECFI::CfiError::addMsg(), and EECFI::CfiClass::throwWarn.

    void EECFI::SatNomTransId::setAzElDefinition ( const AzElDefinition azElDef  ) 

    Set azimuth/elevation definition.

    Parameters:
    azElDef Definition of azimuth and elevation.

    References EECFI::AzElDefinition::az0Axis, EECFI::AzElDefinition::az90Axis, EECFI::AzElDefinition::el90Axis, and EECFI::CfiClass::throwWarn.

    void EECFI::SatNomTransId::setFile ( const AttFileModel fileModel  ) 
    void EECFI::SatNomTransId::setParam ( const ParamModel paramModel  ) 

    Change initialisation parameters of the object.

    Parameters:
    paramModel Parameters of model.

    References EECFI::CfiError::addMsg(), EECFI::ParamModel::model, EECFI::ParamModel::modelParam, and EECFI::CfiClass::throwWarn.


    Generated on Mon Dec 11 2023 13:28:30 for by doxygen 1.7.1