pub struct ODProcess<'a, D: Dynamics, E: ErrorCtrl, Msr: Measurement<State = S>, N: MeasurementDevice<S, Msr>, T: EkfTrigger, A: DimName, S: EstimateFrom<D::StateType>, K: Filter<S, A, Msr::MeasurementSize>>where
D::StateType: Add<OVector<f64, <S as State>::Size>, Output = D::StateType>,
DefaultAllocator: Allocator<f64, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size> + Allocator<f64, <S as State>::VecLength> + Allocator<f64, <D::StateType as State>::VecLength> + Allocator<f64, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, S::Size> + Allocator<f64, S::Size> + Allocator<f64, Msr::MeasurementSize, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::Size, Msr::MeasurementSize> + Allocator<f64, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<usize, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size, <S as State>::Size> + Allocator<f64, A> + Allocator<f64, A, A> + Allocator<f64, <D::StateType as State>::Size, A> + Allocator<f64, A, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size, A> + Allocator<f64, A, <S as State>::Size>,{
pub prop: PropInstance<'a, D, E>,
pub kf: K,
pub devices: Vec<N>,
pub estimates: Vec<K::Estimate>,
pub residuals: Vec<Residual<Msr::MeasurementSize>>,
pub ekf_trigger: T,
/* private fields */
}
Expand description
An orbit determination process. Note that everything passed to this structure is moved.
Fields§
§prop: PropInstance<'a, D, E>
PropInstance used for the estimation
kf: K
Kalman filter itself
devices: Vec<N>
List of measurement devices used
estimates: Vec<K::Estimate>
Vector of estimates available after a pass
residuals: Vec<Residual<Msr::MeasurementSize>>
Vector of residuals available after a pass
ekf_trigger: T
Implementations§
source§impl<'a, D: Dynamics, E: ErrorCtrl, Msr: Measurement<State = S>, N: MeasurementDevice<S, Msr>, T: EkfTrigger, A: DimName, S: EstimateFrom<D::StateType>, K: Filter<S, A, Msr::MeasurementSize>> ODProcess<'a, D, E, Msr, N, T, A, S, K>where
D::StateType: Add<OVector<f64, <S as State>::Size>, Output = D::StateType>,
DefaultAllocator: Allocator<f64, <D::StateType as State>::Size> + Allocator<f64, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, S::Size> + Allocator<f64, S::Size> + Allocator<usize, S::Size, S::Size> + Allocator<f64, Msr::MeasurementSize, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <D::StateType as State>::Size> + Allocator<f64, Msr::MeasurementSize, <S as State>::Size> + Allocator<f64, <D::StateType as State>::Size, Msr::MeasurementSize> + Allocator<f64, <S as State>::Size, Msr::MeasurementSize> + Allocator<f64, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<usize, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::VecLength> + Allocator<f64, A> + Allocator<f64, A, A> + Allocator<f64, <D::StateType as State>::Size, A> + Allocator<f64, A, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size> + Allocator<f64, <S as State>::VecLength> + Allocator<f64, <S as State>::Size, <S as State>::Size> + Allocator<f64, <S as State>::Size, A> + Allocator<f64, A, <S as State>::Size>,
impl<'a, D: Dynamics, E: ErrorCtrl, Msr: Measurement<State = S>, N: MeasurementDevice<S, Msr>, T: EkfTrigger, A: DimName, S: EstimateFrom<D::StateType>, K: Filter<S, A, Msr::MeasurementSize>> ODProcess<'a, D, E, Msr, N, T, A, S, K>where D::StateType: Add<OVector<f64, <S as State>::Size>, Output = D::StateType>, DefaultAllocator: Allocator<f64, <D::StateType as State>::Size> + Allocator<f64, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, S::Size> + Allocator<f64, S::Size> + Allocator<usize, S::Size, S::Size> + Allocator<f64, Msr::MeasurementSize, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <D::StateType as State>::Size> + Allocator<f64, Msr::MeasurementSize, <S as State>::Size> + Allocator<f64, <D::StateType as State>::Size, Msr::MeasurementSize> + Allocator<f64, <S as State>::Size, Msr::MeasurementSize> + Allocator<f64, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<usize, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::VecLength> + Allocator<f64, A> + Allocator<f64, A, A> + Allocator<f64, <D::StateType as State>::Size, A> + Allocator<f64, A, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size> + Allocator<f64, <S as State>::VecLength> + Allocator<f64, <S as State>::Size, <S as State>::Size> + Allocator<f64, <S as State>::Size, A> + Allocator<f64, A, <S as State>::Size>,
pub fn ekf( prop: PropInstance<'a, D, E>, kf: K, devices: Vec<N>, trigger: T ) -> Self
sourcepub fn smooth(
&self,
condition: SmoothingArc
) -> Result<Vec<K::Estimate>, NyxError>
pub fn smooth( &self, condition: SmoothingArc ) -> Result<Vec<K::Estimate>, NyxError>
Allows to smooth the provided estimates. Returns the smoothed estimates or an error.
Estimates must be ordered in chronological order. This function will smooth the estimates from the last in the list to the first one.
sourcepub fn rms_prefit_residual(&self) -> f64
pub fn rms_prefit_residual(&self) -> f64
Returns the root mean square of the prefit residuals
sourcepub fn rms_postfit_residual(&self) -> f64
pub fn rms_postfit_residual(&self) -> f64
Returns the root mean square of the postfit residuals
sourcepub fn iterate(
&mut self,
measurements: &[Msr],
config: IterationConf
) -> Result<(), NyxError>
pub fn iterate( &mut self, measurements: &[Msr], config: IterationConf ) -> Result<(), NyxError>
Allows iterating on the filter solution. Requires specifying a smoothing condition to know where to stop the smoothing.
sourcepub fn process_measurements(
&mut self,
measurements: &[Msr]
) -> Result<(), NyxError>
pub fn process_measurements( &mut self, measurements: &[Msr] ) -> Result<(), NyxError>
Allows processing all measurements with covariance mapping.
WARNING: Measurements MUST be ordered in positive chronological time.
source§impl<'a, D: Dynamics, E: ErrorCtrl, Msr: Measurement<State = S>, N: MeasurementDevice<S, Msr>, A: DimName, S: EstimateFrom<D::StateType>, K: Filter<S, A, Msr::MeasurementSize>> ODProcess<'a, D, E, Msr, N, CkfTrigger, A, S, K>where
D::StateType: Add<OVector<f64, <S as State>::Size>, Output = D::StateType>,
DefaultAllocator: Allocator<f64, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::VecLength> + Allocator<f64, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, S::Size> + Allocator<f64, S::Size> + Allocator<f64, Msr::MeasurementSize, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::Size, Msr::MeasurementSize> + Allocator<f64, <S as State>::Size, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <S as State>::Size> + Allocator<f64, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<usize, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size> + Allocator<f64, <S as State>::VecLength> + Allocator<f64, <S as State>::Size, <S as State>::Size> + Allocator<f64, A> + Allocator<f64, A, A> + Allocator<f64, <D::StateType as State>::Size, A> + Allocator<f64, A, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size, A> + Allocator<f64, A, <S as State>::Size>,
impl<'a, D: Dynamics, E: ErrorCtrl, Msr: Measurement<State = S>, N: MeasurementDevice<S, Msr>, A: DimName, S: EstimateFrom<D::StateType>, K: Filter<S, A, Msr::MeasurementSize>> ODProcess<'a, D, E, Msr, N, CkfTrigger, A, S, K>where D::StateType: Add<OVector<f64, <S as State>::Size>, Output = D::StateType>, DefaultAllocator: Allocator<f64, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::VecLength> + Allocator<f64, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, S::Size> + Allocator<f64, S::Size> + Allocator<f64, Msr::MeasurementSize, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <D::StateType as State>::Size> + Allocator<f64, <D::StateType as State>::Size, Msr::MeasurementSize> + Allocator<f64, <S as State>::Size, Msr::MeasurementSize> + Allocator<f64, Msr::MeasurementSize, <S as State>::Size> + Allocator<f64, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<usize, <D::StateType as State>::Size, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size> + Allocator<f64, <S as State>::VecLength> + Allocator<f64, <S as State>::Size, <S as State>::Size> + Allocator<f64, A> + Allocator<f64, A, A> + Allocator<f64, <D::StateType as State>::Size, A> + Allocator<f64, A, <D::StateType as State>::Size> + Allocator<f64, <S as State>::Size, A> + Allocator<f64, A, <S as State>::Size>,
pub fn ckf(prop: PropInstance<'a, D, E>, kf: K, devices: Vec<N>) -> Self
Auto Trait Implementations§
impl<'a, D, E, Msr, N, T, A, S, K> !RefUnwindSafe for ODProcess<'a, D, E, Msr, N, T, A, S, K>
impl<'a, D, E, Msr, N, T, A, S, K> !Send for ODProcess<'a, D, E, Msr, N, T, A, S, K>
impl<'a, D, E, Msr, N, T, A, S, K> !Sync for ODProcess<'a, D, E, Msr, N, T, A, S, K>
impl<'a, D, E, Msr, N, T, A, S, K> !Unpin for ODProcess<'a, D, E, Msr, N, T, A, S, K>
impl<'a, D, E, Msr, N, T, A, S, K> !UnwindSafe for ODProcess<'a, D, E, Msr, N, T, A, S, K>
Blanket Implementations§
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.