D455 / BMI085: Is IMU intrinsic calibration (Q / bias) factory settings are stored into EEPROM?
Hi RealSense team,
We are trying to understand how IMU factory calibration is handled on the RealSense D455, specifically for the IMU.
Using pyrealsense2, we read the IMU motion intrinsics from our D455 and see effectively identity sensitivity matrices and zero bias:
Gyro calibration matrix [sensitivity | bias]:
1 0 0 0
0 1 0 0
0 0 1 0
noise variances: [0.0, 0.0, 0.0]
bias variances: [0.0, 0.0, 0.0]
Accel calibration matrix [sensitivity | bias]:
1 0 0 0
0 1 0 0
0 0 1 0
noise variances: [0.0, 0.0, 0.0]
bias variances: [0.0, 0.0, 0.0]
We also enabled internal librealsense logging and see:
08/09 18:44:45,955 WARNING [...] (ds-calib-parsers.cpp:36)
IMU Calibration is not available, default intrinsic and extrinsic will be used.
08/09 18:44:45,955 INFO [...] (ds-calib-parsers.cpp:206)
IMU extrinsic table not found; using CAD values
08/09 18:44:45,955 INFO [...] (ds-calib-parsers.cpp:232)
Depth Module V2 IMU Accelno valid intrinsic available, use default values.
08/09 18:44:45,955 INFO [...] (ds-calib-parsers.cpp:244)
Depth Module V2 IMU Gyrointrinsic not valid, use default values.
One of the relevant librealsense code paths is here:
Our main question is:
For a factory D455 , is a device-specific accelerometer/gyroscope intrinsic calibration (scale/misalignment matrix Q and bias b) normally stored in the camera EEPROM?
More specifically:
-
Is an identity calibration matrix with zero bias the expected factory state for a D455/IMU because the BMI085 performs its own internal calibration, or does this indicate that device-specific IMU calibration data is missing from EEPROM?
-
Are D455 units factory-calibrated for accelerometer/gyro scale, axis misalignment, and bias, with those parameters stored in the RealSense calibration tables?
-
If the log says:
IMU Calibration is not availableshould this be considered normal for a D455, or does it indicate that the IMU calibration table was not programmed / is invalid?
-
When librealsense falls back to the identity intrinsic matrix, are the
ACCEL/GYROsamples still already corrected internally by the IMU, or are they effectively raw sensor measurements with no device-specific scale/bias correction? -
Is there a recommended way to verify whether a particular D455 has the expected factory IMU calibration programmed?
We are mainly trying to distinguish between:
A. No external Q / b calibration is expected for the IMU, so identity/zero values are normal.
versus
B. A D455 should contain factory IMU intrinsic calibration in EEPROM, and our unit is missing that calibration.
Thanks!
-
Hi Utkarsh Gupta Information about the IMU factory calibration process is not available publicly. If you are part of a company and require the information then you could consider applying to sign a RealSense Non Disclosure Agreement (NDA) for access to confidential technical information.
It is possible to calibrate the IMU yourself though and write the calibration to the camera hardware's EEPROM, which can be done using a Python tool provided by RealSense.
https://github.com/realsenseai/librealsense/tree/master/tools/rs-imu-calibration
1 & 2. The IMU needs to be calibrated with software because the BMI IMU component in RealSense cameras does not have internal hardware-based calibration.
Section 2.2 of the PDF user guide for the tool on page 8 explains that zero-offset bias is used to cancel any non-zero values for the accelerometer and gyro when the sensor should be reading zero. The guide also describes that the calibration takes account of scale. It has an 'Off-Axis' parameter to correct if the axes of the accelerometer are not orthogonal.
3. Whilst it is known that the depth sensors are calibrated in the factory, there is not confirmation that the IMU is factory calibrated (having an NDA agreement should be able to provide that information). However, the majority of RealSense users will never need to perform a calibration of the IMU. It should only be needed if (a) the IMU X or Z accel values have a clear bias occurring or (b) if the Y-Accel (gravity) value is significantly less than the 9.80 target value (such as 9.6 or less), or if it is non-zero and fluctuating when the camera is resting motionless on a flat surface.
If the message 'IMU Calibration is not available' appears then it will not affect the ability to access the IMU accel and gyro values and so can usually be disregarded. Some customers who integrate RealSense cameras into their products perform a full calibration of the camera themselves after receiving it as part of their quality control process in order to confirm that they are well calibrated.
4. The IMU hardware outputs raw values, though the RealSense SDK can perform software correction of the raw values to 'fix' the data to improve its accuracy. This function is called Motion Correction.
5. I am not aware of a mechanism to check whether a camera has an IMU factory calibration. As mentioned above, the quickest way to check whether the IMU values need calibrating is to see if the X or Z accel values have a bias shift or if Y-Accel value is 9.6 or less or is fluctuating when the camera is motionless on a flat surface.
Please sign in to leave a comment.
Comments
1 comment