Struct statime::filters::KalmanConfiguration

source ·
pub struct KalmanConfiguration {
Show 15 fields pub step_threshold: Duration, pub deadzone: f64, pub steer_time: Duration, pub max_steer: f64, pub max_freq_offset: f64, pub initial_frequency_uncertainty: f64, pub initial_wander: f64, pub delay_wander: f64, pub precision_low_probability: f64, pub precision_high_probability: f64, pub precision_hysteresis: u8, pub estimate_threshold: Duration, pub difference_estimation_boundary: usize, pub statistical_estimation_boundary: usize, pub peer_delay_factor: f64,
}
Expand description

Configuration options for KalmanFilter

Fields§

§step_threshold: Duration

Threshold above which errors in time are corrected by steps

§deadzone: f64

Band of measured time offsets in which the algorithm doesn’t try to correct the offset, in standard deviations.

§steer_time: Duration

Amount of time to take for correcting time offsets, in seconds.

Lower values make the clock correct more quickly, but also less precisely.

§max_steer: f64

Maximum frequency offset to introduce during steering (ppm)

§max_freq_offset: f64

Maximum correction to frequency (both from steering and to correct for the properties of the clock) the algorithm can make. (ppm)

§initial_frequency_uncertainty: f64

Initial uncertainty about the clocks frequency

§initial_wander: f64

Initial estimate for the wander of the clock’s frequency in s/s

§delay_wander: f64

Amount of uncertainty introduced into the delay over time. Larger values allow quicker adaptation to changing conditions, at the cost of less precise clock synchronization.

This is automatically scaled with the size of the delay. (percentage per second)

§precision_low_probability: f64

Likelyhood below which we start pushing the wander selection process towards assuming a more precise clock.

§precision_high_probability: f64

Likelyhood above which we start pushing the wander selection process towards assuming a less precise clock.

§precision_hysteresis: u8

Amount of resistance to changes in wander (max 127)

§estimate_threshold: Duration

Maximum time between sync and delay to consider the combination for automatic channel error estimation. Lower values improve the estimate as it gets polluted less by uncertainties in the clock frequency, but increase startup time.

§difference_estimation_boundary: usize

Amount of samples needed to start automatic measurement channel error estimation (max 32)

§statistical_estimation_boundary: usize

Amount of samples needed to switch automatic measurement channel error estimation to using sample variance instead of largest-spread. (max 32)

§peer_delay_factor: f64

Multiplication factor on uncertainty estimation when it comes from peer delay measurements (to compensate for there being multiple path segments).

Trait Implementations§

source§

impl Clone for KalmanConfiguration

source§

fn clone(&self) -> KalmanConfiguration

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for KalmanConfiguration

source§

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

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

impl Default for KalmanConfiguration

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for KalmanConfiguration

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for KalmanConfiguration

source§

impl StructuralPartialEq for KalmanConfiguration

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> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

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

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

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

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

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.