Go to the documentation of this file.
30 #include <Eigen/Dense>
31 #include <type_traits>
72 template <
typename Dynamics>
74 !std::is_convertible_v<Dynamics, TangentVector>&&
91 template <
typename Dynamics,
typename = enable_if_dynamics<Dynamics>>
95 if constexpr (std::is_same_v<G, Matrix>) {
100 const Matrix I_n = Matrix::Identity(this->
n_, this->
n_);
101 *
A = I_n + Dexp * Df *
dt;
110 *
A = traits<G>::Inverse(
U).AdjointMap() + Dexp * Df *
dt;
112 return this->
X_.compose(U);
128 template <
typename Dynamics,
typename = enable_if_dynamics<Dynamics>>
132 A.resize(this->
n_, this->
n_);
135 this->
P_ = A * this->
P_ * A.transpose() +
Q;
142 template<
typename Control,
typename Dynamics>
144 std::is_invocable_r_v<TangentVector, Dynamics, const G&, const Control&, OptionalJacobian<Dim, Dim>&>
160 template <
typename Control,
typename Dynamics,
typename = enable_if_full_dynamics<Control, Dynamics>>
178 template <
typename Control,
typename Dynamics,
typename = enable_if_full_dynamics<Control, Dynamics>>
G predictMean(Dynamics &&f, double dt, OptionalJacobian< Dim, Dim > A={}) const
int n_
Runtime tangent space dimension of M.
typename traits< G >::TangentVector TangentVector
Tangent vector type for the manifold M.
Extended Kalman Filter base class on a generic manifold M.
typename Base::Covariance Covariance
Eigen::Matrix< double, Dim, Dim > Jacobian
State transition Jacobian type (F).
void predict(Dynamics &&f, const Control &u, double dt, const Covariance &Q)
G X_
Manifold state estimate.
Eigen::Matrix< double, Dim, Dim > Covariance
Covariance matrix type (P, Q).
Pose2_ Expmap(const Vector3_ &xi)
G predictMean(Dynamics &&f, const Control &u, double dt, OptionalJacobian< Dim, Dim > A={}) const
Extended Kalman Filter on a Lie group G, derived from ManifoldEKF.
typename Base::TangentVector TangentVector
Covariance P_
Covariance (Eigen::Matrix<double, Dim, Dim>).
LieGroupEKF(const G &X0, const Covariance &P0)
void predict(Dynamics &&f, double dt, const Covariance &Q)
typename Base::Jacobian Jacobian
Jacobian for group operations (Adjoint, Expmap derivatives, F).
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
The quaternion class used to represent 3D orientations and rotations.
Extended Kalman Filter on a generic manifold M.
Base class and basic functions for Lie types.
std::enable_if_t< !std::is_convertible_v< Dynamics, TangentVector > &&std::is_invocable_r_v< TangentVector, Dynamics, const G &, OptionalJacobian< Dim, Dim > & > > enable_if_dynamics
static constexpr int Dim
Compile-time dimension of G.
JacobiRotation< float > G
static constexpr int Dim
Compile-time dimension of the manifold M.
std::enable_if_t< std::is_invocable_r_v< TangentVector, Dynamics, const G &, const Control &, OptionalJacobian< Dim, Dim > & > > enable_if_full_dynamics
typename std::enable_if< B, T >::type enable_if_t
from cpp_future import (convenient aliases from C++14/17)
gtsam
Author(s):
autogenerated on Wed May 28 2025 03:01:42