Orbis.GNSS.RTK.FloatBaselineSolution (Orbis v0.23.0)

Copy Markdown View Source

Float RTK baseline solution from code/carrier double differences.

Summary

Types

ecef()

@type ecef() :: %{x_m: float(), y_m: float(), z_m: float()}

residual()

@type residual() :: %{
  epoch: term(),
  satellite_id: String.t(),
  reference_satellite_id: String.t(),
  ambiguity_id: String.t(),
  code_m: float(),
  phase_m: float(),
  code_sigma_m: float(),
  phase_sigma_m: float(),
  code_normalized: float(),
  phase_normalized: float()
}

t()

@type t() :: %Orbis.GNSS.RTK.FloatBaselineSolution{
  ambiguities_m: %{required(String.t()) => float()},
  baseline_m: ecef(),
  metadata: %{
    iterations: pos_integer(),
    converged: boolean(),
    status: :state_tolerance | :max_iterations,
    physical_sats: [String.t()],
    reference_satellites: %{required(String.t()) => String.t()},
    ambiguity_satellites: %{required(String.t()) => String.t()},
    ambiguity_float: %{
      order: [String.t()],
      covariance_m: [[float()]],
      covariance_inverse_m: [[float()]]
    },
    measurement_covariance: %{
      model: :double_difference,
      code_sigma_m: float(),
      phase_sigma_m: float(),
      stochastic_model: :simple | :rtklib,
      elevation_weighting: boolean(),
      sagnac: boolean(),
      min_elevation_sin: float()
    },
    code_rms_m: float(),
    phase_rms_m: float(),
    weighted_rms_m: float(),
    n_epochs: pos_integer(),
    n_observations: pos_integer(),
    dropped_sats: [String.t()],
    dropped_cycle_slip_sats: [String.t()],
    elevation_mask_deg: float() | nil,
    elevation_masked_sats: [String.t()],
    split_cycle_slip_arcs: [map()]
  },
  reference_satellite_id: String.t() | %{required(String.t()) => String.t()},
  residuals_m: [residual()],
  rover_position_m: ecef(),
  used_sats: [String.t()]
}