54struct hash<
NAV::DualFrequencyCombination>
60 auto hash1 = std::hash<NAV::SatId>{}(c.
satId);
61 auto hash2 = std::hash<NAV::Code>{}(c.
sig1);
62 auto hash3 = std::hash<NAV::Code>{}(c.
sig2);
64 return hash1 | (hash2 << 24) | (hash3 << 48);
198 using Result = std::variant<CycleSlipLossOfLockIndicator, CycleSlipDualFrequency, CycleSlipSingleFrequency>;
220 [[nodiscard]] std::vector<Result>
checkForCycleSlip(
InsTime insTime,
const std::vector<SatelliteObservation>& satObs,
const std::string& nameId);
252bool CycleSlipDetectorGui(
const char* label, CycleSlipDetector& cycleSlipDetector,
float width = 0.0F,
bool dualFrequencyAvailable =
true);
257void to_json(
json& j,
const CycleSlipDetector& data);
275#ifndef DOXYGEN_IGNORE
279struct fmt::formatter<
NAV::CycleSlipDetector::Result> : fmt::formatter<std::string>
285 template<
typename FormatContext>
288 return fmt::formatter<std::string>::format(
to_string(cycleSlip), ctx);
std::ostream & operator<<(std::ostream &os, const NAV::CycleSlipDetector::Result &obj)
Stream insertion operator overload.
nlohmann::json json
json namespace
GNSS Observation messages.
Polynomial Cycle-slip detection algorithm.
Structs identifying a unique satellite.
Enumerate for GNSS Codes.
void reset()
Resets all data.
std::variant< CycleSlipLossOfLockIndicator, CycleSlipDualFrequency, CycleSlipSingleFrequency > Result
Result of the cycle-slip detection test.
bool isEnabled(const Detector &detector) const
Is the cycle-slip detector enabled?
double _dualFrequencyThresholdPercentage
Threshold to detect a cycle-slip in [% of smallest wavelength].
bool _enableLLICheck
Whether to check for LLI flag.
void setWindowSize(size_t windowSize, const Detector &detector)
Sets the amount of points used for the fit (sliding window)
void setThreshold(double threshold, const Detector &detector)
Sets the threshold to categorize a measurement as cycle slip.
PolynomialCycleSlipDetector< SatSigId > _singleFrequencyDetector
Single Frequency carrier-phase cycle-slip detector using polynomial fits.
void resetSignal(const SatSigId &satSigId)
Resets all data related to the provided signal.
Strategy getFitStrategy(const Detector &detector) const
Get the strategy used for fitting.
friend void to_json(json &j, const CycleSlipDetector &data)
Write info to a json object.
friend bool CycleSlipDetectorGui(const char *label, CycleSlipDetector &cycleSlipDetector, float width, bool dualFrequencyAvailable)
Shows a GUI for advanced configuration of the CycleSlipDetector.
void setEnabled(bool enabled, const Detector &detector)
Sets the enabled state.
void setFitStrategy(Strategy strategy, const Detector &detector)
Sets the strategy used for fitting.
Detector
Detectors in use.
@ LLI
Loss-of-Lock Indicator check.
@ SingleFrequency
Single frequency detector.
@ DualFrequency
Dual frequency detector.
size_t getWindowSize(const Detector &detector) const
Get the window size for the polynomial fit.
double getThreshold(const Detector &detector) const
Get the threshold to categorize a measurement as cycle slip [% of smallest wavelength].
std::vector< Result > checkForCycleSlip(InsTime insTime, const std::vector< SatelliteObservation > &satObs, const std::string &nameId)
Checks for a cycle slip.
double _singleFrequencyThresholdPercentage
Threshold to detect a cycle-slip in [% of smallest wavelength].
void setPolynomialDegree(size_t polyDegree, const Detector &detector)
Sets the degree of the polynomial which is used for fitting.
PolynomialCycleSlipDetector< DualFrequencyCombination > _dualFrequencyDetector
Dual Frequency cycle-slip detector using polynomial fits.
friend void from_json(const json &j, CycleSlipDetector &data)
Read info from a json object.
PolynomialRegressor<>::Strategy Strategy
Strategies for fitting.
size_t getPolynomialDegree(const Detector &detector) const
Get the degree of the polynomial which is used for fitting.
The class is responsible for all time-related tasks.
Strategy
Possible Fit strategies.
void to_json(json &j, const Node &node)
Converts the provided node into a json object.
const char * to_string(gui::widgets::PositionWithFrame::ReferenceFrame refFrame)
Converts the enum to a string.
void from_json(const json &j, Node &node)
Converts the provided json object into a node object.
bool CycleSlipDetectorGui(const char *label, CycleSlipDetector &cycleSlipDetector, float width, bool dualFrequencyAvailable)
Shows a GUI for advanced configuration of the CycleSlipDetector.
Cycle-slip found in dual frequency combination.
std::array< SatSigId, 2 > signals
Signal identifiers where the cycle-slip occurred.
Cycle-slip because LLI was set.
SatSigId signal
Signal identifier where the cycle-slip occurred.
Cycle-slip found in single frequency carrier-phase observation.
SatSigId signal
Signal identifier where the cycle-slip occurred.
GnssObs::ObservationData::CarrierPhase measurement
Carrier-phase measurement and LLI flag.
Satellite observations ordered per satellite.
int8_t freqNum
Frequency number. Only used for GLONASS G1 and G2.
SatId satId
Satellite identifier.
std::vector< Signal > signals
List of signals.
Dual frequency combination.
Code sig1
Signal code/frequency (f(sig1) > f(sig2), e.g. L1 if L1-L2)
SatId satId
Satellite Identifier.
Code sig2
Signal code/frequency (f(sig2) < f(sig1), e.g. L2 if L1-L2)
constexpr bool operator<(const DualFrequencyCombination &rhs) const
Less than comparison (needed for map)
constexpr bool operator==(const DualFrequencyCombination &rhs) const
Equal comparison (needed for unordered_map)
Identifies a satellite (satellite system and number)
Identifies a satellite signal (satellite frequency and number)
std::size_t operator()(const NAV::DualFrequencyCombination &c) const
Hash function for SatId.