An IMU measures angular velocity (gyroscope) and specific force (accelerometer), but every real sensor is corrupted by noise and slowly drifting biases. Kalibr’s camera-IMU calibration uses a probabilistic noise model to weight IMU measurements appropriately during batch optimization. Providing accurate noise parameters is one of the most important steps in getting a good calibration result — values that are too small will over-constrain the trajectory estimate, while values that are too large will effectively ignore the IMU.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ethz-asl/kalibr/llms.txt
Use this file to discover all available pages before exploring further.
The noise model
Kalibr uses a standard continuous-time IMU noise model with two independent stochastic processes for each sensing axis:- Measurement noise (noise density): zero-mean white Gaussian noise on the raw sensor output, characterized by its power spectral density. Corresponds to the noise you observe in a stationary sensor over short time periods.
- Bias random walk: the slowly drifting bias on each axis modeled as a Brownian motion (random walk). This captures the long-term instability of the sensor offset.
Required parameters
Theimu.yaml file must contain the following five fields:
| Field | Symbol | Units | Description |
|---|---|---|---|
accelerometer_noise_density | σ_a | m/s² / √Hz | Accelerometer white noise spectral density |
accelerometer_random_walk | σ_ba | m/s³ / √Hz | Accelerometer bias random walk |
gyroscope_noise_density | σ_g | rad/s / √Hz | Gyroscope white noise spectral density |
gyroscope_random_walk | σ_bg | rad/s² / √Hz | Gyroscope bias random walk |
update_rate | — | Hz | IMU publishing frequency |
Kalibr internally converts continuous-time noise density to discrete-time uncertainty using
σ_discrete = σ_continuous / sqrt(1 / update_rate). Ensure your update_rate matches the actual IMU message rate in your bag file.Example: ADIS16448
The following values are taken from the Kalibr source for the Analog Devices ADIS16448 IMU, which appears in the calibration dataset examples:How to determine noise parameters
The recommended method is Allan variance analysis, which is a time-domain technique for characterizing noise in inertial sensors. Record a static IMU bag (sensor stationary, free from vibration) for at least two hours, then compute the Allan deviation curve.- The noise density (σ_a or σ_g) is read from the flat region of the Allan deviation curve at an averaging time of 1 second. This is the “angle random walk” (ARW) for the gyroscope and “velocity random walk” (VRW) for the accelerometer.
- The bias random walk (σ_ba or σ_bg) is read from the slope-1 region of the Allan deviation curve, corresponding to the minimum point before the curve rises.
- imu_utils (ROS package, outputs values in Kalibr format)
- allan_variance_ros
IMU models
Kalibr supports three IMU models of increasing complexity, selected with--imu-models when running kalibr_calibrate_imu_camera:
| Model string | Description |
|---|---|
calibrated | Basic model: assumes the sensor axes are orthogonal and perfectly aligned with the IMU body frame. Only estimates extrinsic pose and time offset. |
scale-misalignment | Extends calibrated with per-axis scale factors and axis misalignment matrices (M) for both gyroscope and accelerometer. Also calibrates the gyroscope sensitivity to linear acceleration (the A matrix). |
scale-misalignment-size-effect | Extends scale-misalignment with lever arm vectors (rx_i, ry_i, rz_i) that model the physical separation between accelerometer proof masses along each axis (the “size effect”). |
calibrated is sufficient. Use scale-misalignment or scale-misalignment-size-effect only when you have a high-quality IMU and observe systematic residuals with the basic model.