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.
Update API: inherited from ManifoldEKF (update(prediction, H, z, R), update(h, z, R), and updateWithVector).
Noise convention:
- Overloads without dt (e.g., predict(X_next, F, Q) inherited from ManifoldEKF) expect Q to be a discrete covariance already scaled for the step being applied.
- Overloads with dt interpret Q as a continuous-time covariance.
|
| | LieGroupEKF (const G &X0, const Covariance &P0) |
| | Constructor: initialize with state and covariance.
|
| template<size_t K = 1> |
| Jacobian | transitionMatrix (const TangentVector &xi, const Jacobian &Df, double dt, const G &U, const Jacobian &Dexp) const |
| | Compute the discrete-time transition matrix Φ corresponding to a continuous-time linearization (Df) over time dt.
|
| template<size_t K = 1, typename Dynamics, typename = enable_if_dynamics<Dynamics>> |
| G | predictMean (Dynamics &&f, double dt, OptionalJacobian< Dim, Dim > Phi={}) const |
| | Predict mean and Jacobian Phi with state-dependent dynamics: xi = f(X_k, Df) (tangent vector dynamics and Jacobian Df) U = Expmap(xi * dt, Dexp) (motion increment U and Expmap Jacobian Dexp) X_{k+1} = X_k * U (Predict next state via compose) Phi = Ad_{U^{-1}} + Dexp * Df * dt (K=1 first-order Jacobian) expm((Df - ad(xi))dt) (K>1 matrix exponential discretization).
|
| template<size_t K = 1, typename Dynamics, typename = enable_if_dynamics<Dynamics>> |
| void | predict (Dynamics &&f, double dt, const Covariance &Q) |
| | Predict step with state-dependent dynamics: Uses predictMean to compute X_{k+1} and Phi, then updates covariance.
|
| template<size_t K = 1, typename Control, typename Dynamics, typename = enable_if_full_dynamics<Control, Dynamics>> |
| G | predictMean (Dynamics &&f, const Control &u, double dt, OptionalJacobian< Dim, Dim > Phi={}) const |
| | Predict mean and Jacobian A with state and control input dynamics: Wraps the dynamics function and calls the state-only predictMean.
|
| template<size_t K = 1, typename Control, typename Dynamics, typename = enable_if_full_dynamics<Control, Dynamics>> |
| void | predict (Dynamics &&f, const Control &u, double dt, const Covariance &Q) |
| | Predict step with state and control input dynamics: Wraps the dynamics function and calls the state-only predict.
|
| void | predictWithCompose (const G &U, const Jacobian &J_UX, const Covariance &Q) |
| | Predict using a precomputed group increment U and its Jacobian J_UX.
|
|
void | predict (const G &X_next, const Jacobian &F, const Covariance &Q) |
| | Expose base class predict method, predict(const M& X_next, const Jacobian& F, const Covariance& Q).
|
|
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, bool performReset=true) |
| | Update overloads follow ManifoldEKF.
|
|
void | update (MeasurementFunction &&h, const Measurement &z, const Eigen::Matrix< double, traits< Measurement >::dimension, traits< Measurement >::dimension > &R, bool performReset=true) |
| | Update overloads follow ManifoldEKF.
|
| | ManifoldEKF (const G &X0, const Covariance &P0) |
| | Constructor: initialize with state and covariance.
|
| const G & | state () const |
| const Covariance & | covariance () const |
| size_t | dimension () const |
| void | predict (const G &X_next, const Jacobian &F, const Covariance &Q) |
| | Basic predict step: Updates state and covariance given the predicted next state and the state transition Jacobian F.
|
|
auto | KalmanGain (const HMatrix &H, const RMatrix &R) const |
| | Kalman gain K = P H^T S^-1.
|
|
void | JosephUpdate (const GainMatrix &K, const HMatrix &H, const RMatrix &R) |
| | Joseph-form covariance update in the current tangent space using a precomputed gain.
|
| 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, bool performReset=true) |
| | Measurement update: Corrects the state and covariance using a pre-calculated predicted measurement and its Jacobian.
|
| void | update (MeasurementFunction &&h, const Measurement &z, const Eigen::Matrix< double, traits< Measurement >::dimension, traits< Measurement >::dimension > &R, bool performReset=true) |
| | Measurement update: Corrects the state and covariance using a measurement model function.
|
| void | updateWithVector (const gtsam::Vector &prediction, const Matrix &H, const gtsam::Vector &z, const Matrix &R, bool performReset=true) |
| | Convenience bridge for wrappers: vector measurement update calling update<Vector>.
|
| void | reset (const TangentVector &eta) |
| | Reset step: retract the state by a tangent perturbation and, if available, transport the covariance from the old tangent space to the new tangent space.
|