|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
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 |
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.
|
inlinenodiscard |