IMU Preintegration on Manifold

Forster 2015 · Paper

One-line summary — Derives a theoretically rigorous preintegration of IMU measurements on the SO(3)SO(3) manifold, enabling optimization-based VIO to correct for bias changes analytically without ever re-integrating raw IMU data.

Problem

Nonlinear optimization gives highly accurate VIO, but “real-time optimization quickly becomes infeasible as the trajectory grows over time; this problem is further emphasized by the fact that inertial measurements come at high rate, hence leading to fast growth of the number of variables in the optimization” (abstract). Naive integration is defined in the world frame, so it depends on the absolute pose at the start of the interval: whenever the optimizer moves that pose, all raw IMU data must be re-integrated — hopeless at hundreds of Hz. Lupton’s preintegration (2012) showed the way out but treated rotation in a vector space; a rigorous formulation had to respect the manifold structure of SO(3)SO(3) and characterize rotation noise correctly.

Method & architecture

The IMU measures body-frame angular rate and specific force, corrupted by slowly varying biases and white noise (Eqs. 27–28):

ω~(t)=ω(t)+bg(t)+ηg(t),a~(t)=RWBT(t)(a(t)g)+ba(t)+ηa(t),\tilde{\boldsymbol{\omega}}(t) = \boldsymbol{\omega}(t) + \mathbf{b}^g(t) + \boldsymbol{\eta}^g(t), \qquad \tilde{\mathbf{a}}(t) = \mathtt{R}_{\mathrm{WB}}^{\mathsf{T}}(t)\big(\mathbf{a}(t) - \mathbf{g}\big) + \mathbf{b}^a(t) + \boldsymbol{\eta}^a(t),

with kinematics R˙WB=RWBω\dot{\mathtt{R}}_{\mathrm{WB}} = \mathtt{R}_{\mathrm{WB}}\,\boldsymbol{\omega}^{\wedge}, v˙=a\dot{\mathbf{v}} = \mathbf{a}, p˙=v\dot{\mathbf{p}} = \mathbf{v}. The pipeline then works as follows:

ΔR~ijk=ij1Exp((ω~kbig)Δt),Δv~ijk=ij1ΔR~ik(a~kbia)Δt,\Delta\tilde{\mathtt{R}}_{ij} \doteq \prod_{k=i}^{j-1} \mathrm{Exp}\big((\tilde{\boldsymbol{\omega}}_k - \mathbf{b}^g_i)\Delta t\big), \qquad \Delta\tilde{\mathbf{v}}_{ij} \doteq \sum_{k=i}^{j-1} \Delta\tilde{\mathtt{R}}_{ik}\,(\tilde{\mathbf{a}}_k - \mathbf{b}^a_i)\Delta t,

and Δp~ij\Delta\tilde{\mathbf{p}}_{ij} from the analogous double sum — quantities that depend only on measurements and bi\mathbf{b}_i, not on the absolute state.

ΔR~ij=RiTRjExp(δϕij),Δv~ij=RiT(vjvigΔtij)+δvij,Δp~ij=RiT(pjpiviΔtij12gΔtij2)+δpij,\Delta\tilde{\mathtt{R}}_{ij} = \mathtt{R}_i^{\mathsf{T}}\mathtt{R}_j\,\mathrm{Exp}(\delta\boldsymbol{\phi}_{ij}), \quad \Delta\tilde{\mathbf{v}}_{ij} = \mathtt{R}_i^{\mathsf{T}}(\mathbf{v}_j - \mathbf{v}_i - \mathbf{g}\Delta t_{ij}) + \delta\mathbf{v}_{ij}, \quad \Delta\tilde{\mathbf{p}}_{ij} = \mathtt{R}_i^{\mathsf{T}}\big(\mathbf{p}_j - \mathbf{p}_i - \mathbf{v}_i\Delta t_{ij} - \tfrac{1}{2}\mathbf{g}\Delta t_{ij}^2\big) + \delta\mathbf{p}_{ij},

where the noise vector [δϕij,δvij,δpij][\delta\boldsymbol{\phi}_{ij}, \delta\mathbf{v}_{ij}, \delta\mathbf{p}_{ij}] is zero-mean Gaussian up to first order, with covariance Σij\mathbf{\Sigma}_{ij} propagated iteratively.

ΔR~ij(big)ΔR~ij(bˉig)Exp ⁣(ΔRˉijbgδbg),Δv~ijΔv~ij(bˉi)+Δvˉijbgδbg+Δvˉijbaδba.\Delta\tilde{\mathtt{R}}_{ij}(\mathbf{b}^g_i) \simeq \Delta\tilde{\mathtt{R}}_{ij}(\bar{\mathbf{b}}^g_i)\,\mathrm{Exp}\!\Big(\tfrac{\partial\Delta\bar{\mathtt{R}}_{ij}}{\partial\mathbf{b}^g}\delta\mathbf{b}^g\Big), \qquad \Delta\tilde{\mathbf{v}}_{ij} \simeq \Delta\tilde{\mathbf{v}}_{ij}(\bar{\mathbf{b}}_i) + \tfrac{\partial\Delta\bar{\mathbf{v}}_{ij}}{\partial\mathbf{b}^g}\delta\mathbf{b}^g + \tfrac{\partial\Delta\bar{\mathbf{v}}_{ij}}{\partial\mathbf{b}^a}\delta\mathbf{b}^a.

Results

Why it matters for SLAM

This is the foundational theory underlying essentially all modern optimization-based VIO: VINS-Mono, ORB-SLAM3, Kimera-VIO, Basalt, and OKVIS2 all use Forster-style on-manifold preintegration for their IMU factors. It upgraded Lupton’s original preintegration idea with correct manifold treatment — avoiding Euler-angle singularities — and made high-rate inertial sensing compatible with keyframe-rate nonlinear optimization. If you implement one piece of VIO theory by hand, make it this one.