|
gtsam
|
Core components for Attitude-Bias-Calibration systems. More...
Go to the source code of this file.
Classes | |
| struct | gtsam::abc::State< N > |
| Minimal state manifold for the biased attitude system: ξ = (R, b, S). More... | |
| struct | gtsam::abc::Symmetry< N > |
| Right action φ_ξ(X) = (R A, Aᵀ(b − a), Aᵀ C B) on the state manifold. More... | |
| struct | gtsam::abc::Symmetry< N >::Orbit |
| struct | gtsam::abc::Lift< N > |
| Implements the lift Λ(ξ,u) from the paper: Λ encodes the lifted dynamics on G induced by the biased gyroscope input u = (ω,0). More... | |
| struct | gtsam::abc::InputAction< N > |
| Encodes the partially applied input action ψ_u(X) = Aᵀ(ω − a), used to compute A(X,u) and Φ(X,u). More... | |
| struct | gtsam::abc::OutputAction< N > |
| Functor encoding the right action ρ_y(X) on direction measurements y, parameterized by the sensor index. More... | |
| struct | gtsam::abc::Innovation< N > |
| struct | gtsam::traits< abc::State< N > > |
| struct | gtsam::traits< const abc::State< N > > |
Namespaces | |
| namespace | gtsam |
| Global functions in a separate testing namespace. | |
Typedefs | |
| template<size_t N> | |
| using | gtsam::abc::Calibrations = PowerLieGroup<Rot3, static_cast<int>(N)> |
| Bundle of calibration rotations modeled as a Lie group. | |
| template<size_t n> | |
| using | gtsam::abc::Group = ProductLieGroup<Pose3, Calibrations<n>> |
| Symmetry group G = Pose3 × Calibrations<n>. | |
Functions | |
| Vector6 | gtsam::abc::toInputVector (const Vector3 &w) |
| Convert a measured angular velocity ω into the mathematical input (ω, 0). | |
| template<size_t N> | |
| State< N >::TangentVector | gtsam::abc::dynamics (const Vector3 &omega, const State< N > &xi) |
| Continuous-time dynamics on the manifold M = SO(3) x R^3 x SO(3)^N, as in Eq. | |
| template<size_t N> | |
| Matrix | gtsam::abc::inputProcessNoise (const Matrix &Sigma6) |
| template<size_t N> | |
| Matrix | gtsam::abc::stateMatrixA (const typename InputAction< N >::Orbit &psi_u, const Group< N > &X_hat) |
| Compute the state matrix A(X_hat). | |
| template<size_t N> | |
| Matrix | gtsam::abc::inputMatrixB (const Group< N > &g) |
| Compute the input matrix B(X_hat). | |
| template<size_t N> | |
| Matrix | gtsam::abc::measurementMatrixC (const Unit3 &d, int index) |
| Compute the measurement matrix C(φ_y). | |
| template<size_t N> | |
| Matrix3 | gtsam::abc::outputMatrixD (const Group< N > &X_hat, int index) |
Variables | |
| template<size_t N> | |
| auto | gtsam::abc::asTriple |
| Unpack g into A, a, and B. | |
Core components for Attitude-Bias-Calibration systems.
This file contains fundamental components and utilities for the ABC system based on the paper "Overcoming Bias: Equivariant Filter Design for Biased Attitude Estimation with Online Calibration" by Fornasier et al.
We follow the paper's notation: the physical state is ξ = ((R,b), C) ∈ M, the symmetry group element is X = ((A,a), B) ∈ G, and the right actions φ_ξ(X) and ρ_y(X) drive the equivariant filter update. See Eqs. (4), (7), (14b), and (23)–(24) in Fornasier et al. (2022) for the continuous-time dynamics, lift Λ(ξ,u), output action, and EqF update.
This header is intentionally small so it can serve as a reference implementation for users who want to plug their own manifold into EquivariantFilter. Everything below is exercised by gtsam_unstable/geometry/tests/testABC.cpp and the examples/AbcEquivariantFilterExample.cpp demo: 1) a State manifold with retract/localCoordinates, 2) the symmetry Group and its action on the state, 3) lift/input/output actions needed by EquivariantFilter, 4) a handful of helpers for linearization (A/B/C matrices and process noise embedding). If you copy this file as a template, avoid adding extra behaviour the tests do not cover, so the example remains trustworthy.
| using gtsam::abc::Group = ProductLieGroup<Pose3, Calibrations<n>> |
Symmetry group G = Pose3 × Calibrations<n>.
Pose3 handles the SE(3)-like part acting on (R, b) and Calibrations<n> handles the N extrinsic rotations.
|
inline |
Continuous-time dynamics on the manifold M = SO(3) x R^3 x SO(3)^N, as in Eq.
(2) of the paper. Given state ξ = (R, b, S) and body angular velocity ω, the state derivative is: Ṙ = R (ω - b)^ ḃ = 0 Ṡ_i = 0 We represent the tangent as a vector with components (δθ, δb, δσ_i).
| auto gtsam::abc::asTriple |
Unpack g into A, a, and B.