-
Notifications
You must be signed in to change notification settings - Fork 1.4k
IMU Noise Model
The Camera-IMU calibration routine needs to know how "noisy" your IMU is. This is specified in your IMU configuration YAML file before you start the calibration. Here, you can learn how to set these parameters and how to interpret them.
The IMU measurement model used in Kalibr contains two types of sensor errors:
The same model is independently used to model all three sensor axes. The same model (with different parameters, as we will later see) is also used to model the accelerometer measurement errors (on each axis independently). This model is tractable and often used to model inertial sensors [1], [2].
The rapid fluctuations in the sensor signal are modelled heuristically with a zero-mean, independent, continuous-time white Gaussian noise process
In other words, the higher gyroscope_noise_density
and accelerometer_noise_density
in the YAML file specify exactly these noise strengths
This process can be simulated in discrete-time as follows:
with
where
Note: This assumes that the noise was filtered with an ideal low-pass filter that filters noise above
How you can determine this parameter for your particular IMU is explained below.
In Kalibr, slow variations in the sensor bias are modelled with a "Brownian motion" process, also termed a "Wiener process", or "random walk" in discrete-time. Formally, this process is generated by integrating "white noise" of strength
where
The parameters gyroscope_random_walk
and accelerometer_random_walk
in the YAML file specify these noise strengths
This process can be simulated in discrete-time as follows:
with
This corresponds to the implementation in Kalibr.
In Kalibr, the sensor errors are modelled for each sensor axis independently. Unless you are using inertial sensors whose axes have very different noise properties, this is legitimate. Internally, Kalibr will therefore model the "white" noise processes as follows:
The bias variations ("random walks") are also modelled independently on each sensor axis. Table 1 summarizes all the parameters, and links them to the entries that you can specify in the YAML file. The units of the "sigmas" can also be found in [3].
Table 1: Summary of the IMU noise model parameters as they can be specified in the IMU configuration YAML file of Kalibr. A discussion of these units can be found in this thread for those interested.
Parameter | YAML element | Symbol | Units |
---|---|---|---|
Gyroscope "white noise" | gyroscope_noise_density |
||
Accelerometer "white noise" | accelerometer_noise_density |
||
Gyroscope "random walk" | gyroscope_random_walk |
||
Accelerometer "random walk" | accelerometer_random_walk |
||
IMU sampling rate | update_rate |
This section describes how you can obtain the Kalibr IMU noise model parameters for your particular IMU. While there are many methods available, we focus on how to get the parameters from the datasheet or using the "Allan standard deviation".
White Noise Terms: The parameters for the "white noise" processes (
Other manufacturers specify it directly as rate noise density, acceleration noise density, or simply noise density. The name comes from the fact that
Bias Terms: In contrast to the "white noise sigmas",
While many (parametric and non-parametric) methods have been proposed to (automatically) determine the noise model parameters from samples, deriving the parameters from an Allan standard deviation plot is probably the most common and standardized procedure. [1] derives the AD for different random processes, including "white noise" (slope -1/2 in a log-log AD plot) and "random walk" (slope +1/2 in a log-log AD plot) that are used in Kalibr. The noise model parameters can be determined directly from the Allan standard deviation.
Figure 1: Allan standard deviation of a MEMS gyro with manually identified noise processes.
Some manufacturers provide an Allan standard deviation plot in the datasheet of the device. Otherwise, it needs to be computed from sensor data. A useful open source tool for computing IMU parameters using Allan Deviation is ori-drs/allan_variance_ros which seems to be actively maintained. We recommend using this tool directly on ~15-24 hour dataset recording of the IMU being stationary.
It is important to note that the IMU measurement error model used here is derived from a sensor which does not undergo motion, and at constant temperature. Hence scale factor errors and bias variation caused by temperature changes, for example, are not accounted for. So clearly, the model is optimistic. Particularly when using low-cost MEMS IMUs with Kalibr, you may have to increase the noise model parameters to "capture" these errors as well. In other words, if you use directly the "sigmas" obtained from static sensor data, Kalibr will tend to trust your IMU measurements too much, and its solution will not be optimal.
From our experience, for lowest-cost sensors, increasing the noise model parameters by a factor of 10x or more may be necessary. If you use Kalibr with such a device, please give us feedback, such that we can develop specific guidelines, device-specific parameter suggestions, or more advanced methods to determine these parameters.
[1] "IEEE Standard Specification Format Guide and Test Procedure for Single-Axis Interferometric Fiber Optic Gyros", IEEE Std 952-1997, 1998 http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=660628&isnumber=14457
[2] "Indirect Kalman Filter for 3D Attitude Estimation", Nikolas Trawny and Stergios I. Roumeliotis, MARS Lab Tech. Report Nr. 2005-002, Rev. 57 http://mars.cs.umn.edu/tr/reports/Trawny05b.pdf
[3] "Sigma-Point Kalman Filtering for Integrated GPS and Inertial Navigation", John L. Crassidis, University at Buffalo http://www.acsu.buffalo.edu/~johnc/gpsins_gnc05.pdf
Multiple camera calibration
Camera-IMU calibration
Multi-IMU and IMU intrinsic calibration
Rolling Shutter camera calibration
(only ROS):
Camera focus
Calibration validator
ROS2 support
Supported camera models
Calibration targets
Bag format
YAML formats
IMU Noise Model
Example: Calibrating a VI-Sensor
Example: Calibrating RealSense Cameras