| Earth Observation Mission CFI Software Pointing Software User Manual |

Public Member Functions | Protected Member Functions

# EECFI::SatNomTransId Class Reference

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

Inheritance diagram for EECFI::SatNomTransId:

List of all members.

## Public Member Functions
| SatNomTransId ()
| Empty Class constructor.
| ~SatNomTransId () throw (CfiError)
| Class destructor.
void | init (long aocsModel) throw (CfiError)
| Initialise using AOCS model.
void | init (long model, const vector< double > &modelParams) throw (CfiError)
| Initialise satellite nominal attitude model for a given satellite.
void | init (long angleType, const vector< long > &harmTypePitch, const vector< long > &harmTypeRoll, const vector< long > &harmTypeYaw, const vector< double > &harmCoeffPitch, const vector< double > &harmCoeffRoll, const vector< double > &harmCoeffYaw) throw (CfiError)
| Initialise satellite orbital to satellite nominal attitude mispointing angles for a given satellite with harmonics.
void | init (const TimeCorrelation &timeId, const vector< string > &files, long timeInitMode, long timeRef, double time0, double time1) throw (CfiError)
| Initialise satellite nominal attitude angles for a given satellite reading values from the attitude files.
long | getAOCS () const throw (CfiError)
| Get AOCS parameters.
void | setAOCS (long aocsModel) throw (CfiError)
| Change initialisation AOCS parameters from the object.
ParamModel | getParam () const throw (CfiError)
| Get initialisation parameters of object.
void | setParam (const ParamModel &paramModel) throw (CfiError)
| Change initialisation parameters of the object.
HarmonicModel | getHarmonic () const throw (CfiError)
| Get harmonic parameters of object.
void | setHarmonic (const HarmonicModel &harmModel) throw (CfiError)
| Change harmonic parameters of the object.
AttFileModel | getFile () const throw (CfiError)
| Get file data of object.
void | setFile (const AttFileModel &fileModel) throw (CfiError)
| Change initialisation file data of the object.
void | setAzElDefinition (const AzElDefinition &azElDef) throw (CfiError)
| Set azimuth/elevation definition.
SatId | satId () const
| Return satellite id.
## Protected Member Functions
GenericId * | getId ()
| Get the id.
void | eraseObject () throw (CfiError)
| Erase object and free memory.

## Detailed Description

Class for storing the Satellite Nominal Attitude configuration parameters.

## Constructor & Destructor Documentation

EECFI::SatNomTransId::SatNomTransId | ( |  | ) |

Empty Class constructor.

EECFI::SatNomTransId::~SatNomTransId | ( |  | ) | throw (CfiError)

Class destructor.

References eraseObject().

## Member Function Documentation

void EECFI::SatNomTransId::eraseObject | ( |  | ) | throw (CfiError)`[protected]`

Erase object and free memory.

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

Referenced by ~SatNomTransId().

long EECFI::SatNomTransId::getAOCS | ( |  | ) | const throw (CfiError)

Get AOCS parameters.

Returns:
  AOCS model.

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

AttFileModel EECFI::SatNomTransId::getFile | ( |  | ) | const throw (CfiError)

Get file data of object.

Returns:
  File model data.

References EECFI::CfiError::addMsg(), EECFI::AttFileModel::attData, EECFI::AttFileModel::dataType, EECFI::AttFileModel::fileModel, EECFI::AttFileModel::inertialFrame, EECFI::AttFileModel::maxGap, EECFI::CfiClass::throwWarn, EECFI::AttFileModel::valTime0, and EECFI::AttFileModel::valTime1.

HarmonicModel EECFI::SatNomTransId::getHarmonic | ( |  | ) | const throw (CfiError)

Get harmonic parameters of object.

Returns:
  Harmonic model data.

References EECFI::CfiError::addMsg(), EECFI::HarmonicModel::angleType, EECFI::HarmonicData::harmonicCoeffPitch, EECFI::HarmonicData::harmonicCoeffRoll, EECFI::HarmonicData::harmonicCoeffYaw, EECFI::HarmonicModel::harmonicData, EECFI::HarmonicData::harmonicTypePitch, EECFI::HarmonicData::harmonicTypeRoll, EECFI::HarmonicData::harmonicTypeYaw, and EECFI::CfiClass::throwWarn.

GenericId * EECFI::SatNomTransId::getId | ( |  | ) | `[protected]`

Get the id.

Returns:
  Pointer to xp_sat_nom_trans_id.

ParamModel EECFI::SatNomTransId::getParam | ( |  | ) | const throw (CfiError)

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 | model,
|  | const vector< double > & | modelParams |
| ) |  |  | throw (CfiError)

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
  ## 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.

References EECFI::CfiError::addMsg().

void EECFI::SatNomTransId::init | ( | long | aocsModel | ) | throw (CfiError)

Initialise using AOCS model.

Parameters:

  | aocsModel | AOCS model (SatNominalAttAocsModeEnum).

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

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.

void EECFI::SatNomTransId::init | ( | long | angleType,
|  | const vector< long > & | harmTypePitch,
|  | const vector< long > & | harmTypeRoll,
|  | const vector< long > & | harmTypeYaw,
|  | const vector< double > & | harmCoefPitch,
|  | const vector< double > & | harmCoefRoll,
|  | const vector< double > & | harmCoefYaw |
| ) |  |  | throw (CfiError)

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:

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::CfiError::addMsg().

SatId EECFI::SatNomTransId::satId | ( |  | ) | const

Return satellite id.

Returns:
  Satellite id.

void EECFI::SatNomTransId::setAOCS | ( | long | aocsModel | ) | throw (CfiError)

Change initialisation AOCS parameters from the object.

Parameters:

  | aocsModel | AOCS model.

References EECFI::CfiError::addMsg().

void EECFI::SatNomTransId::setAzElDefinition | ( | const AzElDefinition & | azElDef | ) | throw (CfiError)

Set azimuth/elevation definition.

Parameters:

  | azElDef | Definition of azimuth and elevation.

void EECFI::SatNomTransId::setFile | ( | const AttFileModel & | fileModel | ) | throw (CfiError)

Change initialisation file data of the object.

Parameters:

  | fileModel | File model data.

References EECFI::CfiError::addMsg().

void EECFI::SatNomTransId::setHarmonic | ( | const HarmonicModel & | harmonicModel | ) | throw (CfiError)

Change harmonic parameters of the object.

Parameters:

  | harmonicModel | Harmonic model data.

References EECFI::CfiError::addMsg().

void EECFI::SatNomTransId::setParam | ( | const ParamModel & | paramModel | ) | throw (CfiError)

Change initialisation parameters of the object.

Parameters:

  | paramModel | Parameters of model.

References EECFI::CfiError::addMsg().