[][src]Trait nyx_space::od::Filter

pub trait Filter<S, A, M> where
    S: DimName,
    A: DimName,
    M: DimName,
    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>, 
{ type Estimate: Estimate<S>; fn previous_estimate(&self) -> &Self::Estimate;
fn update_stm(&mut self, new_stm: MatrixMN<f64, S, S>);
fn update_h_tilde(&mut self, h_tilde: MatrixMN<f64, M, S>);
fn time_update(&mut self, dt: Epoch) -> Result<Self::Estimate, FilterError>;
fn measurement_update(
        &mut self,
        dt: Epoch,
        real_obs: VectorN<f64, M>,
        computed_obs: VectorN<f64, M>
    ) -> Result<(Self::Estimate, Residual<M>), FilterError>;
fn is_extended(&self) -> bool;
fn set_extended(&mut self, status: bool);
fn set_process_noise(&mut self, prc: MatrixMN<f64, A, A>); }

Defines a Filter trait where S is the size of the estimated state, A the number of acceleration components of the EOMs (used for process noise matrix size), M the size of the measurements.

Associated Types

Loading content...

Required methods

fn previous_estimate(&self) -> &Self::Estimate

Returns the previous estimate

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

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>)

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

fn time_update(&mut self, dt: Epoch) -> Result<Self::Estimate, FilterError>

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

Returns a FilterError if the STM was not updated.

fn measurement_update(
    &mut self,
    dt: Epoch,
    real_obs: VectorN<f64, M>,
    computed_obs: VectorN<f64, M>
) -> Result<(Self::Estimate, Residual<M>), FilterError>

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

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

fn is_extended(&self) -> bool

Returns whether the filter is an extended filter (e.g. EKF)

fn set_extended(&mut self, status: bool)

Sets the filter to be extended or not depending on the value of status

fn set_process_noise(&mut self, prc: MatrixMN<f64, A, A>)

Sets the process noise matrix in the frame of the estimated state

Loading content...

Implementors

impl<S, A, M> Filter<S, A, M> for KF<S, A, M> where
    S: DimName,
    A: DimName,
    M: DimName,
    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>

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, dt: Epoch) -> 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,
    dt: Epoch,
    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.

impl<S, A, M> Filter<S, A, M> for SRIF<S, A, M> where
    S: DimName + DimNameAdd<M> + DimNameAdd<S> + DimNameAdd<U1> + DimMin<U1>,
    A: DimName,
    M: DimName + DimNameAdd<S> + DimNameAdd<M> + DimNameAdd<U1>,
    DimNameSum<S, M>: DimMin<DimNameSum<S, U1>>,
    DefaultAllocator: Allocator<f64, M> + Allocator<f64, S> + Allocator<f64, M, M> + Allocator<f64, M, S> + Allocator<f64, DimNameSum<S, M>, DimNameSum<S, U1>> + Allocator<f64, DimNameSum<S, U1>, DimNameSum<S, M>> + Allocator<f64, DimNameSum<S, M>> + Allocator<f64, DimNameSum<S, U1>> + Allocator<f64, DimMinimum<DimNameSum<S, M>, DimNameSum<S, U1>>> + Allocator<f64, DimMinimum<DimNameSum<S, M>, DimNameSum<S, U1>>, DimNameSum<S, U1>> + Allocator<f64, S, M> + Allocator<f64, S, S> + Allocator<f64, A, A> + Allocator<f64, S, A> + Allocator<f64, A, S> + Allocator<f64, S, U1>, 
[src]

type Estimate = IfEstimate<S>

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, dt: Epoch) -> 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,
    dt: Epoch,
    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.

Loading content...