template<size_t N>
class gtsam::abc::AbcEquivariantFilter< N >
Equivariant Filter for Attitude-Bias-Calibration (ABC) estimation.
This class implements an equivariant filter for estimating:
- Attitude (rotation): The orientation of the body frame relative to a reference frame
- Bias: Gyroscope bias correction vector (3D)
- Calibration: N sensor calibration rotation matrices
The filter uses the ABC Lie group structure and equivariant dynamics to provide consistent state estimation. It inherits from EquivariantFilter and provides a simplified interface for ABC-specific operations.
- Template Parameters
-
| N | Number of calibrated sensors (typically 1 or more) |
|
| | AbcEquivariantFilter () |
| | Default constructor with identity initial covariance.
|
| | AbcEquivariantFilter (const Matrix &Sigma0) |
| | Construct filter with custom initial covariance.
|
| void | predict (const Vector3 &omega, const Matrix6 &inputCovariance, double dt) |
| | Prediction step using gyroscope measurements.
|
| void | update (const Unit3 &y, const Unit3 &d, const Matrix3 &R, int cal_idx) |
| | Measurement update using a direction observation.
|
| Rot3 | attitude () const |
| | Get current attitude estimate.
|
| Vector3 | bias () const |
| | Get current gyroscope bias estimate.
|
| Rot3 | calibration (size_t i) const |
| | Get calibration estimate for a specific sensor.
|
|
const State< N > & | state () const |
| | State on the manifold M is given by the base class.
|
| | EquivariantFilter (const State< N > &xi_ref, const CovarianceM &Sigma, const G &X0=traits< G >::Identity()) |
| | Initialize the Equivariant Filter.
|
|
const Base::Covariance & | errorCovariance () const |
| | errorCovariance that returns P_, on the equivariant filter error
|
| MatrixM | actionDifferential () const |
| | Differential of the group action at the reference state.
|
| CovarianceM | covariance () const |
| | Covariance in the tangent space at the current state.
|
| const G & | groupEstimate () const |
| MatrixM | computeErrorDynamicsMatrix (const InputOrbit &psi_u) const |
| | Compute the error dynamics matrix A (Automatic).
|
| MatrixM | transitionMatrix (const MatrixM &A, double dt) const |
| | Discretize continuous-time error dynamics δ̇ = A δ over dt.
|
| void | predict (const Lift &lift_u, const InputOrbit &psi_u, const MatrixM &Qc, double dt) |
| | Propagate the filter state (Automatic).
|
| void | predictWithJacobian (const Lift &lift_u, const MatrixM &A, const MatrixM &Qc, double dt) |
| | Propagate the filter state (Explicit).
|
| void | predictWithTransition (const Lift &lift_u, const MatrixM &Phi, const CovarianceM &Qd, double dt) |
| | Propagate with an already-discretized transition and process noise.
|
| void | update (const Measurement &prediction, const Eigen::Matrix< double, traits< Measurement >::dimension, DimM > &H, const Measurement &z, const Eigen::Matrix< double, traits< Measurement >::dimension, traits< Measurement >::dimension > &R) |
| | Measurement update: Corrects the state and covariance using a pre-calculated predicted measurement and its Jacobian.
|
|
void | updateWithVector (const gtsam::Vector &prediction, const Matrix &H, const gtsam::Vector &z, const Matrix &R) |
| | Same API as ManifoldEKF for measurement update with vector inputs.
|
| | ManifoldEKF (const State< N > &X0, const Covariance &P0) |
| | Constructor: initialize with state and covariance.
|
| const State< N > & | state () const |
| const Covariance & | covariance () const |
| size_t | dimension () const |
| void | predict (const State< N > &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 | 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 constexpr int | DimM |
|
static constexpr int | DimG |
|
static constexpr int | Dim |
| | Compile-time dimension of the manifold M.
|
|
using | Base |
|
using | TangentM |
|
using | MatrixM |
|
using | CovarianceM |
|
using | G |
|
using | TangentG |
|
using | MatrixMG |
|
using | MatrixGM |
|
using | TangentVector |
| | Tangent vector type for the manifold M.
|
|
using | Covariance |
| | Covariance matrix type (P, Q).
|
|
using | Jacobian |
| | State transition Jacobian type (F).
|
| void | resetReferenceAndGroup (const State< N > &xi_ref, const CovarianceM &P, const G &g) |
| | Synchronization hooks for derived filters with dynamic runtime structure.
|
|
const State< N > & | referenceState () const |
| | Access current reference state used as the EqF chart origin.
|
| TangentG | liftAtOrigin (const InputOrbit &psi_u, OptionalJacobian< DimG, DimM > D_lift={}) const |
| | Evaluate the lift at the reference with input u_origin = psi_u(X^-1).
|
| void | propagate (const TangentG &increment, const MatrixM &Phi, const CovarianceM &Qd) |
| | Advance using a lift evaluated at the current estimate and propagate covariance with an already-discretized transition and process noise.
|
|
void | applyCorrection (const TangentG &delta_x) |
| | Apply an innovation correction, which lives in error coordinates at the reference state, on the opposite side from the prediction increment.
|
|
void | validateInputs (const gtsam::Vector &prediction, const Matrix &H, const gtsam::Vector &z, const Matrix &R) |
| | Validate inputs to update.
|
|
static bool | isMatrixOfSize (const MatrixType &matrix, size_t rows, size_t cols) |
| | Check whether a matrix has the expected runtime dimensions.
|
|
State< N > | X_ |
| | Manifold state estimate.
|
|
Covariance | P_ |
| | Covariance (Eigen::Matrix<double, Dim, Dim>).
|
|
Jacobian | I_ |
| | Identity matrix sized to the state dimension.
|
|
size_t | n_ |
| | Runtime tangent space dimension of M.
|