EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::methods::Unscented< Alpha, Beta, Kappa > Struct Template Reference

Unscented method: \( 2L + 1 \) sigma points over the joint input space of dimension \( L \), spread by \( \lambda = \alpha^2 (L + \kappa) - L \). More...

#include <EmrysFilter/Models/Methods.h>

Static Public Member Functions

template<typename Scalar>
static constexpr UnscentedParams< Scalar > params (Eigen::Index)

Static Public Attributes

static constexpr double alpha = Alpha
 Alpha
static constexpr double beta = Beta
 Beta
static constexpr double kappa = Kappa
 Kappa

Detailed Description

template<double Alpha = 1.0, double Beta = 2.0, double Kappa = 0.0>
struct Emrys::methods::Unscented< Alpha, Beta, Kappa >

Unscented method: \( 2L + 1 \) sigma points over the joint input space of dimension \( L \), spread by \( \lambda = \alpha^2 (L + \kappa) - L \).

The defaults \( \alpha = 1, \beta = 2, \kappa = 0 \) give a zero center mean weight and positive weights otherwise, so the covariance is positive semidefinite by construction; \( \beta = 2 \) is optimal for Gaussian inputs. The other points sit at \( \sqrt{L} \) standard deviations, 2 over four coordinates and 3.9 over fifteen, so over a large input f is evaluated far into the tails. Sigma points are normalized in their inputs' spaces before f sees them, and the output mean is a tangent-space mean in the output space.

The scaled unscented transform of Julier and Uhlmann (2004), as given in Särkkä (2013), §5.5, equations (5.74) to (5.77), with their \( \alpha \), \( \beta \), and \( \kappa \); the weights are in internal::sigmaWeights().

The parameters are compile-time constants, as a Periodic coordinate's interval is (unscented<0.5>()), so the method is an empty tag and a float filter converts them to float constants where it computes the weights, holding no double. They are the same over every number of coordinates; FourthMomentUnscented, or an UnscentedRule of the user's own, chooses them by it.

Template Parameters
Alphathe spread of the points about the mean, in \( (0, 1] \)
Betathe center point's extra covariance weight; 2 for Gaussian inputs
Kappathe secondary scaling, usually 0

Member Function Documentation

◆ params()

template<double Alpha = 1.0, double Beta = 2.0, double Kappa = 0.0>
template<typename Scalar>
constexpr UnscentedParams< Scalar > Emrys::methods::Unscented< Alpha, Beta, Kappa >::params ( Eigen::Index )
inlinestaticnodiscardconstexpr
Returns
Alpha, Beta, and Kappa in Scalar, over any number of coordinates

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