Specialized EKF for IMU-driven on Gal3.
|
| | Gal3ImuEKF (const Gal3 &X0, const Covariance &P0, const std::shared_ptr< PreintegrationParams > ¶ms, Mode mode=TRACK_TIME_NO_COVARIANCE) |
| | Construct with initial state/covariance and preintegration params (for gravity and IMU covariances).
|
| void | predict (const Vector3 &omega_b, const Vector3 &f_b, double dt) |
| | Predict the next state using gyro and accelerometer measurements.
|
|
const std::shared_ptr< PreintegrationParams > & | params () const |
| | Accessors.
|
|
const Vector3 & | gravity () const |
|
const Covariance & | processNoise () const |
| | InvariantEKF (const Gal3 &X0, const Covariance &P0) |
| | Constructor: forwards to LeftLinearEKF constructor.
|
| void | predict (const Gal3 &U, const Covariance &Q) |
| | Predict step via group composition (Left-Invariant): X_{k+1} = X_k * U P_{k+1} = Ad_{U^{-1}} P_k Ad_{U^{-1}}^T + Q where Ad_{U^{-1}} is the Adjoint map of U^{-1}.
|
| void | predict (const TangentVector &u, double dt, const Covariance &Q) |
| | Predict step via tangent control vector: U = Expmap(u * dt) Then calls predict(U, Q).
|
| void | predict (const Gal3 &W, const Gal3 &U, const Covariance &Q) |
| | Predict step via left and right group composition (Left-Invariant): X_{k+1} = W * X_k * U P_{k+1} = Ad_{U^{-1}} P_k Ad_{U^{-1}}^T + Q where Ad_{U^{-1}} is the Adjoint map of U^{-1}.
|
|
| LeftLinearEKF (const G &X0, const Covariance &P0) |
|
template<class Phi, typename = std::enable_if_t<is_automorphism<Phi>::value>> |
| void | predict (const G &W, const Phi &phi, const G &U, const Covariance &Q) |
| | General left–linear prediction, updates filter state as follows: X⁺ = W · φ(X) · U P⁺ = A P Aᵀ + Q with A = Ad_{U^{-1}} Φ, Φ := dφ|_e.
|
|
template<class Phi, typename = std::enable_if_t<is_automorphism<Phi>::value>> |
| void | predict (const Phi &phi, const G &U, const Covariance &Q) |
| | Special case of predict with W=I, updates filter state as follows: Update: X⁺ = φ(X) · U Covariance: P⁺ = A P Aᵀ + Q with A = Ad_{U^{-1}} Φ, Φ := dφ|_e.
|
| | 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.
|
|
|
static Gal3 | Gravity (const Vector3 &g_n, double dt) |
| | Calculate gravity-only left composition, world-frame increments p = +1/2 g dt^2, v = g dt, t = 0.
|
|
static Gal3 | TimeZeroingGravity (const Vector3 &g_n, double dt) |
| | Calculate W: gravity with correction to neutralize time change, Using this W(t_k) together with Imu() yields the exact dynamics update, but t stays 0, and hence we stay within NavState sub-group at all times.
|
| static Gal3 | CompensatedGravity (const Vector3 &g_n, double dt, double t_k) |
| | Calculate W: position-compensated gravity (left composition) that enables tracking absolute time in-state.
|
|
static Gal3 | Imu (const Vector3 &omega_b, const Vector3 &f_b, double dt) |
| | Calculate U from raw IMU (no gravity): body-frame increments.
|
| static Gal3 | Dynamics (const Vector3 &g_n, const Gal3 &X, const Vector3 &omega_b, const Vector3 &f_b, double dt, Mode mode=TRACK_TIME_WITH_COVARIANCE, OptionalJacobian< 10, 10 > A={}) |
| | Compute the dynamics of the system.
|
| static Gal3 | Dynamics (const Gal3 &X, const Gal3 &U, OptionalJacobian< Dim, Dim > A={}) |
| | Dynamics with W=I.
|
| static Gal3 | Dynamics (const Gal3 &W, const Gal3 &X, const Gal3 &U, OptionalJacobian< Dim, Dim > A={}) |
| | General dynamics.
|
| template<class Phi, typename = std::enable_if_t<is_automorphism<Phi>::value>> |
| static G | Dynamics (const G &W, const Phi &phi, const G &X, const G &U, OptionalJacobian< Dim, Dim > A={}) |
| | General left–linear dynamics.
|
| template<class Phi, typename = std::enable_if_t<is_automorphism<Phi>::value>> |
| static G | Dynamics (const Phi &phi, const G &X, const G &U, OptionalJacobian< Dim, Dim > A={}) |
| | Left–linear dynamics with W=I.
|