Program Listing for File ground_range_measurement.h

Return to documentation for file (measurements/ground_range_measurement.h)

#pragma once

#include <utility>

#include "lupnt/core/definitions.h"
#include "lupnt/measurements/measurement.h"
#include "lupnt/measurements/measurement_utils.h"

namespace lupnt {

  class GroundStationRangeMeasurement : public MeasurementClone<GroundStationRangeMeasurement> {
  public:
    struct Config {
      bool use_range = true;
      bool use_range_rate = true;
      Vec6d reference_state = Vec6d::Zero();
      double range_sigma_m = 1.0;
      double range_rate_sigma_mps = 1.0e-3;
    };

    GroundStationRangeMeasurement() = default;
    explicit GroundStationRangeMeasurement(Config config) : config_(std::move(config)) {}

    const Config& GetConfig() const { return config_; }
    void SetConfig(const Config& config) { config_ = config; }

    MeasData Compute(const State& x, MatXd* H = nullptr) const override;

  private:
    Config config_;
    int NumRows() const { return (config_.use_range ? 1 : 0) + (config_.use_range_rate ? 1 : 0); }
  };

}  // namespace lupnt