Interpolation, integration and IMU preintegration
The series ends by adding time. A trajectory is a curve on the group, and three tasks come up constantly. Draw a smooth curve through keyframes, for animation, camera paths and continuous-time estimation. Integrate a measured angular velocity into an orientation, which is the core of every attitude filter. And compress a burst of gyroscope samples into one relative rotation that can be re-used when the bias estimate changes, the trick that makes visual-inertial odometry fast. All three are built from Exp, Log, $\oplus$ and the right Jacobian.
Through several keyframes: geodesics and B-splines
Smooth curves on SO(3)
Between two orientations the geodesic $R_0\operatorname{Exp}(t\operatorname{Log}(R_0^\top R_1))$ is the natural path (Part 6). Through many keyframes, chaining geodesics gives a curve whose angular velocity jumps at every keyframe: fine for a slideshow, bad for a camera path or for modelling a rolling-shutter sensor. The standard fix transfers B-splines to the group through relative rotations. A cumulative cubic B-spline on segment $i$ is
Each factor is an honest rotation, so the curve never leaves $SO(3)$. It is twice continuously differentiable, which gives smooth angular velocity and acceleration, and it depends only on four neighbouring control rotations. That local support keeps continuous-time SLAM tractable. Unlike the geodesic chain, it only approaches the control points: it smooths them rather than passing through them.
Left: where each curve points the body's nose (its $x$ axis) on the unit sphere. Dots are the keyframes. Right: angular speed along each curve; the geodesic chain jumps at every keyframe. Drag to orbit.
Integrating angular velocity
Ṙ = R[ω]×, three ways
A gyroscope samples $\omega_b$ at interval $\Delta t$, and attitude obeys $\dot R = R[\omega_b]_\times$ (Part 4). Three integrators:
Two separate errors are at play. The first is leaving the group. The additive step does it immediately, since $I+[\omega]_\times\Delta t$ is not orthogonal, and its determinant grows by a factor of $1+\lVert\omega\rVert^2\Delta t^2$ every step. Re-orthonormalizing hides the symptom. The exponential step never leaves $SO(3)$ at all. The second is time discretization. Every scheme that holds $\omega$ at its start-of-step value over the whole step is only first-order accurate in time, whatever it does to stay on the group. Sampling $\omega$ at the midpoint makes the exponential step second-order. The test motion is coning, where the body's axis sweeps a cone so $\omega_b$ keeps rotating: the classic stress test for strapdown integrators. On the log-scale plot, the three start-of-step schemes share a degree-level error (and additive Euler's determinant runs away), while the midpoint exponential is two orders of magnitude better. What remains of its error grows slowly and steadily. That is the coning error, the non-commutativity residue that high-rate inertial systems remove with dedicated multi-sample coning corrections.
$\log_{10}$ attitude error (degrees) against time for each integrator. The inset reports how far each result has left $SO(3)$.
Preintegrating a gyroscope
One relative rotation per keyframe pair, corrected for bias
A visual-inertial system receives maybe 200 gyro samples between two camera frames. Integrating them from the current attitude estimate would force re-integration every time that estimate changes, which happens at every optimizer iteration. Preintegration (Lupton & Sukkarieh; Forster et al.) integrates the relative rotation instead, which does not depend on the start attitude at all:
It still depends on the gyro bias $b_g$, which the estimator refines as it goes. Instead of re-integrating, push the bias change through the product with the right Jacobian and the adjoint, exactly as in Parts 8 and 9:
The demo preintegrates a gyro stream with a bias guess, then treats the slider as the correction $\delta b$ the estimator later finds. It compares the first-order update with a full re-integration. For realistic corrections (a few degrees per second or less) the two agree to a small fraction of a degree, at the cost of one $3\times3$ matrix product instead of hundreds of Exp calls.
The body's nose over the preintegration window. Gray: truth. Magenta: preintegrated with the old bias guess. Blue: after the first-order bias correction. Dashed green: fully re-integrated with the corrected bias. Drag to orbit.
The whole toolkit on one page
What each part gave you
The formula sheet collects every formula for $SO(2)$, $SO(3)$, $SE(2)$ and $SE(3)$ on one page. To see these tools inside full estimators, continue with Nonlinear Optimization (localization, SLAM, pose graphs and 3D rotation estimation) and Multi-View Geometry (the five-point algorithm, PnP and bundle adjustment).
Further reading
- Solà, Deray & Atchuthan, "A micro Lie theory for state estimation in robotics" — the compact reference whose notation this series follows; pairs with the
maniflibrary. - Barfoot, State Estimation for Robotics — matrix Lie groups, uncertainty on SE(3) and batch estimation, with left-perturbation conventions.
- Forster, Carlone, Dellaert & Scaramuzza, "On-Manifold Preintegration for Real-Time Visual-Inertial Odometry" — IMU preintegration on SO(3), including the bias Jacobians of section 3.
- Sommer, Usenko, Schubert, Demmel & Cremers, "Efficient Derivative Computation for Cumulative B-Splines on Lie Groups" — the splines of section 1 and their derivatives.
- Barrau & Bonnabel, "The Invariant Extended Kalman Filter as a Stable Observer" — left and right errors, SE₂(3), and why group-affine dynamics linearize exactly.
- Hall, Lie Groups, Lie Algebras, and Representations — the mathematics done properly, for readers who want proofs.