Class GnssMeasurement¶
Defined in File gnss_measurement.h
Inheritance Relationships¶
Base Type¶
public lupnt::MeasurementClone< GnssMeasurement >(Template Class MeasurementClone)
Class Documentation¶
-
class GnssMeasurement : public lupnt::MeasurementClone<GnssMeasurement>¶
Single-channel GNSS measurement model (
Measurementsubclass).Its
ConfigisGnssMeasurementOptions(observable selection, state-index layout, clock-bias unit, frame, and light-time/relativity/Shapiro/plasma correction settings), stored as a member and consumed by theMeasurementinterface methods (Compute/CreateFunction). The explicit-config overloadsComputeValue/ComputeVectorremain available for callers (e.g. the Lunar-GNSS ODTS combined/TDCP model) that vary the config per invocation.Public Types
-
using Config = GnssMeasurementOptions¶
The measurement model’s configuration type (observable selection, state mapping, correction settings). Alias of
GnssMeasurementOptions.
Public Functions
-
GnssMeasurement() = default¶
-
explicit GnssMeasurement(const GnssChannel &channel)¶
Construct a single-channel GNSS measurement from a (typically precomputed) GnssChannel.
Used by GNSSMeasurements::ComputeFromChannels to wrap each transmitter channel built by
BuildChannelsbefore computing its pseudorange/Doppler/carrier-phase observables.
-
GnssMeasurement(const GnssChannel &channel, GnssMeasurementOptions options)¶
Construct from a channel and an explicit measurement config.
-
inline void SetChannel(const GnssChannel &channel)¶
Replace the GNSS channel (transmitter ephemeris, clock, and delay terms) used by ComputeValue()/ComputeVector().
-
inline const GnssChannel &GetChannel() const¶
Get the GNSS channel currently associated with this measurement.
-
inline void SetOptions(const GnssMeasurementOptions &options)¶
Replace the measurement config used by the
Measurementinterface methods.
-
inline const GnssMeasurementOptions &GetOptions() const¶
Get the measurement config currently in use.
-
GnssMeasurementValue ComputeValue(const State &user_state, const GnssMeasurementOptions &options = {}) const¶
Compute the pseudorange, Doppler, and carrier-phase values implied by a user (receiver) state and this measurement’s channel.
This is the core GNSS observation model used throughout the module: GnssMeasurement::Compute calls this to build the measurement vector, and GNSSMeasurements::ComputeFromChannels calls it per-channel when assembling a
GNSSMeasurementsEpoch. It forms the geometric range/range-rate betweenuser_stateand the (light-time- and relativity-corrected) transmitter state, then applies the receiver and effective-transmitter clock bias/drift and the channel’s Shapiro-delay/ionosphere-plasma corrections (added for the code/ pseudorange observable, subtracted for the carrier-phase observable, per the standard dispersive-vs-non-dispersive sign convention).- Parameters:
user_state – Receiver state vector; must contain position and velocity at
options.indices.position/velocity[m, m/s] inoptions.frame, and optionally receiver clock bias/drift and carrier-integer-ambiguity states at the otherindicesentriesoptions – Observable selection, state-index layout, clock-bias unit, and light-time/relativity/Shapiro/plasma correction settings
- Returns:
GnssMeasurementValue with pseudorange [m], Doppler [Hz], and carrier-phase [cycles] (plus the carrier integer ambiguity)
-
VecXd ComputeVector(const State &user_state, MatXd *H = nullptr, const GnssMeasurementOptions &options = {}) const¶
Compute the GNSS measurement vector (and, optionally, its Jacobian) for the observables selected in
options.The explicit-config workhorse behind the
Measurementinterface: it evaluatesy = h(x)andH = dh/dxfor one GNSS channel. Internally calls ComputeValue() fory, and (ifHis requested) differentiates the range/range-rate/carrier-phase model analytically with respect to receiver position, velocity, clock bias/drift, and carrier-integer state, per the observables inoptions.observables.- Parameters:
user_state – Receiver state vector, as in ComputeValue()
H – [out] If non-null, filled with the
observables.size() x user_state.size()Jacobian ofywith respect touser_stateoptions – Same options as ComputeValue()
- Returns:
Measurement vector
y, one entry peroptions.observables[m, Hz, or cycles depending on entry]
-
virtual MeasData Compute(const State &x, MatXd *H = nullptr) const override¶
Measurementinterface: predictz = h(x),R, and (ifH != nullptr) the analytic JacobianH = dh/dx, using the stored configGetOptions().The diagonal
Rcovariance is built fromGetChannel()’ssigma_pseudorange_m/sigma_doppler_hz/sigma_carrier_phase_cycles(each defaulted to 1 if not finite/positive).CreateFunction()(inherited) wraps this into aFilterMeasurementFunctionfor direct use with theFilterfamily.
Public Static Functions
-
static std::vector<GNSSMeasurementsEpoch> Precompute(const GNSSMeasurements &measurements, const std::vector<Real> &receive_times, const std::vector<State> &user_states, bool compute_jacobians = false)¶
Batch-compute a
GNSSMeasurementsEpoch(channels + values [+ Jacobians]) for each given receive time / user state pair.Thin wrapper around
GNSSMeasurements::Computeused to generate a time series of GNSS measurement epochs (e.g. for truth-data generation or batch filter processing) without manually looping overreceive_times/user_states.- Parameters:
measurements – Configured GNSSMeasurements (constellation, options, antennas, etc.) used to build channels
receive_times – Receiver signal-reception epochs [s,
measurements.GetOptions().receive_time_scale]user_states – Receiver states at each
receive_timesentry, one-to-one withreceive_timescompute_jacobians – If true, also compute and store each epoch’s measurement Jacobian
- Returns:
One
GNSSMeasurementsEpochperreceive_timesentry
-
using Config = GnssMeasurementOptions¶