Struct GnssChannel

Struct Documentation

struct GnssChannel

Public Functions

Real Wavelength() const

Carrier wavelength c / f for this channel’s GNSS frequency.

Used by GnssMeasurement::ComputeValue/Compute to convert between range and Doppler/carrier-phase (cycles), and by GNSSMeasurements to convert the FLL/PLL range-rate and phase noise sigmas into sigma_doppler_hz/sigma_carrier_phase_cycles.

Returns:

Wavelength [m]; throws if frequency is not in GNSS_FREQ_MAP

bool HasEphemeris() const

True if this channel carries a transmitter ephemeris (either a fitted Chebyshev model or a sampled state history) usable by GetTransmitState(), as opposed to only the single tx_state snapshot.

Vec6 GetTransmitState(Real t) const

Evaluate the transmitter (e.g. GNSS satellite) position/velocity state at epoch t.

Used by GnssMeasurement::ComputeValue/Compute (via ResolveTransmitState) to get the transmitter state at the resolved transmit epoch when re-solving light time from the precomputed channel ephemeris. Falls back to the stored tx_state snapshot if HasEphemeris() is false.

Parameters:

t – Evaluation epoch, in ephemeris_time_scale [s]

Returns:

Transmitter Cartesian state [r; v] [m, m/s] in frame

Real EffectiveTransmitClockBiasSeconds() const

Total transmitter clock bias to apply to the pseudorange, combining the raw clock bias, the special-relativistic periodic correction, and the broadcast group delay: tx_clock_bias_s + / relativistic_correction_s - group_delay_s.

    Used by GnssMeasurement::ComputeValue to compute `tx_bias_m = C *
/ EffectiveTransmitClockBiasSeconds()`, the transmitter-side clock term subtracted from the pseudorange/carrier-phase observables.

Returns:

Effective transmitter clock bias [s]

Real EffectiveTransmitClockDrift() const

Transmitter clock drift used for the Doppler/range-rate clock term (currently just tx_clock_drift).

Returns:

Effective transmitter clock drift [s/s]

Public Members

GnssConst gnss_const = GnssConst::GPS
int prn = 0
GnssFreq frequency = GnssFreq::L1
Real receive_time = 0.0
Time receive_time_scale = Time::TAI
Real transmit_time = 0.0
Time transmit_time_scale = Time::TAI
Time ephemeris_time_scale = Time::TAI
Frame frame = Frame::ECI
Vec6 tx_state = Vec6::Zero()
VecXd ephemeris_times
MatXd ephemeris_tx_states
ChebyshevFitModel ephemeris_chebyshev
Real tx_clock_bias_s = 0.0
Real tx_clock_drift = 0.0
Real relativistic_correction_s = 0.0
Real group_delay_s = 0.0
Real shapiro_delay_m = 0.0
Real ionosphere_plasma_delay_m = 0.0
Real phase_bias_cycles = 0.0
Real integer_ambiguity_cycles = 0.0
Real cn0_dbhz = NAN
Real sigma_pseudorange_m = NAN
Real sigma_doppler_hz = NAN
Real sigma_carrier_phase_cycles = NAN