# Struct fast_slam::FastSLAM [−][src]

Fast SLAM state.

A sample state of the location with augmented Kalman states of map features.

## Fields

`loc: SampleState<N, DL>`

Location as a sample state.

`map: HashMap<u32, FeatureCondMap<N, DF>>`

Hashmap of augmented map feature states.

## Implementations

`impl<N: RealField + ToPrimitive, DL: Dim, DF: DimName> FastSLAM<N, DL, DF> where`

DefaultAllocator: Allocator<N, DL, DL> + Allocator<N, DL> + Allocator<N, DF, DF> + Allocator<N, U1, DF> + Allocator<N, DF>,

[src]

DefaultAllocator: Allocator<N, DL, DL> + Allocator<N, DL> + Allocator<N, DF, DF> + Allocator<N, U1, DF> + Allocator<N, DF>,

`pub fn new_equal_likelihood(loc: SampleState<N, DL>) -> Self`

[src]

Creates a FastSLAM with empty feature map.

`pub fn observe_new(`

&mut self,

feature: u32,

obs_model: impl Fn(&VectorN<N, DL>) -> Feature<N, DF>

)

[src]

&mut self,

feature: u32,

obs_model: impl Fn(&VectorN<N, DL>) -> Feature<N, DF>

)

SLAM new feature observation (overwrite).

Assumes there is no prior information about the feature (strictly a uniform un-informative prior) This implies: a) There has no information about location so no resampling is requires b) Feature state estimates comes directly from the location and observation

`pub fn observe<DZ: Dim>(`

&mut self,

feature: u32,

innovation_model: impl Fn(&VectorN<N, DL>, &VectorN<N, DF>) -> (VectorN<N, DZ>, CorrelatedNoise<N, DZ>),

hx: &MatrixMN<N, DZ, DF>

) where

DefaultAllocator: Allocator<N, U1, DF> + Allocator<N, DZ, DZ> + Allocator<N, DZ, DF> + Allocator<N, DF, DZ> + Allocator<N, DZ>,

[src]

&mut self,

feature: u32,

innovation_model: impl Fn(&VectorN<N, DL>, &VectorN<N, DF>) -> (VectorN<N, DZ>, CorrelatedNoise<N, DZ>),

hx: &MatrixMN<N, DZ, DF>

) where

DefaultAllocator: Allocator<N, U1, DF> + Allocator<N, DZ, DZ> + Allocator<N, DZ, DF> + Allocator<N, DF, DZ> + Allocator<N, DZ>,

SLAM Feature observation. Uses Extended Fast_SLAM observation equations Note: Mathematically only weight ratios are important. Numerically however the range should be restricted. The weights are computed here using the simplest form with common factor Ht removed.

`pub fn forget(&mut self, feature: u32) -> Option<FeatureCondMap<N, DF>>`

[src]

Forget all feature information, feature no can be reused for a new feature

`pub fn update_resample(`

&mut self,

resampler: &mut Resampler,

roughener: &mut Roughener<N, DL>

) -> Result<(u32, f32), &'static str>

[src]

&mut self,

resampler: &mut Resampler,

roughener: &mut Roughener<N, DL>

) -> Result<(u32, f32), &'static str>

Resampling Update.

Resample particles using weights. Propagate resampling to All features. Only resamples if weights have been updated.

`pub fn statistics_compressed(&self, kstat: &mut KalmanState<N, Dynamic>) where`

DefaultAllocator: Allocator<N, U1, DL>,

[src]

DefaultAllocator: Allocator<N, U1, DL>,

Compute sample mean and covariance statistics of filter.

kstat elements are filled first with Location statistics and then the Map feature statistics. Feature statistics are are computed in feature number order and only for those for which there is space in kstat.

Note: Covariance values are indeterminate for nparticles ==1 Precond: kstat must have space for Location statistics

`pub fn statistics_sparse(&self, kstat: &mut KalmanState<N, Dynamic>) where`

DefaultAllocator: Allocator<N, U1, DL>,

[src]

DefaultAllocator: Allocator<N, U1, DL>,

Compute sample mean and covariance statistics of filter.

kstat elements are filled first with Location statistics and then the Map feature statistics. Feature statistics are are computed in feature number as index (after location) and only for those for which there is space in kstat.

Note: Covariance values are indeterminate for nparticles ==1 Precond: kstat must have space for Location statistics

## Auto Trait Implementations

`impl<N, DL, DF> !RefUnwindSafe for FastSLAM<N, DL, DF>`

`impl<N, DL, DF> !Send for FastSLAM<N, DL, DF>`

`impl<N, DL, DF> !Sync for FastSLAM<N, DL, DF>`

`impl<N, DL, DF> !Unpin for FastSLAM<N, DL, DF>`

`impl<N, DL, DF> !UnwindSafe for FastSLAM<N, DL, DF>`

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

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

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

`pub fn is_in_subset(&self) -> bool`

`pub fn to_subset_unchecked(&self) -> SS`

`pub fn from_subset(element: &SS) -> SP`

`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.

`pub 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.

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