[−][src]Struct nyx_space::od::kalman::KF
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]
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>,
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]
initial_estimate: KfEstimate<S, T>,
process_noise: MatrixMN<f64, A, A>,
measurement_noise: MatrixMN<f64, M, M>,
process_noise_dt: Option<f64>
) -> Self
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]
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>,
pub fn no_snc(
initial_estimate: KfEstimate<S, T>,
measurement_noise: MatrixMN<f64, M, M>
) -> Self
[src]
initial_estimate: KfEstimate<S, T>,
measurement_noise: MatrixMN<f64, M, M>
) -> Self
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]
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>,
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]
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>,
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]
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>,
type Estimate = KfEstimate<S, T>
fn previous_estimate(&self) -> &Self::Estimate
[src]
Returns the previous estimate
fn set_previous_estimate(&mut self, est: &Self::Estimate)
[src]
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]
&mut self,
nominal_state: T
) -> Result<Self::Estimate, FilterError>
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]
&mut self,
nominal_state: T,
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.
May return a FilterError if the STM or sensitivity matrices were not updated.
fn is_extended(&self) -> bool
[src]
fn set_extended(&mut self, status: bool)
[src]
fn set_process_noise(&mut self, prc: MatrixMN<f64, A, A>)
[src]
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn is_in_subset(&self) -> bool
unsafe fn to_subset_unchecked(&self) -> SS
fn from_subset(element: &SS) -> SP
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,