Class GroundStationRangeMeasurement

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class GroundStationRangeMeasurement : public lupnt::MeasurementClone<GroundStationRangeMeasurement>

Instantaneous range and/or range-rate of a target state relative to a fixed reference state (e.g. a ground station), with the closed-form design matrix.

Given a target [r(3), v(3)] (the State passed to Compute) and a reference [r(3), v(3)] (Config::reference_state, same frame), it returns the selected observables (range = |dr|, range-rate = dr.dv/|dr|, with dr = r - r_ref) and, when a Jacobian is requested, the instantaneous partials with respect to the target Cart6:

  • range row : [u^T, 0] with u = dr/|dr|

  • range-rate row : [((dv - rdot*u)/rho)^T, u^T].

Batch orbit-determination chains this instantaneous design matrix with the state transition matrix Phi(t_k, t0) outside the model; this class owns only the geometry.

Public Functions

GroundStationRangeMeasurement() = default
inline explicit GroundStationRangeMeasurement(Config config)
inline const Config &GetConfig() const
inline void SetConfig(const Config &config)
virtual MeasData Compute(const State &x, MatXd *H = nullptr) const override

Predict the measurement z = h(x), its noise covariance R, and (if H != nullptr) the measurement Jacobian H = dh/dx sized n_z x x.size().

Parameters:
  • x – Estimation state.

  • H[out] If non-null, filled with the measurement Jacobian; if null, only the value and covariance are computed.

Returns:

MeasData with value = z and covariance = R.

struct Config

Public Members

bool use_range = true

include the range row

bool use_range_rate = true

include the range-rate row

Vec6d reference_state = Vec6d::Zero()

Reference (station) Cart6 [r, v] in the same frame as the target state.

double range_sigma_m = 1.0

range noise 1-sigma [m]

double range_rate_sigma_mps = 1.0e-3

range-rate noise 1-sigma [m/s]