![]() |
Ginan
|
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 | |
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.
| rec | Receiver position (ECEF) |
| attStatus | Attitude status |
| double circleAreaVisible | ( | double | r1, |
| double | r2, | ||
| double | d ) |
Calculates proportion of circle 1 visible with overlapping circle 2.
| r1 | radius of circle 1 |
| r2 | radius of circle 2 |
| d | distance between circle centres |
| double colinearAngle | ( | double | mu | ) |
Calculates colinear angle - the scalar angle between midnight or noon, whichever is closest.
| mu | Mu angle (rad) |
| 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.
| earliestTime | Search backwards until this time |
| time | Solution time |
| satGeom | Satellite geometry (copy) |
| maxYawRate | Maximum yaw rate (rad/s) |
| catchupTime | Time of catchup start |
| dt | Time step to search backwards by (sec) |
| 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.
| earliestTime | Search backwards until this time |
| time | Solution time |
| satGeom | Satellite geometry |
| maxYawRate | Maximum yaw rate (rad/s) |
| startTime | Time at max yaw start |
| startYaw | Yaw at time of max yaw start |
| dt | Time step to search backwards by (sec) |
Finds time when eclipse started, prior (default) to this point in time For finding eclipses forward in time, set dt to some positive value.
| time | Solution time |
| satGeom | Satellite geometry |
| searchForward | Search forward in time |
| bool inEclipse | ( | Vector3d & | rSat, |
| Vector3d & | rSun, | ||
| Vector3d & | rMoon ) |
Returns true if satellite is in eclipse (shadow umbra); else false.
| rSat | Satellite position (ECEF) |
| rSun | Sun position (ECEF) |
| rMoon | Moon position (ECEF) |
| id | Satellite/receiver ID |
| time | Solution time |
| attStatus | Attitude status |
| 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
| eSunOrf | Unit vector to Sun in Orbital reference frame {A,-C,-R} |
| double nominalYawGps | ( | double | beta, |
| double | mu ) |
Calculate nominal (ideal) sat yaw for GPS sats Returns result between (-PI, PI].
| beta | Sun elevation angle with respect to the orbital plane |
| mu | Angle of sat from 'midnight' (when sat is at the furthest point from Sun in its orbit) |
Calculate nominal sat yaw for GPS sats at a given time Returns result between (-PI, PI].
| satGeom | Satellite geometry |
| time | Time of satGeom |
| reqTime | Requested time |
| double nominalYawRate | ( | SatGeom & | satGeom | ) |
Calculates nominal yaw rate.
| satGeom | Satellite geometry |
| double orbitNormalYaw | ( | ) |
Orbit-normal mode yaw (always zero)
phase windup model
| obs | Observation detailing the satellite to apply model to |
| rec | Position of receiver (ECEF) |
| phw | Output of phase windup result |
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.)
| id | Satellite/receiver ID |
| time | Solution time |
| attStatus | Attitude status |
| void recAtt | ( | Receiver & | rec, |
| GTime | time, | ||
| vector< E_Source > | attitudeTypes, | ||
| const KFState * | kfState_ptr, | ||
| const KFState * | remote_ptr ) |
Attitude of receiver.
| rec | Receiver |
| time | Time |
| attitudeTypes | Attitude type |
| 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.
| eX | X+ unit vector of new coordinates |
| eY | Y+ unit vector of new coordinates |
| eZ | Z+ unit vector of new coordinates |
| bool satAttModel | ( | Vector3d & | rSat, |
| Vector3d & | vSat, | ||
| AttStatus & | attStatus, | ||
| E_Source | source ) |
Recalls satellite nominal/model attitude Returns false if attitude is invalid.
| rSat | Satellite position (ECEF) |
| vSat | Satellite velocity (ECEF) |
| attStatus | Attitude status for orientation |
| source | Type of attitude model to return |
Calculates satellite orbit geometry - for use in calculating modelled yaw.
| satPos | Observation |
| 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)
| satPos | observation |
| attitudeTypes | Attitude type |
| quat | Rotation of satellite from ECEF |
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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
| tMax | Maximum mnvr time |
Yaw model for BDS-3I/3M satellites Ref: https://doi.org/10.1007/s10291-018-0783-1 https://doi.org/10.1017/S0373463318000103.
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
| tMax | Maximum mnvr time |
Yaw model for BDS-3M-SECM satellites Ref: https://doi.org/10.48550/arXiv.2112.13252.
| attStatus | Satellite att status |
| satGeom | Satellite geometry |
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
| Sat | Satellite ID |
| attStatus | Satellite yaw status |
| time | Solution time |
| satGeom | Satellite geometry |
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
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
Yaw model for GPS-III sats Ref: https://www.gpsworld.com/new-type-on-the-block-generating-high-precision-orbits-for-gps-iii-satellites/.
| attStatus | Satellite att status |
| satGeom | Satellite geometry |
| 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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
| betaBias | Beta angle bias |
| 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.
| attStatus | Satellite att status |
| nominalYaw | 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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
| orbitNormal | Returns true if satellite is in ON mode |
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.
| Sat | Satellite ID |
| attStatus | Satellite att status |
| time | Solution time |
| satGeom | Satellite geometry |
Smoothed yaw steering for GAL & BDS.
| startYaw | Satellite yaw at start of modified yaw steering |
| startTime | Start time of modified yaw steering (due to noon/midnight turn) |
| time | Solution time |
| tMax | Maximum mnvr time |
| void sunMoonPos | ( | GTime | time, |
| VectorEcef & | rSun, | ||
| VectorEcef & | rMoon ) |
| time | Time of |
| rSun | Sun position (ECEF) |
| rMoon | Moon position (ECEF) |
| 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)
| rSat | Satellite position (ECEF) |
| rSun | Sun position (ECEF) |
| rMoon | Moon position (ECEF) |
| void testEclipse | ( | ObsList & | obsList | ) |
exclude meas of eclipsing satellite (block IIA)
| void updateAntAtt | ( | Vector3d & | bore, |
| Vector3d & | azim, | ||
| AttStatus & | attStatus ) |
Calculates antenna attitude - unit vectors of antenna-fixed coordinates (ECEF)
| bore | Sensor boresight vector (body frame) |
| azim | Sensor azimuth vector (body frame) |
| attStatus | Attitude status |
Satellite attitude - calculates unit vectors of satellite-fixed coordinates (ECEF) Returns false if no attitude available (usually due to eclipse)
| satPos | satellite position data |
| attitudeTypes | Attitude type |
| attStatus | Attitude status |
| 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.)
| Sat | Satellite ID |
| time | Solution time |
| rSat | Satellite position (ECEF) |
| vSat | Satellite velocity (ECEF) |
| attitudeTypes | Attitude type |
| attStatus | Attitude status |
| void updateSatAtts | ( | SatPos & | satPos | ) |
Update sat nominal/model yaws.
Call outside of multithreading code that may reference the same satellite in different threads
| satPos | observation |
Calculates nominal & model yaw.
| satPos | Observation |
| attStatus | Satellite att status. Use a disposable copy if calling inside multithreaded code |
| 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)
| rSat | Sat position (ECEF) |
| satVel | Sat velocity (ECEF) |
| yaw | Yaw (rad) |
| eXSat | X+ unit vector of satellite-fixed coordinates (ECEF) |
| eYSat | Y+ unit vector of satellite-fixed coordinates (ECEF) |
| eZSat | Z+ unit vector of satellite-fixed coordinates (ECEF) |