# CalibrationQuality

The CalibrationQuality message is part of the [Dynamic
Calibration](https://docs.luxonis.com/software-v3/depthai/depthai-components/host_nodes/dynamic_calibration.md) system. It is
designed to evaluate and report the quality of the current stereo camera calibration, providing detailed statistics about
calibration performance and any detected deviations.

It helps users and automated systems determine whether a recalibration is needed by comparing current calibration metrics against
known baselines or previous calibration states.

For most application-level health checks, prefer
[CalibrationMetrics](https://docs.luxonis.com/software-v3/depthai/depthai-components/messages/calibration_metrics.md) instead.

> **Note**
> From `DepthAI 3.8.0`, `CalibrationQuality` should be treated as deprecated. The node still accepts the command for compatibility, but current runtimes return an empty `CalibrationQuality` result and log a deprecation warning.

Replace this API with:

 * Old: `CalibrationQuality()`
 * New: `calibrate()` or `startCalibration()`
 * Old: `dai.DynamicCalibrationControl.calibrationQuality()` or `dai.DynamicCalibrationControl.Commands.CalibrationQuality()`
 * New: `dai.DynamicCalibrationControl.calibrate()` or `dai.DynamicCalibrationControl.startCalibration()`
 * Read comparison data from: `DynamicCalibrationResult.calibrationData.calibrationDifference` on `calibrationOutput`

## Examples of functionality

Calibration quality message is received when the user sends the `CalibrationQuality` command to the Dynamic Calibration node. This
output is legacy compatibility only.

 * [Calibration integration
   example](https://github.com/luxonis/depthai-core/blob/main/examples/python/DynamicCalibration/calibration_integration.py)

## Reference

### dai::CalibrationQuality

Kind: struct

Summary of calibration quality metrics.

Returned from a calibration quality check. Describes expected accuracy improvement if a new calibration were applied.

#### dai::CalibrationQuality::Data

Kind: struct

Quality metrics describing differences between current and predicted calibration.

##### std::array< float, 3 > rotationChange

Kind: variable

##### std::vector< double > depthErrorDifference

Kind: variable

##### float sampsonErrorCurrent

Kind: variable

Sampson error of currently installed calibration.

##### float sampsonErrorNew

Kind: variable

Estimated new Sampson error if the new calibration is applied.

##### std::map< std::pair< CameraBoardSocket, CameraBoardSocket >, RotationChangePerAxis > pairwiseRotationDifference

Kind: variable

Pairwise per-axis rotation deltas keyed by camera socket pairs.

##### DEPTHAI_SERIALIZE(Data, rotationChange, sampsonErrorCurrent, sampsonErrorNew, depthErrorDifference, pairwiseRotationDifference)

Kind: function

#### std::optional< Data > qualityData

Kind: variable

Optional quality metrics.

#### std::string info

Kind: variable

Human-readable result description.

#### CalibrationQuality()

Kind: function

#### ~CalibrationQuality()

Kind: function

#### CalibrationQuality(Data qualityData, std::string info)

Kind: function

Construct a CalibrationQuality message with data.

parameters: qualityData: Metrics describing the quality difference.; info: Informational text describing the result.

#### CalibrationQuality(std::string info)

Kind: function

Construct a CalibrationQuality message without metric data.

parameters: info: Informational text describing the result.

#### void serialize(std::vector< std::uint8_t > & metadata, DatatypeEnum & datatype)

Kind: function

#### DatatypeEnum getDatatype()

Kind: function

Get the datatype of this specific message.

return: DatatypeEnum

#### DEPTHAI_SERIALIZE(CalibrationQuality, qualityData, info)

Kind: function

### Need assistance?

Head over to [Discussion Forum](https://discuss.luxonis.com/) for technical support or any other questions you might have.
