0.2.0
Loading...
Searching...
No Matches
GLONASSEphemeris.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
13
14#pragma once
15
16#include <bitset>
17
19
20namespace NAV
21{
22
25class GLONASSEphemeris final : public SatNavData
26{
27 public:
28 // #######################################################################################################
29 // Members
30 // #######################################################################################################
31
33 const double tau_c;
34
36 const InsTime toc;
38 const double tau_n;
40 const double gamma_n;
42 const bool health;
44 const Eigen::Vector3d PZ90_pos;
46 const Eigen::Vector3d PZ90_vel;
48 const Eigen::Vector3d PZ90_accelLuniSolar;
50 const int8_t frequencyNumber;
51
52 // #######################################################################################################
53 // Functions
54 // #######################################################################################################
55
67 double tau_n, double gamma_n, bool health,
68 Eigen::Vector3d pos, Eigen::Vector3d vel, Eigen::Vector3d accelLuniSolar,
69 int8_t frequencyNumber);
70
71#ifdef TESTING
99 GLONASSEphemeris(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t minute, double second,
100 double m_tau_n, double gamma_n, double messageFrameTime,
101 double satPos_x, double satVel_x, double satAccel_x, double health,
102 double satPos_y, double satVel_y, double satAccel_y, double frequencyNumber,
103 double satPos_z, double satVel_z, double satAccel_z, double ageOfOperationInfo,
104 double statusFlags = 0.0, double L1L2groupDelayDifference = 0.0, double URAI = 0.0, double healthFlags = 0.0,
105 double tau_c = 0.0);
106#endif
107
109 ~GLONASSEphemeris() final = default;
115 GLONASSEphemeris& operator=(const GLONASSEphemeris&) = delete;
117 GLONASSEphemeris& operator=(GLONASSEphemeris&&) = delete;
118
120 [[nodiscard]] double calcSatellitePositionVariance() const final;
121
127 [[nodiscard]] Corrections calcClockCorrections(const InsTime& recvTime, double dist, const Frequency& freq) const final;
128
130 [[nodiscard]] bool isHealthy() const final;
131
132 private:
134 static constexpr double _h = 60.0;
135
140 [[nodiscard]] PosVelAccel calcSatelliteData(const InsTime& transTime, Orbit::Calc calc) const final;
141};
142
143} // namespace NAV
Satellite Navigation data (to calculate SatNavData and clock)
Frequency definition for different satellite systems.
Definition Frequency.hpp:59
Broadcasted ephemeris message data.
Definition GLONASSEphemeris.hpp:26
const bool health
Health.
Definition GLONASSEphemeris.hpp:42
const Eigen::Vector3d PZ90_vel
Velocity at reference time in PZ90 frame [m/s].
Definition GLONASSEphemeris.hpp:46
const double tau_c
Coefficient of linear polynomial of time system difference [s].
Definition GLONASSEphemeris.hpp:33
bool isHealthy() const final
Checks whether the signal is healthy.
const Eigen::Vector3d PZ90_accelLuniSolar
Accelerations due to lunar-solar gravitational perturbation in PZ90 frame [m/s^2].
Definition GLONASSEphemeris.hpp:48
const Eigen::Vector3d PZ90_pos
Position at reference time in PZ90 frame [m].
Definition GLONASSEphemeris.hpp:44
double calcSatellitePositionVariance() const final
Calculates the Variance of the satellite position in [m^2].
const double tau_n
SV clock bias [s].
Definition GLONASSEphemeris.hpp:38
Corrections calcClockCorrections(const InsTime &recvTime, double dist, const Frequency &freq) const final
Calculates clock bias and drift of the satellite.
GLONASSEphemeris(const InsTime &toc, double tau_c, double tau_n, double gamma_n, bool health, Eigen::Vector3d pos, Eigen::Vector3d vel, Eigen::Vector3d accelLuniSolar, int8_t frequencyNumber)
Constructor.
const int8_t frequencyNumber
Frequency number (-7 ... +13) (-7 ...+6 (ICD 5.1))
Definition GLONASSEphemeris.hpp:50
const double gamma_n
SV relative frequency bias.
Definition GLONASSEphemeris.hpp:40
const InsTime toc
Toe Time of clock [s] (Reference time, ephemeris parameters)
Definition GLONASSEphemeris.hpp:36
~GLONASSEphemeris() final=default
Destructor.
The class is responsible for all time-related tasks.
Definition InsTime.hpp:667
Abstract satellite orbit information.
Definition Orbit.hpp:24
Calc
Calculation flags.
Definition Orbit.hpp:74
Satellite Navigation data (to calculate SatNavData and clock)
Definition SatNavData.hpp:26
@ GLONASSEphemeris
GLONASS Broadcast Ephemeris.
Definition SatNavData.hpp:33
Satellite clock corrections.
Definition Clock.hpp:28
Satellite Position, Velocity and Acceleration.
Definition Orbit.hpp:39