Skip to main content
Version: 9.0

IMU PreIntegration Error

Created by: IMU


IMU preintegration error metrics contains all the relevant information to compute a preintegration cost based on a series of navigation states and IMU measurements.

In MetriCal, an IMU's navigation states represent key points in time where the IMU's position and velocity can be temporally related to another component, e.g. a camera. MetriCal uses these moments to define a preintegration window for the IMU, which in turn will produce a local increment, also known as a preintegrated measurement.

See the Analysis section for a more detailed explanation of preintegration.

IMU Preintegration


IMU preintegration error metrics contain the following fields:

nav_component_idUUIDThe UUID of the IMU component this metric was generated from.
initial_gyro_biasAn array of 3 float valuesThe XYZ components denoting the initial gyro bias (units of radians / second)
initial_accelerometer_biasAn array of 3 float valuesThe XYZ components denoting the initial accelerometer bias (units of meters / seconds2)
start_navigation_statesAn array of extrinsics-velocity objectsThe inferred starting navigation states.
end_navigation_statesAn array of extrinsics-velocity objectsThe inferred ending navigation states.
local_incrementsAn array of extrinsics-velocity objectsThe local increments of the preintegration before bias correction.
misalignmentsAn array of extrinsics-velocity objectsThe residual errors of the preintegration. The misalignment between the preintegration and the inferred preintegration based on the navigation states.
preintegration_timesAn array of floatsThe preintegration horizon. The change in time between the start and end navigation states.
gyro_biasesAn array of arrays of 3 float valuesAn array of the inferred XYZ gyro biases of the preintegration.
accelerometer_biasesAn array of arrays of 3 float valuesAn array of the inferred XYZ accelerometer biases of the preintegration.


In order to understand preintegration, it's helpful to understand what would happen without it. In a naive IMU integration, every new IMU measurement is integrated back into the same starting frame to produce a new navigation state. This is called IMU mechanization.

Global increment

However, this approach has some serious problems. For one, any measurements out-of-sequence will make the computation more difficult, since every measurement state relies on the one before it. Moreover, IMU measurements will only help us propagate our navigation state estimate, not correct it. In such mechanized motion models, every subsequent navigation state becomes more uncertain if we don't have any auxiliary information to correct the state.

Instead, MetriCal uses preintegration to solve these problems. Preintegration is the process of reorganizing the state integration from a global frame into local increments between navigation states.

Local increment

This small reformulation allows us to address most of the problems created by global state propagation, and is more computationally efficient to boot. Because of this shift in thinking, local increments don't even need to account for the starting navigation state's velocity nor correct specific-force measurements to accelerations. The local increment is simply the integral of intrinsically corrected IMU measurements between the start and the end navigation states. MetriCal optimizes the calibration and start and end navigation states to align with this preintegrated local increment.

IMU Preintegration Basics

If you want to learn more about IMU preintegration, we wrote a whole series on IMUs on the Tangram Vision Blog! There's a lot to know; we don't get to preintegration until Part 5.