EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Reset.h File Reference

The covariance reset (decisions.md [covariance-reset]): hasIdentityReset<>, resetJacobian(), and resetCovariance(), which carry a covariance from the tangent space at a value to the one at that value moved by a step, block by block, and compile to nothing on a space whose every block moves its differences unchanged. More...

#include <cstddef>
#include <tuple>
#include <type_traits>
#include <utility>
#include <Eigen/LU>
#include <EmrysFilter/Core/Macros.h>
#include <EmrysFilter/Core/Math.h>
#include <EmrysFilter/Core/Multiply.h>
#include <EmrysFilter/Core/Solve.h>
#include <EmrysFilter/Spaces/Composite.h>
#include <EmrysFilter/Spaces/Space.h>

Go to the source code of this file.

Functions

template<Space S, typename XDerived, typename DDerived>
auto Emrys::resetJacobian (S const &space, Eigen::MatrixBase< XDerived > const &x, Eigen::MatrixBase< DDerived > const &d)
template<Space S, typename XDerived, typename DDerived, typename CovDerived>
void Emrys::resetCovariance (S const &space, Eigen::MatrixBase< XDerived > const &x, Eigen::MatrixBase< DDerived > const &d, Eigen::MatrixBase< CovDerived > const &cov)
 Carries the covariance cov from the tangent space at x to the one at \( x \boxplus d \), in place: \( P \leftarrow G P G^T \), with \( G \) the reset Jacobian of resetJacobian() (decisions.md [covariance-reset]).

Variables

template<typename S>
constexpr bool Emrys::hasIdentityReset = internal::identityResetOf<S>()
 Whether the reset Jacobian of S is the identity, so that a covariance needs no change when its mean moves (decisions.md [covariance-reset]).

Detailed Description

The covariance reset (decisions.md [covariance-reset]): hasIdentityReset<>, resetJacobian(), and resetCovariance(), which carry a covariance from the tangent space at a value to the one at that value moved by a step, block by block, and compile to nothing on a space whose every block moves its differences unchanged.

The Kalman update and the Gaussian conditional call it (Condition.h, Indexing.h), and so does the smoother (GaussianHistory.h); the information forms of the Gaussian move their reference through the inverse Jacobians (internal::resetInfoAt(), [gaussian-forms]). Read UnitQuaternion.h next, for a space that supplies its reset in closed form.