Sidereon.GNSS.StaticPositioning.Solution (Sidereon v3.0.0)

Copy Markdown View Source

Multi-epoch static receiver solution.

position is the shared ITRF/IGS ECEF receiver position in metres. per_epoch_clock contains the fitted receiver clock for each epoch and constellation. covariance contains the full stacked state covariance plus ECEF and ENU position covariance blocks. Influence and residual fields are index-aligned to the input epochs and used measurements. rejected_sats lists, per epoch, each satellite left out with its Sidereon.GNSS.Positioning.Solution.rejection_reason/0; with the ionosphere requested, a satellite with no resolvable carrier (a GLONASS satellite with no channel or a channel outside -7..6) is reported as :ionosphere_carrier_unresolved and the rest of its epoch is solved.

Summary

Types

Epoch-local receiver clock estimate for one GNSS system.

Static solve covariance blocks.

Geodetic receiver position in radians and metres.

Core static solve iteration and model metadata.

ECEF receiver position in metres.

t()

Decoded multi-epoch static positioning solution.

Types

clock_bias()

@type clock_bias() :: %{
  epoch_index: non_neg_integer(),
  system: String.t(),
  clock_s: float()
}

Epoch-local receiver clock estimate for one GNSS system.

covariance()

@type covariance() :: %{
  state_m2: [[float()]],
  position_ecef_m2: [[float()]],
  position_enu_m2: [[float()]]
}

Static solve covariance blocks.

geodetic()

@type geodetic() :: %{lat_rad: float(), lon_rad: float(), height_m: float()}

Geodetic receiver position in radians and metres.

metadata()

@type metadata() :: %{
  iterations: non_neg_integer(),
  converged: boolean(),
  status: Sidereon.GNSS.Positioning.Solution.status(),
  outer_iterations: non_neg_integer(),
  final_robust_scale_m: float() | nil,
  used_measurements: non_neg_integer(),
  n_parameters: non_neg_integer(),
  redundancy: integer(),
  ut1_degraded: nil | :before_coverage | :after_coverage
}

Core static solve iteration and model metadata.

position()

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

ECEF receiver position in metres.

t()

@type t() :: %Sidereon.GNSS.StaticPositioning.Solution{
  covariance: covariance(),
  geodetic: geodetic() | nil,
  geometry_quality: Sidereon.GeometryQuality.t(),
  metadata: metadata(),
  per_epoch_clock: [clock_bias()],
  per_epoch_influence: [map()],
  per_satellite_batch_influence: [map()],
  per_satellite_influence: [map()],
  position: position(),
  rejected_sats: [
    [{String.t(), Sidereon.GNSS.Positioning.Solution.rejection_reason()}]
  ],
  residual_rms_m: float(),
  residuals_m: [map()],
  used_sats: [[String.t()]]
}

Decoded multi-epoch static positioning solution.