pub struct ReceiverSolution {
pub position: ItrfPositionM,
pub geodetic: Option<Wgs84Geodetic>,
pub rx_clock_s: f64,
pub system_clocks_s: Vec<(GnssSystem, f64)>,
pub dop: Option<Dop>,
pub system_tdops: Vec<(GnssSystem, f64)>,
pub residuals_m: Vec<f64>,
pub used_sats: Vec<GnssSatelliteId>,
pub rejected_sats: Vec<RejectedSat>,
pub metadata: SolutionMetadata,
}Expand description
A receiver position/clock solution with its geometry diagnostics.
Fields§
§position: ItrfPositionMConverged receiver position, ITRF/IGS ECEF meters.
geodetic: Option<Wgs84Geodetic>The geodetic form of the position, if the conversion was requested.
rx_clock_s: f64Receiver clock bias in seconds (clk_0 / c) for the reference GNSS - the
first entry of system_clocks_s. For a single-system solve this is the
only clock; for a multi-system solve the other systems’ absolute clocks
are in system_clocks_s.
system_clocks_s: Vec<(GnssSystem, f64)>The absolute receiver clock for each GNSS in the solve, in ascending
system order, in seconds. One entry for a single-system solve; one per
constellation for a multi-system solve. The first entry equals
rx_clock_s; the inter-system bias for any other system is its clock
minus that reference (these are absolute per-system clocks, not biases).
dop: Option<Dop>Dilution-of-precision scalars from the converged geometry. A
single-system solve uses the 0-ULP four-state cofactor; a multi-system
solve uses the general inverse with one clock column per constellation (a
deterministic diagnostic, not a 0-ULP target). None only if the
converged geometry is rank-deficient.
system_tdops: Vec<(GnssSystem, f64)>Per-constellation time (clock) DOP, one entry per GNSS in the solve, in
the same ascending system order as system_clocks_s: the square root of
that system’s clock cofactor variance. The first entry’s value equals
dop.tdop (the reference clock). One entry for a single-system solve.
Empty only when dop is None (rank-deficient geometry).
This is exactly dop.system_tdops: the geometry layer reports the
per-system TDOPs already GNSS-tagged in Dop::system_tdops, so this is
a direct copy and needs no re-tagging.
residuals_m: Vec<f64>Post-fit residuals in meters, in used_sats order (unweighted
P_meas - P_hat).
used_sats: Vec<GnssSatelliteId>The satellites that contributed to the solve, ascending id order.
rejected_sats: Vec<RejectedSat>The excluded satellites, each with its reason.
metadata: SolutionMetadataIteration / convergence / model metadata.
Implementations§
Source§impl ReceiverSolution
impl ReceiverSolution
Sourcepub fn residual_rms_m(&self) -> f64
pub fn residual_rms_m(&self) -> f64
Root-mean-square of the post-fit pseudorange residuals over the used satellites (0.0 when empty).
Trait Implementations§
Source§impl Clone for ReceiverSolution
impl Clone for ReceiverSolution
Source§fn clone(&self) -> ReceiverSolution
fn clone(&self) -> ReceiverSolution
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ReceiverSolution
impl Debug for ReceiverSolution
Source§impl RaimSolution for ReceiverSolution
impl RaimSolution for ReceiverSolution
Source§fn raim_used_sats(&self) -> Vec<String>
fn raim_used_sats(&self) -> Vec<String>
Source§fn raim_residuals_m(&self) -> &[f64]
fn raim_residuals_m(&self) -> &[f64]
Auto Trait Implementations§
impl Freeze for ReceiverSolution
impl RefUnwindSafe for ReceiverSolution
impl Send for ReceiverSolution
impl Sync for ReceiverSolution
impl Unpin for ReceiverSolution
impl UnsafeUnpin for ReceiverSolution
impl UnwindSafe for ReceiverSolution
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.