41 [[nodiscard]]
static std::string
type()
48 [[nodiscard]] std::string
getType()
const override {
return type(); }
64 desc.emplace_back(
"Number satellites");
65 desc.emplace_back(
"Receiver clock bias GPS [s]");
66 desc.emplace_back(
"Receiver clock drift GPS [s/s]");
67 desc.emplace_back(
"Receiver clock bias StDev GPS [s]");
68 desc.emplace_back(
"Receiver clock drift StDev GPS [s/s]");
69 desc.emplace_back(
"Receiver clock bias GAL [s]");
70 desc.emplace_back(
"Receiver clock drift GAL [s/s]");
71 desc.emplace_back(
"Receiver clock bias StDev GAL [s]");
72 desc.emplace_back(
"Receiver clock drift StDev GAL [s/s]");
73 desc.emplace_back(
"Receiver clock bias GLO [s]");
74 desc.emplace_back(
"Receiver clock drift GLO [s/s]");
75 desc.emplace_back(
"Receiver clock bias StDev GLO [s]");
76 desc.emplace_back(
"Receiver clock drift StDev GLO [s/s]");
77 desc.emplace_back(
"Receiver clock bias BDS [s]");
78 desc.emplace_back(
"Receiver clock drift BDS [s/s]");
79 desc.emplace_back(
"Receiver clock bias StDev BDS [s]");
80 desc.emplace_back(
"Receiver clock drift StDev BDS [s/s]");
81 desc.emplace_back(
"Receiver clock bias QZSS [s]");
82 desc.emplace_back(
"Receiver clock drift QZSS [s/s]");
83 desc.emplace_back(
"Receiver clock bias StDev QZSS [s]");
84 desc.emplace_back(
"Receiver clock drift StDev QZSS [s/s]");
85 desc.emplace_back(
"Receiver clock bias IRNSS [s]");
86 desc.emplace_back(
"Receiver clock drift IRNSS [s/s]");
87 desc.emplace_back(
"Receiver clock bias StDev IRNSS [s]");
88 desc.emplace_back(
"Receiver clock drift StDev IRNSS [s/s]");
89 desc.emplace_back(
"Receiver clock bias SBAS [s]");
90 desc.emplace_back(
"Receiver clock drift SBAS [s/s]");
91 desc.emplace_back(
"Receiver clock bias StDev SBAS [s]");
92 desc.emplace_back(
"Receiver clock drift StDev SBAS [s/s]");
93 desc.emplace_back(
"HDOP");
94 desc.emplace_back(
"VDOP");
95 desc.emplace_back(
"PDOP");
112 [[nodiscard]] std::optional<double>
getValueAt(
size_t idx)
const override
122 if (
const double* v =
recvClk.biasFor(
GPS)) {
return *v; }
125 if (
const double* v =
recvClk.driftFor(
GPS)) {
return *v; }
128 if (
const double* v =
recvClk.biasStdDevFor(
GPS)) {
return *v; }
131 if (
const double* v =
recvClk.driftStdDevFor(
GPS)) {
return *v; }
135 if (
const double* v =
recvClk.biasFor(
GAL)) {
return *v; }
138 if (
const double* v =
recvClk.driftFor(
GAL)) {
return *v; }
141 if (
const double* v =
recvClk.biasStdDevFor(
GAL)) {
return *v; }
144 if (
const double* v =
recvClk.driftStdDevFor(
GAL)) {
return *v; }
148 if (
const double* v =
recvClk.biasFor(
GLO)) {
return *v; }
151 if (
const double* v =
recvClk.driftFor(
GLO)) {
return *v; }
154 if (
const double* v =
recvClk.biasStdDevFor(
GLO)) {
return *v; }
157 if (
const double* v =
recvClk.driftStdDevFor(
GLO)) {
return *v; }
161 if (
const double* v =
recvClk.biasFor(
BDS)) {
return *v; }
164 if (
const double* v =
recvClk.driftFor(
BDS)) {
return *v; }
167 if (
const double* v =
recvClk.biasStdDevFor(
BDS)) {
return *v; }
170 if (
const double* v =
recvClk.driftStdDevFor(
BDS)) {
return *v; }
174 if (
const double* v =
recvClk.biasFor(
QZSS)) {
return *v; }
177 if (
const double* v =
recvClk.driftFor(
QZSS)) {
return *v; }
180 if (
const double* v =
recvClk.biasStdDevFor(
QZSS)) {
return *v; }
183 if (
const double* v =
recvClk.driftStdDevFor(
QZSS)) {
return *v; }
187 if (
const double* v =
recvClk.biasFor(
IRNSS)) {
return *v; }
190 if (
const double* v =
recvClk.driftFor(
IRNSS)) {
return *v; }
193 if (
const double* v =
recvClk.biasStdDevFor(
IRNSS)) {
return *v; }
196 if (
const double* v =
recvClk.driftStdDevFor(
IRNSS)) {
return *v; }
200 if (
const double* v =
recvClk.biasFor(
SBAS)) {
return *v; }
203 if (
const double* v =
recvClk.driftFor(
SBAS)) {
return *v; }
206 if (
const double* v =
recvClk.biasStdDevFor(
SBAS)) {
return *v; }
209 if (
const double* v =
recvClk.driftStdDevFor(
SBAS)) {
return *v; }
226 std::vector<std::string> descriptors;
231 descriptors.push_back(fmt::format(
"{} Inter-freq bias [s]", bias.first));
232 descriptors.push_back(fmt::format(
"{} Inter-freq bias StDev [s]", bias.first));
236 descriptors.push_back(fmt::format(
"{} Elevation [deg]", satId));
237 descriptors.push_back(fmt::format(
"{} Azimuth [deg]", satId));
266 [[nodiscard]] std::optional<double>
getDynamicDataAt(
const std::string& descriptor)
const override
270 if (descriptor == fmt::format(
"{} Inter-freq bias [s]", bias.first)) {
return bias.second.value; }
271 if (descriptor == fmt::format(
"{} Inter-freq bias StDev [s]", bias.first)) {
return bias.second.stdDev; }
275 if (descriptor == fmt::format(
"{} Elevation [deg]", satId)) {
return rad2deg(
satData.satElevation); }
276 if (descriptor == fmt::format(
"{} Azimuth [deg]", satId)) {
return rad2deg(
satData.satAzimuth); }
306 [[nodiscard]] std::vector<std::pair<std::string, double>>
getDynamicData()
const override
308 std::vector<std::pair<std::string, double>> dynData;
313 dynData.emplace_back(fmt::format(
"{} Inter-freq bias [s]", bias.first), bias.second.value);
314 dynData.emplace_back(fmt::format(
"{} Inter-freq bias StDev [s]", bias.first), bias.second.stdDev);
318 dynData.emplace_back(fmt::format(
"{} Elevation [deg]", satId), rad2deg(
satData.satElevation));
319 dynData.emplace_back(fmt::format(
"{} Azimuth [deg]", satId), rad2deg(
satData.satAzimuth));
378 std::vector<std::pair<SatId, SatData>>
satData;
#define INS_ASSERT(_EXPR)
Assert function wrapper.
Definition Assert.h:19
Keys for the SPP algorithm for use inside the KeyedMatrices.
Position and Velocity Storage Class.
Receiver Clock information.
Structs identifying a unique satellite.
@ GPS
Global Positioning System.
Definition SatelliteSystem.hpp:33
@ QZSS
Quasi-Zenith Satellite System.
Definition SatelliteSystem.hpp:37
@ GLO
Globalnaja nawigazionnaja sputnikowaja sistema (GLONASS)
Definition SatelliteSystem.hpp:35
@ GAL
Galileo.
Definition SatelliteSystem.hpp:34
@ SBAS
Satellite Based Augmentation System.
Definition SatelliteSystem.hpp:39
@ BDS
Beidou.
Definition SatelliteSystem.hpp:36
@ IRNSS
Indian Regional Navigation Satellite System.
Definition SatelliteSystem.hpp:38
Values with an uncertainty (Standard Deviation)
Position and Velocity Storage Class.
Definition PosVel.hpp:23
static constexpr size_t GetStaticDescriptorCount()
Get the amount of descriptors.
Definition PosVel.hpp:73
static std::vector< std::string > parentTypes()
Returns the parent types of the data class.
Definition PosVel.hpp:38
static std::vector< std::string > GetStaticDataDescriptors()
Returns a vector of data descriptors.
Definition PosVel.hpp:46
static std::string type()
Returns the type of the data class.
Definition PosVel.hpp:27
std::optional< double > getValueAt(size_t idx) const override
Get the value at the index.
Definition PosVel.hpp:84
SPP Algorithm output.
Definition SppSolution.hpp:37
double PDOP
PDOP value.
Definition SppSolution.hpp:362
std::optional< double > getDynamicDataAt(const std::string &descriptor) const override
Get the value for the descriptor.
Definition SppSolution.hpp:266
size_t staticDescriptorCount() const override
Get the amount of descriptors.
Definition SppSolution.hpp:107
size_t nSatellites
Amount of satellites used for the calculation.
Definition SppSolution.hpp:349
std::vector< std::pair< SatId, SatData > > satData
Extended data for each satellite.
Definition SppSolution.hpp:378
static std::string type()
Returns the type of the data class.
Definition SppSolution.hpp:41
static std::vector< std::string > GetStaticDataDescriptors()
Returns a vector of data descriptors.
Definition SppSolution.hpp:60
std::optional< double > getValueAt(size_t idx) const override
Get the value at the index.
Definition SppSolution.hpp:112
size_t nParam
Amount of Parameters estimated in this epoch.
Definition SppSolution.hpp:355
double VDOP
VDOP value.
Definition SppSolution.hpp:360
std::string getType() const override
Returns the type of the data class.
Definition SppSolution.hpp:48
std::vector< std::pair< std::string, double > > getDynamicData() const override
Returns a vector of data descriptors and values for the dynamic data.
Definition SppSolution.hpp:306
std::optional< KeyedMatrixXd< SPP::States::StateKeyType, SPP::States::StateKeyType > > _e_sppCovarianceMatrix
Covariance matrix in ECEF coordinates.
Definition SppSolution.hpp:381
static std::vector< std::string > parentTypes()
Returns the parent types of the data class.
Definition SppSolution.hpp:52
ReceiverClock recvClk
Estimated receiver clock parameter.
Definition SppSolution.hpp:365
double HDOP
HDOP value.
Definition SppSolution.hpp:358
std::unordered_map< Frequency, UncertainValue< double > > interFrequencyBias
Inter-frequency biases.
Definition SppSolution.hpp:368
std::vector< std::string > dynamicDataDescriptors() const override
Returns a vector of data descriptors for the dynamic data.
Definition SppSolution.hpp:224
std::vector< std::string > staticDataDescriptors() const override
Returns a vector of data descriptors.
Definition SppSolution.hpp:104
static constexpr size_t GetStaticDescriptorCount()
Get the amount of descriptors.
Definition SppSolution.hpp:101
size_t nMeasPsr
Amount of pseudorange measurements used to calculate the position solution.
Definition SppSolution.hpp:351
size_t nMeasDopp
Amount of doppler measurements used to calculate the velocity solution.
Definition SppSolution.hpp:353
Receiver Clock information.
Definition ReceiverClock.hpp:32
Satellite specific data.
Definition SppSolution.hpp:372
double satElevation
Satellite Elevation [rad].
Definition SppSolution.hpp:373
double satAzimuth
Satellite Azimuth [rad].
Definition SppSolution.hpp:374
Matrix which can be accessed by keys.
static const internal::all_t all
Used to request all rows or columns in KeyedMatrices.
Definition KeyedMatrix.hpp:1457