Struct nyx_space::od::ui::ODProcess

source ·
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>,

source

pub fn ekf( prop: PropInstance<'a, D, E>, kf: K, devices: Vec<N>, trigger: T ) -> Self

source

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.

source

pub fn rms_prefit_residual(&self) -> f64

Returns the root mean square of the prefit residuals

source

pub fn rms_postfit_residual(&self) -> f64

Returns the root mean square of the postfit residuals

source

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.

source

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

pub fn map_covar(&mut self, end_epoch: Epoch) -> Result<(), NyxError>

Allows for covariance mapping without processing measurements

source

pub fn to_traj(&self) -> Result<Traj<S>, NyxError>where DefaultAllocator: Allocator<f64, <S as State>::VecLength>, S: InterpState,

Builds the navigation trajectory for the estimated state only (no covariance until https://gitlab.com/nyx-space/nyx/-/issues/199!)

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

source

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§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

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

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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

§

fn vzip(self) -> V