EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::PredictedJoint< Space_, Scalar_ > Struct Template Reference

One prediction step as a joint: the Gaussian the step started from, the Gaussian it predicted, and the cross-covariance between them. More...

#include <EmrysFilter/Models/ProcessModel.h>

Public Types

using Scalar = Scalar_
 the scalar type
using SpaceType = Space_
 the state space
using GaussianType = GaussianParams<Space_, Scalar_>
 the type of either Gaussian
using MatrixType = typename GaussianType::MatrixType
 the cross-covariance's type, over differences

Public Attributes

GaussianType filtered
 \( p(x_k \mid z_{1:k}) \), the state the step started from
GaussianType predicted
 \( p(x_{k+1} \mid z_{1:k}) \), process noise included
MatrixType cross
 \( C_k \): a row per difference coordinate of \( x_k \), a column per one of \( x_{k+1} \)

Detailed Description

template<Space Space_, RealScalar Scalar_ = double>
struct Emrys::PredictedJoint< Space_, Scalar_ >

One prediction step as a joint: the Gaussian the step started from, the Gaussian it predicted, and the cross-covariance between them.

predictJoint() returns it, and a filter's predictJoint() moves its state as predict() does and returns it too. With \( x_k \) the state before the step and \( x_{k+1} \) after it, given the measurements \( z_{1:k} \) so far, it holds \( p(x_k \mid z_{1:k}) \), \( p(x_{k+1} \mid z_{1:k}) \), and \( C_k = \mathrm{Cov}(x_k, x_{k+1} \mid z_{1:k}) \) in the two tangent spaces, which is everything a Rauch-Tung-Striebel backward step needs from the forward pass (see smoothStep() and GaussianHistory, decisions.md [smoothing]). For an affine step \( x_{k+1} = F x_k + w \), \( C_k = P_{k \mid k} F^T \).

Template Parameters
Space_the state space
Scalar_scalar type, double by default

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