|
using | Base = ManifoldEKF< G > |
| Base class type. More...
|
|
using | Covariance = typename Base::Covariance |
|
template<typename Dynamics > |
using | enable_if_dynamics = std::enable_if_t< !std::is_convertible_v< Dynamics, TangentVector > &&std::is_invocable_r_v< TangentVector, Dynamics, const G &, OptionalJacobian< Dim, Dim > & > > |
|
template<typename Control , typename Dynamics > |
using | enable_if_full_dynamics = std::enable_if_t< std::is_invocable_r_v< TangentVector, Dynamics, const G &, const Control &, OptionalJacobian< Dim, Dim > & > > |
|
using | Jacobian = typename Base::Jacobian |
| Jacobian for group operations (Adjoint, Expmap derivatives, F). More...
|
|
using | TangentVector = typename Base::TangentVector |
|
using | Covariance = Eigen::Matrix< double, Dim, Dim > |
| Covariance matrix type (P, Q). More...
|
|
using | Jacobian = Eigen::Matrix< double, Dim, Dim > |
| State transition Jacobian type (F). More...
|
|
using | TangentVector = typename traits< G >::TangentVector |
| Tangent vector type for the manifold M. More...
|
|
|
| LieGroupEKF (const G &X0, const Covariance &P0) |
|
template<typename Control , typename Dynamics , typename = enable_if_full_dynamics<Control, Dynamics>> |
void | predict (Dynamics &&f, const Control &u, double dt, const Covariance &Q) |
|
template<typename Dynamics , typename = enable_if_dynamics<Dynamics>> |
void | predict (Dynamics &&f, double dt, const Covariance &Q) |
|
template<typename Control , typename Dynamics , typename = enable_if_full_dynamics<Control, Dynamics>> |
G | predictMean (Dynamics &&f, const Control &u, double dt, OptionalJacobian< Dim, Dim > A={}) const |
|
template<typename Dynamics , typename = enable_if_dynamics<Dynamics>> |
G | predictMean (Dynamics &&f, double dt, OptionalJacobian< Dim, Dim > A={}) const |
|
const Covariance & | covariance () const |
|
int | dimension () const |
|
| ManifoldEKF (const G &X0, const Covariance &P0) |
|
void | predict (const G &X_next, const Jacobian &F, const Covariance &Q) |
|
const G & | state () const |
|
void | update (const Measurement &prediction, const Eigen::Matrix< double, traits< Measurement >::dimension, Dim > &H, const Measurement &z, const Eigen::Matrix< double, traits< Measurement >::dimension, traits< Measurement >::dimension > &R) |
|
void | update (MeasurementFunction &&h, const Measurement &z, const Eigen::Matrix< double, traits< Measurement >::dimension, traits< Measurement >::dimension > &R) |
|
virtual | ~ManifoldEKF ()=default |
|
template<typename G>
class gtsam::LieGroupEKF< G >
Extended Kalman Filter on a Lie group G, derived from ManifoldEKF.
- Template Parameters
-
G | Lie group type (must satisfy LieGroup concept). |
This filter specializes ManifoldEKF for Lie groups, offering predict methods with state-dependent dynamics functions. Use the InvariantEKF class for prediction via group composition. For details on how static and dynamic dimensions are handled, please refer to the ManifoldEKF
class documentation.
Definition at line 49 of file LieGroupEKF.h.
template<typename G >
template<typename Control , typename Dynamics , typename = enable_if_full_dynamics<Control, Dynamics>>
Predict step with state and control input dynamics: Wraps the dynamics function and calls the state-only predict. xi = f(X_k, u, Df)
- Template Parameters
-
Control | Control input type. |
Dynamics | Functor signature: TangentVector f(const G&, const Control&, OptionalJacobian<Dim,Dim>&) |
- Parameters
-
f | Dynamics functor. |
u | Control input. |
dt | Time step. |
Q | Process noise covariance. |
Definition at line 179 of file LieGroupEKF.h.
template<typename G >
template<typename Dynamics , typename = enable_if_dynamics<Dynamics>>
Predict step with state-dependent dynamics: Uses predictMean to compute X_{k+1} and A, then updates covariance. X_{k+1}, A = predictMean(f, dt) P_{k+1} = A P_k A^T + Q
- Template Parameters
-
Dynamics | Functor signature: TangentVector f(const G&, OptionalJacobian<Dim,Dim>&) |
- Parameters
-
f | Dynamics functor. |
dt | Time step. |
Q | Process noise covariance. |
Definition at line 129 of file LieGroupEKF.h.
template<typename G >
template<typename Control , typename Dynamics , typename = enable_if_full_dynamics<Control, Dynamics>>
Predict mean and Jacobian A with state and control input dynamics: Wraps the dynamics function and calls the state-only predictMean. xi = f(X_k, u, Df)
- Template Parameters
-
Control | Control input type. |
Dynamics | Functor signature: TangentVector f(const G&, const Control&, OptionalJacobian<Dim,Dim>&) |
- Parameters
-
f | Dynamics functor. |
u | Control input. |
dt | Time step. |
A | Optional pointer to store the computed state transition Jacobian A. |
- Returns
- Predicted state X_{k+1}.
Definition at line 161 of file LieGroupEKF.h.
template<typename G >
template<typename Dynamics , typename = enable_if_dynamics<Dynamics>>
Predict mean and Jacobian A with state-dependent dynamics: xi = f(X_k, Df) (Compute tangent vector dynamics and Jacobian Df) U = Expmap(xi * dt, Dexp) (Compute motion increment U and Expmap Jacobian Dexp) X_{k+1} = X_k * U (Predict next state) A = Ad_{U^{-1}} + Dexp * Df * dt (Compute full state transition Jacobian)
- Template Parameters
-
Dynamics | Functor signature: TangentVector f(const G&, OptionalJacobian<Dim,Dim>&) |
- Parameters
-
f | Dynamics functor returning tangent vector xi and its Jacobian Df w.r.t. local(X). |
dt | Time step. |
A | OptionalJacobian to store the computed state transition Jacobian A. |
- Returns
- Predicted state X_{k+1}.
Definition at line 92 of file LieGroupEKF.h.