EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::reductions::Collapse Struct Reference

Reduction policy that moment-matches an update's branches into one Gaussian: soft outlier rejection, as in the probabilistic data association of Bar-Shalom and Tse (1975). More...

#include <EmrysFilter/Models/Reduction.h>

Public Member Functions

template<typename Branches>
requires internal::BranchRange<Branches>
std::optional< internal::PosteriorOf< Branches > > operator() (Branches &&branches) const

Detailed Description

Reduction policy that moment-matches an update's branches into one Gaussian: soft outlier rejection, as in the probabilistic data association of Bar-Shalom and Tse (1975).

With normalized weights \( \hat w_k \), the result has the mean \( \mu = \sum_k \hat w_k \mu_k \) and covariance \( \sum_k \hat w_k \left(\Sigma_k + (\mu_k \boxminus \mu)(\mu_k \boxminus \mu)^T\right) \), with a tangent-space mean in a non-linear space, as GaussianMixture::moments() computes.

Every branch is collapsed together, whatever its mode label; collapse grouped by mode comes with filters that track modes. It returns the one component it keeps, which stands for every branch it was given (see ReductionPolicy); Collapse always returns one.

See also
Select, Gate

Member Function Documentation

◆ operator()()

template<typename Branches>
requires internal::BranchRange<Branches>
std::optional< internal::PosteriorOf< Branches > > Emrys::reductions::Collapse::operator() ( Branches && branches) const
inlinenodiscard
Returns
branches moment-matched into one Gaussian; one branch's posterior is moved out of branches given as an rvalue

The documentation for this struct was generated from the following file: