Ginan
Loading...
Searching...
No Matches
attitude.cpp File Reference

Detailed Description

References:

  1. D.D.McCarthy, IERS Technical Note 21, IERS Conventions 1996, July 1996
  2. D.D.McCarthy and G.Petit, IERS Technical Note 32, IERS Conventions 2003, November 2003
  3. D.A.Vallado, Fundamentals of Astrodynamics and Applications 2nd ed, Space Technology Library, 2004
  4. J.Kouba, A Guide to using International GNSS Service (IGS) products, May 2009
  5. RTCM Paper, April 12, 2010, Proposed SSR Messages for SV Orbit Clock, Code Biases, URA
  6. MacMillan et al., Atmospheric gradients and the VLBI terrestrial and celestial reference frames, Geophys. Res. Let., 1997
  7. G.Petit and B.Luzum (eds), IERS Technical Note No. 36, IERS Conventions (2010), 2010
  8. J.Kouba, A simplified yaw-attitude model for eclipsing GPS satellites, GPS Solutions, 13:1-12, 2009
  9. F.Dilssner, GPS IIF-1 satellite antenna phase center and attitude modeling, InsideGNSS, September, 2010
  10. F.Dilssner, The GLONASS-M satellite yaw-attitude model, Advances in Space Research, 2010
  11. IGS MGEX (http://igs.org/mgex)

Data Structures

struct  SatGeom
 

Functions

void testEclipse (ObsList &obsList)
 exclude meas of eclipsing satellite (block IIA)
 
SatGeom satOrbitGeometry (SatPos &satPos)
 Calculates satellite orbit geometry - for use in calculating modelled yaw.
 
double nominalYawGps (double beta, double mu)
 Calculate nominal (ideal) sat yaw for GPS sats Returns result between (-PI, PI].
 
double nominalYawGpsAtTime (SatGeom &satGeom, GTime time, GTime reqTime)
 Calculate nominal sat yaw for GPS sats at a given time Returns result between (-PI, PI].
 
double nominalYawRate (SatGeom &satGeom)
 Calculates nominal yaw rate.
 
bool findCatchupStart (GTime earliestTime, GTime time, SatGeom satGeom, double maxYawRate, GTime &catchupTime, double dt=-1)
 Finds time when max yaw-rate catch-up started, previous to this point in time.
 
double circleAreaVisible (double r1, double r2, double d)
 Calculates proportion of circle 1 visible with overlapping circle 2.
 
double sunVisibility (Vector3d &rSat, Vector3d &rSun, Vector3d &rMoon)
 Calculates fraction of Sun's disk visible by spacecraft 0 = full eclipse (umbra) 0 < fraction < 1 = partial eclipse (within penumbra) 1 = no eclipse (outside penumbra)
 
bool inEclipse (Vector3d &rSat, Vector3d &rSun, Vector3d &rMoon)
 Returns true if satellite is in eclipse (shadow umbra); else false.
 
void sunMoonPos (GTime time, VectorEcef &rSun, VectorEcef &rMoon)
 
GTime findEclipseBoundaries (GTime time, SatGeom &satGeom, bool searchForward)
 Finds time when eclipse started, prior (default) to this point in time For finding eclipses forward in time, set dt to some positive value.
 
bool satYawGpsIIR (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom, double betaBias=0)
 Yaw model for GPS-IIR sats Ref: http://acc.igs.org/orbits/EclipseReadMe.pdf Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf Ref: https://www.researchgate.net/publication/306924379_Observed_features_of_GPS_Block_IIF_satellite_yaw_maneuvers_and_corresponding_modeling Returns false if no modelled yaw available.
 
bool satYawGpsIIA (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GPS-IIA sats Ref: http://acc.igs.org/orbits/EclipseReadMe.pdf Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf Ref: https://tda.jpl.nasa.gov/progress_report/42-123/123B.pdf Returns false if no modelled yaw available.
 
bool satYawGpsIIF (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GPS-IIF sats Ref: https://www.researchgate.net/publication/306924379_Observed_features_of_GPS_Block_IIF_satellite_yaw_maneuvers_and_corresponding_modeling Returns false if no modelled yaw available.
 
bool satYawGpsIII (AttStatus &attStatus, SatGeom &satGeom)
 Yaw model for GPS-III sats Ref: https://www.gpsworld.com/new-type-on-the-block-generating-high-precision-orbits-for-gps-iii-satellites/.
 
double nominalYawGalIov (Vector3d &eSunOrf)
 Calculate nominal (ideal) sat yaw for GAL-IOV sats.
 
bool satYawGalIov (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GAL IOV sats.
 
double smoothedYaw (double startYaw, GTime startTime, GTime time, double tMax)
 Smoothed yaw steering for GAL & BDS.
 
double colinearAngle (double mu)
 Calculates colinear angle - the scalar angle between midnight or noon, whichever is closest.
 
bool satYawGalFoc (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GAL FOC sats.
 
void findCentredYawStart (GTime earliestTime, GTime time, SatGeom &satGeom, double maxYawRate, GTime &startTime, double &startYaw, double dt=-1)
 Finds time when midnight/noon-centred max yaw started, previous to this point in time.
 
bool satYawGlo (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GLONASS sats Returns false if no modelled yaw available Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf.
 
bool satYawGloK (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for GLONASS Block K sats Note: no yaw model exists for GLONASS-K yet.
 
double orbitNormalYaw ()
 Orbit-normal mode yaw (always zero)
 
bool satYawOrbNor (AttStatus &attStatus, double nominalYaw=0)
 Orbit normal yaw model Will set nominalYaw & modelYaw to the orbit-normal yaw (0 or PI) closest to the given nominal yaw.
 
bool satYawQzs1 (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom, bool *orbitNormal=nullptr)
 Yaw model for QZSS-1 satellites Requires qzss_yaw_modes.snx - generated by scripts/qzss_ohi_merge.py and ohi-qzs*.txt's from https://qzss.go.jp/en/technical/qzssinfo/index.html Ref: https://qzss.go.jp/en/technical/qzssinfo/index.html.
 
bool satYawQzs2I (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom)
 Yaw model for QZSS-2I & QZSS-2A satellites Requires qzss_yaw_modes.snx - generated by scripts/qzss_ohi_merge.py and ohi-qzs*.txt's from https://qzss.go.jp/en/technical/qzssinfo/index.html Ref: https://qzss.go.jp/en/technical/qzssinfo/index.html.
 
bool satYawBds3 (AttStatus &attStatus, GTime time, SatGeom &satGeom, double tMax)
 Yaw model for BDS-3I/3M satellites Ref: https://doi.org/10.1007/s10291-018-0783-1 https://doi.org/10.1017/S0373463318000103.
 
bool satYawBds2 (SatSys &Sat, AttStatus &attStatus, GTime time, SatGeom &satGeom, double tMax)
 Yaw model for BDS-2I/2M satellites Requires bds_yaw_modes.snx Ref: https://doi.org/10.1007/s10291-018-0783-1 https://doi.org/10.1017/S0373463318000103.
 
bool satYawBds3Secm (AttStatus &attStatus, SatGeom &satGeom)
 Yaw model for BDS-3M-SECM satellites Ref: https://doi.org/10.48550/arXiv.2112.13252.
 
void yawToAttVecs (Vector3d &rSat, Vector3d &satVel, double yaw, Vector3d &eXSat, Vector3d &eYSat, Vector3d &eZSat)
 Calculates unit vectors of satellite-fixed coordinates (ECEF) given yaw (assuming Z+ is facing toward Earth)
 
void updateSatYaw (SatPos &satPos, AttStatus &attStatus)
 Calculates nominal & model yaw.
 
bool satAttModel (Vector3d &rSat, Vector3d &vSat, AttStatus &attStatus, E_Source source)
 Recalls satellite nominal/model attitude Returns false if attitude is invalid.
 
Matrix3d rotBasisMat (Vector3d &eX, Vector3d &eY, Vector3d &eZ)
 Converts coords of frame A (expressed in frame G) into transformation matrix from A to G E.g.
 
void updateAntAtt (Vector3d &bore, Vector3d &azim, AttStatus &attStatus)
 Calculates antenna attitude - unit vectors of antenna-fixed coordinates (ECEF)
 
bool preciseAttitude (string id, GTime time, AttStatus &attStatus)
 Retrieves precise attitude (from file) - unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (e.g.
 
bool kalmanAttitude (string id, GTime time, AttStatus &attStatus, const KFState *kfState_ptr)
 
bool updateSatAtt (SatSys &Sat, GTime time, VectorEcef &rSat, VectorEcef &vSat, vector< E_Source > attitudeTypes, AttStatus &attStatus)
 Calculates satellite attitude - unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (e.g.
 
bool updateSatAtt (SatPos &satPos, vector< E_Source > attitudeTypes, AttStatus &attStatus)
 Satellite attitude - calculates unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (usually due to eclipse)
 
bool satQuat (SatPos &satPos, vector< E_Source > attitudeTypes, Quaterniond &quat)
 Satellite attitude - calculates attitude of satellite as a quaternion (ECEF) Also transforms coordinates in body frame into ECEF Returns false if no attitude available (usually due to eclipse)
 
void updateSatAtts (SatPos &satPos)
 Update sat nominal/model yaws.
 
bool basicRecAttitude (Receiver &rec, AttStatus &attStatus)
 Nominal receiver attitude - unit vectors of receiver-fixed coordinates (ECEF) Orientation of receiver body frame for nominal receiver attitude: x -> east y -> north z -> up.
 
void recAtt (Receiver &rec, GTime time, vector< E_Source > attitudeTypes, const KFState *kfState_ptr, const KFState *remote_ptr)
 Attitude of receiver.
 
void phaseWindup (GObs &obs, Receiver &rec, double &phw)
 phase windup model
 

Function Documentation

◆ basicRecAttitude()

bool basicRecAttitude ( Receiver & rec,
AttStatus & attStatus )

Nominal receiver attitude - unit vectors of receiver-fixed coordinates (ECEF) Orientation of receiver body frame for nominal receiver attitude: x -> east y -> north z -> up.

Parameters
recReceiver position (ECEF)
attStatusAttitude status
Here is the call graph for this function:
Here is the caller graph for this function:

◆ circleAreaVisible()

double circleAreaVisible ( double r1,
double r2,
double d )

Calculates proportion of circle 1 visible with overlapping circle 2.

Parameters
r1radius of circle 1
r2radius of circle 2
ddistance between circle centres
Here is the caller graph for this function:

◆ colinearAngle()

double colinearAngle ( double mu)

Calculates colinear angle - the scalar angle between midnight or noon, whichever is closest.

Parameters
muMu angle (rad)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ findCatchupStart()

bool findCatchupStart ( GTime earliestTime,
GTime time,
SatGeom satGeom,
double maxYawRate,
GTime & catchupTime,
double dt = -1 )

Finds time when max yaw-rate catch-up started, previous to this point in time.

Parameters
earliestTimeSearch backwards until this time
timeSolution time
satGeomSatellite geometry (copy)
maxYawRateMaximum yaw rate (rad/s)
catchupTimeTime of catchup start
dtTime step to search backwards by (sec)
Here is the call graph for this function:

◆ findCentredYawStart()

void findCentredYawStart ( GTime earliestTime,
GTime time,
SatGeom & satGeom,
double maxYawRate,
GTime & startTime,
double & startYaw,
double dt = -1 )

Finds time when midnight/noon-centred max yaw started, previous to this point in time.

Parameters
earliestTimeSearch backwards until this time
timeSolution time
satGeomSatellite geometry
maxYawRateMaximum yaw rate (rad/s)
startTimeTime at max yaw start
startYawYaw at time of max yaw start
dtTime step to search backwards by (sec)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ findEclipseBoundaries()

GTime findEclipseBoundaries ( GTime time,
SatGeom & satGeom,
bool searchForward )

Finds time when eclipse started, prior (default) to this point in time For finding eclipses forward in time, set dt to some positive value.

Parameters
timeSolution time
satGeomSatellite geometry
searchForwardSearch forward in time
Here is the call graph for this function:
Here is the caller graph for this function:

◆ inEclipse()

bool inEclipse ( Vector3d & rSat,
Vector3d & rSun,
Vector3d & rMoon )

Returns true if satellite is in eclipse (shadow umbra); else false.

Parameters
rSatSatellite position (ECEF)
rSunSun position (ECEF)
rMoonMoon position (ECEF)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kalmanAttitude()

bool kalmanAttitude ( string id,
GTime time,
AttStatus & attStatus,
const KFState * kfState_ptr )
Parameters
idSatellite/receiver ID
timeSolution time
attStatusAttitude status
Here is the caller graph for this function:

◆ nominalYawGalIov()

double nominalYawGalIov ( Vector3d & eSunOrf)

Calculate nominal (ideal) sat yaw for GAL-IOV sats.

Follows IGS convention. Roughly equal to nominalYawGps() Ref: https://www.gsc-europa.eu/support-to-developers/galileo-satellite-metadata#3.1

Parameters
eSunOrfUnit vector to Sun in Orbital reference frame {A,-C,-R}
Here is the caller graph for this function:

◆ nominalYawGps()

double nominalYawGps ( double beta,
double mu )

Calculate nominal (ideal) sat yaw for GPS sats Returns result between (-PI, PI].

Parameters
betaSun elevation angle with respect to the orbital plane
muAngle of sat from 'midnight' (when sat is at the furthest point from Sun in its orbit)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ nominalYawGpsAtTime()

double nominalYawGpsAtTime ( SatGeom & satGeom,
GTime time,
GTime reqTime )

Calculate nominal sat yaw for GPS sats at a given time Returns result between (-PI, PI].

Parameters
satGeomSatellite geometry
timeTime of satGeom
reqTimeRequested time
Here is the call graph for this function:
Here is the caller graph for this function:

◆ nominalYawRate()

double nominalYawRate ( SatGeom & satGeom)

Calculates nominal yaw rate.

Parameters
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ orbitNormalYaw()

double orbitNormalYaw ( )

Orbit-normal mode yaw (always zero)

Here is the caller graph for this function:

◆ phaseWindup()

void phaseWindup ( GObs & obs,
Receiver & rec,
double & phw )

phase windup model

Parameters
obsObservation detailing the satellite to apply model to
recPosition of receiver (ECEF)
phwOutput of phase windup result
Here is the caller graph for this function:

◆ preciseAttitude()

bool preciseAttitude ( string id,
GTime time,
AttStatus & attStatus )

Retrieves precise attitude (from file) - unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (e.g.

not found in file, not enough data to interpolate, etc.)

Parameters
idSatellite/receiver ID
timeSolution time
attStatusAttitude status
Here is the call graph for this function:
Here is the caller graph for this function:

◆ recAtt()

void recAtt ( Receiver & rec,
GTime time,
vector< E_Source > attitudeTypes,
const KFState * kfState_ptr,
const KFState * remote_ptr )

Attitude of receiver.

Parameters
recReceiver
timeTime
attitudeTypesAttitude type
Here is the call graph for this function:

◆ rotBasisMat()

Matrix3d rotBasisMat ( Vector3d & eX,
Vector3d & eY,
Vector3d & eZ )

Converts coords of frame A (expressed in frame G) into transformation matrix from A to G E.g.

if eX/eY/eZ are body coordinates (frame A) in ECEF (frame G), matrix will transform from body frame to ECEF frame: ecef = rot * body.

Parameters
eXX+ unit vector of new coordinates
eYY+ unit vector of new coordinates
eZZ+ unit vector of new coordinates
Here is the caller graph for this function:

◆ satAttModel()

bool satAttModel ( Vector3d & rSat,
Vector3d & vSat,
AttStatus & attStatus,
E_Source source )

Recalls satellite nominal/model attitude Returns false if attitude is invalid.

Parameters
rSatSatellite position (ECEF)
vSatSatellite velocity (ECEF)
attStatusAttitude status for orientation
sourceType of attitude model to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satOrbitGeometry()

SatGeom satOrbitGeometry ( SatPos & satPos)

Calculates satellite orbit geometry - for use in calculating modelled yaw.

Parameters
satPosObservation
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satQuat()

bool satQuat ( SatPos & satPos,
vector< E_Source > attitudeTypes,
Quaterniond & quat )

Satellite attitude - calculates attitude of satellite as a quaternion (ECEF) Also transforms coordinates in body frame into ECEF Returns false if no attitude available (usually due to eclipse)

Parameters
satPosobservation
attitudeTypesAttitude type
quatRotation of satellite from ECEF
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawBds2()

bool satYawBds2 ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom,
double tMax )

Yaw model for BDS-2I/2M satellites Requires bds_yaw_modes.snx Ref: https://doi.org/10.1007/s10291-018-0783-1 https://doi.org/10.1017/S0373463318000103.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
tMaxMaximum mnvr time
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawBds3()

bool satYawBds3 ( AttStatus & attStatus,
GTime time,
SatGeom & satGeom,
double tMax )

Yaw model for BDS-3I/3M satellites Ref: https://doi.org/10.1007/s10291-018-0783-1 https://doi.org/10.1017/S0373463318000103.

Parameters
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
tMaxMaximum mnvr time
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawBds3Secm()

bool satYawBds3Secm ( AttStatus & attStatus,
SatGeom & satGeom )

Yaw model for BDS-3M-SECM satellites Ref: https://doi.org/10.48550/arXiv.2112.13252.

Parameters
attStatusSatellite att status
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGalFoc()

bool satYawGalFoc ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GAL FOC sats.

Follows IGS convention. Returns false if no modelled yaw available Ref: https://www.gsc-europa.eu/support-to-developers/galileo-satellite-metadata#3.1

Parameters
SatSatellite ID
attStatusSatellite yaw status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGalIov()

bool satYawGalIov ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GAL IOV sats.

Follows original GAL convention. Returns false if no modelled yaw available. Aux Sun vector is not provided in [1], so is taken from [2] Ref: https://www.gsc-europa.eu/support-to-developers/galileo-satellite-metadata#3.1 Ref: https://github.com/groops-devs/groops/blob/main/source/programs/simulation/simulateStarCameraGnss.cpp

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGlo()

bool satYawGlo ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GLONASS sats Returns false if no modelled yaw available Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGloK()

bool satYawGloK ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GLONASS Block K sats Note: no yaw model exists for GLONASS-K yet.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGpsIIA()

bool satYawGpsIIA ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GPS-IIA sats Ref: http://acc.igs.org/orbits/EclipseReadMe.pdf Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf Ref: https://tda.jpl.nasa.gov/progress_report/42-123/123B.pdf Returns false if no modelled yaw available.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGpsIIF()

bool satYawGpsIIF ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for GPS-IIF sats Ref: https://www.researchgate.net/publication/306924379_Observed_features_of_GPS_Block_IIF_satellite_yaw_maneuvers_and_corresponding_modeling Returns false if no modelled yaw available.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGpsIII()

bool satYawGpsIII ( AttStatus & attStatus,
SatGeom & satGeom )

Yaw model for GPS-III sats Ref: https://www.gpsworld.com/new-type-on-the-block-generating-high-precision-orbits-for-gps-iii-satellites/.

Parameters
attStatusSatellite att status
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawGpsIIR()

bool satYawGpsIIR ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom,
double betaBias = 0 )

Yaw model for GPS-IIR sats Ref: http://acc.igs.org/orbits/EclipseReadMe.pdf Ref: https://igsac-cnes.cls.fr/documents/meeting/2021_04_28_Strasser_et_al_EGU21.pdf Ref: https://www.researchgate.net/publication/306924379_Observed_features_of_GPS_Block_IIF_satellite_yaw_maneuvers_and_corresponding_modeling Returns false if no modelled yaw available.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
betaBiasBeta angle bias
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawOrbNor()

bool satYawOrbNor ( AttStatus & attStatus,
double nominalYaw = 0 )

Orbit normal yaw model Will set nominalYaw & modelYaw to the orbit-normal yaw (0 or PI) closest to the given nominal yaw.

Parameters
attStatusSatellite att status
nominalYawNominal yaw
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawQzs1()

bool satYawQzs1 ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom,
bool * orbitNormal = nullptr )

Yaw model for QZSS-1 satellites Requires qzss_yaw_modes.snx - generated by scripts/qzss_ohi_merge.py and ohi-qzs*.txt's from https://qzss.go.jp/en/technical/qzssinfo/index.html Ref: https://qzss.go.jp/en/technical/qzssinfo/index.html.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
orbitNormalReturns true if satellite is in ON mode
Here is the call graph for this function:
Here is the caller graph for this function:

◆ satYawQzs2I()

bool satYawQzs2I ( SatSys & Sat,
AttStatus & attStatus,
GTime time,
SatGeom & satGeom )

Yaw model for QZSS-2I & QZSS-2A satellites Requires qzss_yaw_modes.snx - generated by scripts/qzss_ohi_merge.py and ohi-qzs*.txt's from https://qzss.go.jp/en/technical/qzssinfo/index.html Ref: https://qzss.go.jp/en/technical/qzssinfo/index.html.

Parameters
SatSatellite ID
attStatusSatellite att status
timeSolution time
satGeomSatellite geometry
Here is the call graph for this function:
Here is the caller graph for this function:

◆ smoothedYaw()

double smoothedYaw ( double startYaw,
GTime startTime,
GTime time,
double tMax )

Smoothed yaw steering for GAL & BDS.

Parameters
startYawSatellite yaw at start of modified yaw steering
startTimeStart time of modified yaw steering (due to noon/midnight turn)
timeSolution time
tMaxMaximum mnvr time
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sunMoonPos()

void sunMoonPos ( GTime time,
VectorEcef & rSun,
VectorEcef & rMoon )
Parameters
timeTime of
rSunSun position (ECEF)
rMoonMoon position (ECEF)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sunVisibility()

double sunVisibility ( Vector3d & rSat,
Vector3d & rSun,
Vector3d & rMoon )

Calculates fraction of Sun's disk visible by spacecraft 0 = full eclipse (umbra) 0 < fraction < 1 = partial eclipse (within penumbra) 1 = no eclipse (outside penumbra)

Parameters
rSatSatellite position (ECEF)
rSunSun position (ECEF)
rMoonMoon position (ECEF)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ testEclipse()

void testEclipse ( ObsList & obsList)

exclude meas of eclipsing satellite (block IIA)

Here is the call graph for this function:

◆ updateAntAtt()

void updateAntAtt ( Vector3d & bore,
Vector3d & azim,
AttStatus & attStatus )

Calculates antenna attitude - unit vectors of antenna-fixed coordinates (ECEF)

Parameters
boreSensor boresight vector (body frame)
azimSensor azimuth vector (body frame)
attStatusAttitude status
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateSatAtt() [1/2]

bool updateSatAtt ( SatPos & satPos,
vector< E_Source > attitudeTypes,
AttStatus & attStatus )

Satellite attitude - calculates unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (usually due to eclipse)

Parameters
satPossatellite position data
attitudeTypesAttitude type
attStatusAttitude status
Here is the call graph for this function:

◆ updateSatAtt() [2/2]

bool updateSatAtt ( SatSys & Sat,
GTime time,
VectorEcef & rSat,
VectorEcef & vSat,
vector< E_Source > attitudeTypes,
AttStatus & attStatus )

Calculates satellite attitude - unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (e.g.

due to eclipse, not found in file, etc.)

Parameters
SatSatellite ID
timeSolution time
rSatSatellite position (ECEF)
vSatSatellite velocity (ECEF)
attitudeTypesAttitude type
attStatusAttitude status
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateSatAtts()

void updateSatAtts ( SatPos & satPos)

Update sat nominal/model yaws.

Call outside of multithreading code that may reference the same satellite in different threads

Parameters
satPosobservation
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateSatYaw()

void updateSatYaw ( SatPos & satPos,
AttStatus & attStatus )

Calculates nominal & model yaw.

Parameters
satPosObservation
attStatusSatellite att status. Use a disposable copy if calling inside multithreaded code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ yawToAttVecs()

void yawToAttVecs ( Vector3d & rSat,
Vector3d & satVel,
double yaw,
Vector3d & eXSat,
Vector3d & eYSat,
Vector3d & eZSat )

Calculates unit vectors of satellite-fixed coordinates (ECEF) given yaw (assuming Z+ is facing toward Earth)

Parameters
rSatSat position (ECEF)
satVelSat velocity (ECEF)
yawYaw (rad)
eXSatX+ unit vector of satellite-fixed coordinates (ECEF)
eYSatY+ unit vector of satellite-fixed coordinates (ECEF)
eZSatZ+ unit vector of satellite-fixed coordinates (ECEF)
Here is the caller graph for this function: