Program Listing for File surface_measurements.h

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

#pragma once

#include <string>

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

namespace lupnt {

  struct LcrnsSatConfig {
    std::string name = "SV";
    Vec3d r0_m = Vec3d::Zero();
    Vec3d v0_mps = Vec3d::Zero();
  };

  constexpr int kSurfaceNavErrorStateSize = 17;

  struct SurfaceImuMeasurement {
    double timestamp = 0.0;
    Vec3d accel = Vec3d::Zero();
    Vec3d gyro = Vec3d::Zero();
  };

  struct SurfaceLansMeasurement : public ErrorStateMeasurement {
    struct Config {
      int i_dr = 0;
      int i_dcb = 15;
    };

    double timestamp = 0.0;
    Vec3d r_sat = Vec3d::Zero();
    double pseudorange_m = 0.0;
    double sigma_m = 1.0;
    double sise_m = 3.0;
    Config config;

    double PredictedRange(const Vec3d& r_rover, double clock_bias_s) const;

    Vec3d LosUnit(const Vec3d& r_rover) const;

    double NoiseVariance() const { return sigma_m * sigma_m + sise_m * sise_m; }

    MeasData Compute(const NavErrorContext& nom, MatXd* H = nullptr) const override;
  };

}  // namespace lupnt