pub enum Coarse {
WindowTooShort {
required: Seconds,
provided: Seconds,
},
NotStationary {
peak_gyro: RadiansPerSecond,
peak_accel_deviation: MetersPerSecond2,
span: Seconds,
inertial_accel: Option<Acceleration<Ned>>,
},
}Expand description
Why alignment was coarse rather than static.
Carries what was measured, so “not stationary” is diagnosable rather than a bare
verdict: an integrator tuning
Initialization needs to know by how much.
Variants§
WindowTooShort
The vehicle held still, but the window spans less than
Initialization::min_duration.
Still is measured before length, so a short window that moved is
NotStationary instead: this variant is a parked vehicle
that has not been parked for long, and the filter trusts its position, velocity,
barometric reference and heading as it would a static window’s.
Fields
NotStationary
The vehicle was moving: angular rate or specific force left the tolerance
Initialization allows.
Fields
peak_gyro: RadiansPerSecondLargest angular rate magnitude in the window.
peak_accel_deviation: MetersPerSecond2Largest departure of the specific-force magnitude from gravity.
span: SecondsHow long the window spanned. With peak_gyro, this bounds how far the
vehicle turned while its gravity vector was being averaged, which is the
other way a moving window spoils tilt.
inertial_accel: Option<Acceleration<Ned>>Mean navigation-frame acceleration over the window, ā_n of equation (5′),
differenced from StaticSample::velocity. None when no two samples
carried one.
What separates a vehicle that is accelerating from an accelerometer that is
lying: peak_accel_deviation measures specific force that is not gravity,
and this is the part of it GNSS can account for. A launch off a moving deck
reads both, and only one of them spoils tilt.
Stub. Reported, not subtracted (equation (5′), #59), so it narrows nothing:
the tilt prior of (8′) is bounded by how far the window’s averaged specific force
is from gravity, and a real ā_n is part of what puts it there.
Trait Implementations§
impl Copy for Coarse
Source§impl Format for Coarsewhere
Seconds: Format,
RadiansPerSecond: Format,
MetersPerSecond2: Format,
Option<Acceleration<Ned>>: Format,
Available on crate feature defmt only.
impl Format for Coarsewhere
Seconds: Format,
RadiansPerSecond: Format,
MetersPerSecond2: Format,
Option<Acceleration<Ned>>: Format,
defmt only.impl StructuralPartialEq for Coarse
Auto Trait Implementations§
impl Freeze for Coarse
impl RefUnwindSafe for Coarse
impl Send for Coarse
impl Sync for Coarse
impl Unpin for Coarse
impl UnsafeUnpin for Coarse
impl UnwindSafe for Coarse
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,
impl<T> Scalar 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.