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) |