# `Sidereon.GNSS.RTK.FloatBaselineSolution`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/gnss/rtk.ex#L309)

Float RTK baseline solution from code/carrier double differences.

# `ecef`

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

# `residual`

```elixir
@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`

```elixir
@type t() :: %Sidereon.GNSS.RTK.FloatBaselineSolution{
  ambiguities_m: %{required(String.t()) =&gt; float()},
  baseline_m: ecef(),
  metadata: %{
    iterations: pos_integer(),
    converged: boolean(),
    status: :state_tolerance | :max_iterations,
    physical_sats: [String.t()],
    reference_satellites: %{required(String.t()) =&gt; String.t()},
    ambiguity_satellites: %{required(String.t()) =&gt; 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(),
    geometry_quality: Sidereon.GeometryQuality.t(),
    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()) =&gt; String.t()},
  residuals_m: [residual()],
  rover_position_m: ecef(),
  used_sats: [String.t()]
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
