pub struct Coast {
pub acceleration: f32,
pub rotation: f32,
}Expand description
What the filter assumes across an IMU gap it coasts over. Equation (22′).
A gap longer than Config::max_predict_dt has no measurement describing it, so the
filter coasts: position advances on the estimated velocity, nothing else moves, and the
covariance grows by (22) plus an acceleration nobody measured. Refusing the step instead
leaves a moving vehicle’s state stale by v Δt under a covariance that did not grow, and
every fix after the gap is then tens of σ away and turned down until
Config::recovery adopts one — the lockout coasting exists to prevent.
On by default, per rejection
handling:
a correction the filter can make honestly is made, and Config::coast = None is the
opt-out for an application that owns the gap itself.
Fields§
§acceleration: f32Density of the acceleration the vehicle may have pulled during the gap, m s⁻² / √Hz,
added to the velocity block of (21) for the gap’s duration: σ_v = a √Δt, 3.5 m/s over
a 3.1 s gap at the default.
rotation: f32Density of the rotation the vehicle may have made during the gap, rad s⁻¹ / √Hz, added to the attitude block of (21) for the gap’s duration: 10° over a 3.1 s gap at the default. All three axes, because a vehicle that turns also banks.
Trait Implementations§
impl Copy for Coast
Source§impl Default for Coast
impl Default for Coast
Source§fn default() -> Self
fn default() -> Self
Measured on the two sources with gaps at speed, and set at twice the smallest value either needed. Both are properties of an airframe’s maneuvers, so a vehicle more agile than these is the reason to raise them.
rotation is the corpus’s finding rather than the simulator’s: 4b473e91’s course turns
44° across a 3.1 s gap, and coasted without it the stale heading steers velocity off until
the gate turns it down, 7 recoveries at half the default acceleration (evidence).
impl StructuralPartialEq for Coast
Auto Trait Implementations§
impl Freeze for Coast
impl RefUnwindSafe for Coast
impl Send for Coast
impl Sync for Coast
impl Unpin for Coast
impl UnsafeUnpin for Coast
impl UnwindSafe for Coast
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.