Most embedded navigation systems that fuse an IMU with aiding sensors (GNSS, DVL) use an error-state Kalman filter rather than estimating the full nominal state directly.
Why Error State
Instead of estimating position, velocity, and attitude directly, the filter estimates small perturbations — the errors — around a nominal state that is propagated separately, typically by direct integration of IMU measurements.
The nominal state can grow arbitrarily large (a position, unbounded over time) while the error state stays small, which keeps the linearization the Kalman filter relies on valid.
State Definition
A typical error state includes:
δx = [ δp, δv, δθ, δb_a, δb_g ]
δp— position errorδv— velocity errorδθ— small-angle attitude errorδb_a,δb_g— accelerometer and gyroscope bias errors
Update Cycle
- Propagate the nominal state using raw IMU measurements.
- Propagate the error-state covariance using the linearized error dynamics.
- On receipt of an aiding measurement (GNSS, DVL), compute the innovation and correct the error state.
- Inject the corrected error state back into the nominal state, then reset the error state to zero.
Inline Notation
The attitude error is typically parameterized as a small rotation vector such that for a small error quaternion , avoiding the singularities associated with Euler angles.
Takeaway
The error-state formulation is not strictly necessary for short-duration estimation, but it becomes valuable once bias estimation and long-duration operation are involved — which is most real navigation systems.