Skip to main content

Correlation

Struct Correlation 

Source
pub struct Correlation {
    pub gnss_position: Option<Seconds>,
    pub gnss_height: Option<Seconds>,
    pub gnss_velocity: Option<Seconds>,
    pub baro_altitude: Option<Seconds>,
    pub mag_heading: Option<Seconds>,
    pub gnss_heading: Option<Seconds>,
    pub course: Option<Seconds>,
}
Expand description

How long each source’s measurement error persists: the time constant τ of equation (24′), per source. None fuses that source as white, which is (24) as written.

Equation (24) treats each measurement’s error as independent of the last, and almost no source in the corpus is: fused as white, the lag-1 autocorrelation of its innovations (the acf1_ keys of the replay summary line) is positive on nearly every real log. A filter that fuses such measurements as white averages down an error it cannot observe, and its covariance claims the averaging worked. (24′) fuses each at the variance that makes a run of them carry what they actually carry, which is less the shorter the interval is against τ.

Inflating R rather than flooring P, and in the gain rather than the gate, is measured; the decision records what each alternative read.

Per source, like Recovery and Gates, because a source is what the gate judges and what (24′) times. Configured rather than derived, as ImuNoise is: it is a property of the sensor, and the filter cannot measure it in flight without retuning itself. The replay harness’s --derive reads it offline, τ = −T / ln ρ at a log’s sample interval T and its lag-one innovation autocorrelation ρ, and that reading is a lower bound: an innovation is whiter than the error behind it, because the filter follows part of that error. It falls well short of a simulated sensor’s own τ, so --derive prints it only above the default (measured); an estimator the filter does not bias is #195.

Fields§

§gnss_position: Option<Seconds>

GNSS horizontal position.

§gnss_height: Option<Seconds>

GNSS height.

§gnss_velocity: Option<Seconds>

GNSS velocity, all three axes.

§baro_altitude: Option<Seconds>

Barometric altitude. The reference’s drift is (30′)’s, not this: this is the noise about it.

§mag_heading: Option<Seconds>

Magnetic heading, with the leveling variance of (36′) it carries.

§gnss_heading: Option<Seconds>

Dual-antenna GNSS heading.

§course: Option<Seconds>

Course constraint: the sideslip the constraint allows, which persists as long as the wind and the vehicle’s trim do.

Implementations§

Source§

impl Correlation

Source

pub const WHITE: Self

Every measurement independent of the last: equation (24) with nothing added.

Trait Implementations§

Source§

impl Clone for Correlation

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Correlation

Source§

impl Debug for Correlation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Correlation

Source§

fn default() -> Self

The corpus’s: τ = −T / ln ρ from each real log’s acf1_ for the source, read with every measurement fused as white, at that log’s own sample interval, and the median over the real logs whose autocorrelation is positive. GNSS heading and the course constraint rest on one log each. The table, and the logs left out, are the decision’s.

Source§

impl PartialEq for Correlation

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Correlation

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.