[][src]Struct nyx_space::od::kalman::KF

pub struct KF<S, A, M, T> where
    S: DimName,
    A: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S>, 
{ pub prev_estimate: KfEstimate<S, T>, pub measurement_noise: MatrixMN<f64, M, M>, pub process_noise: Option<MatrixMN<f64, A, A>>, pub process_noise_dt: Option<f64>, pub ekf: bool, // some fields omitted }

Defines both a Classical and an Extended Kalman filter (CKF and EKF)

Fields

prev_estimate: KfEstimate<S, T>

The previous estimate used in the KF computations.

measurement_noise: MatrixMN<f64, M, M>

Sets the Measurement noise (usually noted R)

process_noise: Option<MatrixMN<f64, A, A>>

Sets the process noise (usually noted Q) in the frame of the estimated state

process_noise_dt: Option<f64>

Enables state noise compensation (process noise) only be applied if the time between measurements is less than the process_noise_dt amount in seconds

ekf: bool

Determines whether this KF should operate as a Conventional/Classical Kalman filter or an Extended Kalman Filter. Recall that one should switch to an Extended KF only once the estimate is good (i.e. after a few good measurement updates on a CKF).

Implementations

impl<S, A, M, T> KF<S, A, M, T> where
    S: DimName,
    A: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, M> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S>, 
[src]

pub fn new(
    initial_estimate: KfEstimate<S, T>,
    process_noise: MatrixMN<f64, A, A>,
    measurement_noise: MatrixMN<f64, M, M>,
    process_noise_dt: Option<f64>
) -> Self
[src]

Initializes this KF with an initial estimate and measurement noise.

impl<S, M, T> KF<S, U3, M, T> where
    S: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, M> + Allocator<f64, S, S> + Allocator<f64, U3, U3> + Allocator<f64, S, U3> + Allocator<f64, U3, S>, 
[src]

pub fn no_snc(
    initial_estimate: KfEstimate<S, T>,
    measurement_noise: MatrixMN<f64, M, M>
) -> Self
[src]

Initializes this KF without SNC

Trait Implementations

impl<S: Clone, A: Clone, M: Clone, T: Clone> Clone for KF<S, A, M, T> where
    S: DimName,
    A: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S>, 
[src]

impl<S: Debug, A: Debug, M: Debug, T: Debug> Debug for KF<S, A, M, T> where
    S: DimName,
    A: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S>, 
[src]

impl<S, A, M, T> Filter<S, A, M, T> for KF<S, A, M, T> where
    S: DimName,
    A: DimName,
    M: DimName,
    T: EstimableState<S>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, S, M> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S>, 
[src]

type Estimate = KfEstimate<S, T>

fn previous_estimate(&self) -> &Self::Estimate[src]

Returns the previous estimate

fn update_stm(&mut self, new_stm: MatrixMN<f64, S, S>)[src]

Update the State Transition Matrix (STM). This function must be called in between each call to time_update or measurement_update.

fn update_h_tilde(&mut self, h_tilde: MatrixMN<f64, M, S>)[src]

Update the sensitivity matrix (or "H tilde"). This function must be called prior to each call to measurement_update.

fn time_update(
    &mut self,
    nominal_state: T
) -> Result<Self::Estimate, FilterError>
[src]

Computes a time update/prediction (i.e. advances the filter estimate with the updated STM).

May return a FilterError if the STM was not updated.

fn measurement_update(
    &mut self,
    nominal_state: T,
    real_obs: VectorN<f64, M>,
    computed_obs: VectorN<f64, M>
) -> Result<(Self::Estimate, Residual<M>), FilterError>
[src]

Computes the measurement update with a provided real observation and computed observation.

May return a FilterError if the STM or sensitivity matrices were not updated.

Auto Trait Implementations

impl<S, A, M, T> !RefUnwindSafe for KF<S, A, M, T>

impl<S, A, M, T> !Send for KF<S, A, M, T>

impl<S, A, M, T> !Sync for KF<S, A, M, T>

impl<S, A, M, T> !Unpin for KF<S, A, M, T>

impl<S, A, M, T> !UnwindSafe for KF<S, A, M, T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

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

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,