Camera decalibration detection
Note
This feature is available only from the firmwares >= 1.20.29
The main purpose of this feature is to detect if the camera is decalibrated by comparing the current estimated extrinsic calibration with the user-provided extrinsic calibration. The feature focuses specifically on detecting deviations in the rotation of the camera. The translation is not considered.
When decalibration is detected, the system generates an ERROR_ODSAPP_CAMERA_DECALIBRATED
diagnostic message. This diagnostic is mapped to the corresponding port: the source is /applications/instances/app<X>/ports/port<x>
where app<x>
represents the specific ODS application instance and port<x>
represents the decalibrated port.
As this is a diagnostic with severity minor
, the vehicle doesn’t have to be stopped immediately, but calibration values should be reviewed while the vehicle is stationary for example during charging.
Important
The camera must be properly calibrated using one of the calibration routines described in the Calibration Routines section.
If the initial calibration is significantly wrong—such as being completely misaligned or having incorrect extrinsic translation parameters, the algorithm may not be able to detect decalibration properly and may not trigger the diagnostic alert.
What to do when decalibration is detected
If the ODS application has flagged a ERROR_ODSAPP_CAMERA_DECALIBRATED
diagnostic message, follow the steps below to determine whether a manual recalibration is needed or if valid correction data is already available.
Inspect the
rotDeltaValid
array:The elements of this array correspond to the rotations around X, Y and Z respectively.
A value of 1 indicates a valid estimation; 0 means the system couldn’t determine a reliable correction for the respective axis.
If all the validity flags show the value 1, review the correction values:
If the corrected calibration values appear to be suspicious, compare the estimated calibration against the original CAD reference values. Accumulated small calibration adjustments can result in a substantial overall deviation from the intended configuration.
The direct comparison of rot[XYZ] values may be misleading, it is advisable to compare human-readable angles (e.g., yaw, pitch, roll) or the corresponding rotation matrices to assess the consistency of the calibration.
If the corrected values are reasonable, apply them:
Use the fully corrected values (
rotHeadToUser
) to update your camera’s extrinsic calibration parameters.
Re-calibrate if necessary: if one or more validity flags show 0 or the correction values seem unusually large, consider performing a full manual recalibration.
For a typical calibration correction sequence, view the flowchart below.
Extrinsic calibration correction
The estimated extrinsic calibration values are provided by algorithm and can be retrieved by deserializing the buffer_id O3R_ODS_EXTRINSIC_CALIBRATION_CORRECTION
which has the following structure.
Name |
Type |
Description |
---|---|---|
|
|
Version number |
|
|
Represents the completion rate of data collection, ranging from 0.0 to 1.0. A value of 1.0 signifies that sufficient data has been gathered to estimate all three rotational delta values. |
|
|
The estimated rotation delta value [rad] to correct the extrinsic calibration. Array of [X, Y, Z]. |
|
|
A flag indicating a valid estimation of rotation delta value (0: invalid, 1: valid). Array of [X, Y, Z]. |
|
|
The rotation value [rad] of the (corrected) extrinsic calibration (extrinsicHeadToUser). Array of [X, Y, Z]. |