Struct nyx_space::od::kalman::KF [−][src]
pub struct KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>, { pub prev_estimate: KfEstimate<T>, pub measurement_noise: MatrixMN<f64, M, M>, pub process_noise: Vec<SNC<A>>, pub ekf: bool, // some fields omitted }
Expand description
Defines both a Classical and an Extended Kalman filter (CKF and EKF) S: State size (not propagated vector size) A: Acceleration size (for SNC) M: Measurement size (used for the sensitivity matrix) T: Type of state P: Propagated vector size
Fields
prev_estimate: KfEstimate<T>
The previous estimate used in the KF computations.
measurement_noise: MatrixMN<f64, M, M>
Sets the Measurement noise (usually noted R)
process_noise: Vec<SNC<A>>
A sets of process noise (usually noted Q), must be ordered chronologically
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<T, A, M> KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]
impl<T, A, M> KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]Initializes this KF with an initial estimate, measurement noise, and one process noise
Initializes this KF with an initial estimate, measurement noise, and several process noise WARNING: SNCs MUST be ordered chronologically! They will be selected automatically by walking the list of SNCs backward until one can be applied!
impl<T, M> KF<T, U3, M> where
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, U3, U3> + Allocator<f64, <T as State>::Size, U3> + Allocator<f64, U3, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]
impl<T, M> KF<T, U3, M> where
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, U3, U3> + Allocator<f64, <T as State>::Size, U3> + Allocator<f64, U3, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]pub fn no_snc(
initial_estimate: KfEstimate<T>,
measurement_noise: MatrixMN<f64, M, M>
) -> Self
[src]
pub fn no_snc(
initial_estimate: KfEstimate<T>,
measurement_noise: MatrixMN<f64, M, M>
) -> Self
[src]Initializes this KF without SNC
Trait Implementations
impl<T: Clone, A: Clone, M: Clone> Clone for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]
impl<T: Clone, A: Clone, M: Clone> Clone for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]impl<T: Debug, A: Debug, M: Debug> Debug for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]
impl<T: Debug, A: Debug, M: Debug> Debug for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]impl<T, A, M> Filter<T, A, M> for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]
impl<T, A, M> Filter<T, A, M> for KF<T, A, M> where
A: DimName,
M: DimName,
T: State,
DefaultAllocator: Allocator<f64, M> + Allocator<f64, <T as State>::Size> + Allocator<f64, A> + Allocator<f64, M, M> + Allocator<f64, M, <T as State>::Size> + Allocator<f64, <T as State>::Size, M> + Allocator<f64, <T as State>::Size, <T as State>::Size> + Allocator<f64, A, A> + Allocator<f64, <T as State>::Size, A> + Allocator<f64, A, <T as State>::Size> + Allocator<usize, <T as State>::Size> + Allocator<usize, <T as State>::Size, <T as State>::Size>,
[src]Returns the previous estimate
Update the State Transition Matrix (STM). This function must be called in between each
call to time_update
or measurement_update
.
Update the sensitivity matrix (or “H tilde”). This function must be called prior to each
call to measurement_update
.
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.
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.
Overwrites all of the process noises to the one provided
type Estimate = KfEstimate<T>
Set the previous estimate
Returns whether the filter is an extended filter (e.g. EKF)
Sets the filter to be extended or not depending on the value of status
Auto Trait Implementations
impl<T, A, M> !RefUnwindSafe for KF<T, A, M>
impl<T, A, M> !UnwindSafe for KF<T, A, M>
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
pub fn vzip(self) -> V