DriveWorks SDK Reference
4.0.0 Release
For Test and Development only

Self-Calibration

Introduction

During car manufacturing, sensors are factory-calibrated to control process variation and to avoid vehicles being built out of specification. Once sensor calibration is out of range from nominal values, subsequent stages depending on a valid calibration will be malfunctional. In practice, factory calibration procedures have practical issues such as lost calibration files, bugs in software, procedures or calibration environments that cannot be recovered after the vehicles leave the factory, or changes in calibration occurring due to mechanical forces and/or temperature variations at the sensors. Thus, methods for continuous self-calibration of sensors are mandatory to counteract these effects. Once mechanical design drawings and nominal values intrinsic sensor parameters are considered, the largest remaining variability is due to the extrinsic pose of the sensors: roll, pitch, and yaw orientations as well as translational position (see below). The mounting position of sensors should typically be reproduced to millimeter range precision, such that the remaining translational effect on sensors is as small as possible.

pitch_yaw_roll.png

The calibration parameters for a sensor model have the following properties:

  • Intrinsic (e.g., camera lens properties)
  • Extrinsic (e.g., the pose relative to the rig)

Nominal values for these parameters are obtained by static calibration or from previous knowledge about sensor characteristics and mounting positions.

Exact parameters are crucial for any effective usage of the sensor's measurements. However, nominal calibration parameters can vary over time, e.g. due to influences of the environment like temperature changes or mechanical stress. This module addresses these transitional variations.

Self-calibration is the process of correcting the nominal calibration parameters based on up-to-date sensor readings. This process compensates for transitional variation to enhance the availability of high quality parameters at any time.

To manage the redundancy of data and to become robust w.r.t. noise, outliers, and environment variations, each calibration parameter is calibrated individually by creating parameter samples that are binned into a histogram. Robust long-term acceptance of a parameter can then be determined at any time by considering how close the resulting histogram is to an ideal single-mode distribution, after a sufficient minimal number of samples were recorded. It is also natural to consider this estimation continuously over time, as calibration values may change over time.

In NVIDIA® DriveWorks, the Calibration module provides a common interface to perform self-calibration of different sensor types. It is a lightweight service that is constantly running in the background to always provide the best estimations for calibration parameters.

For a particular sensor, a sensor calibration routine is registered with the calibration engine (dwCalibrationEngineHandle_t) and then fed with recent sensor readings / processed data or detections. For instance, a camera-calibration is requested via dwCalibrationEngine_initializeCamera(), and data is provided to this routine through the calibration engine via dwCalibrationEngine_addFeatureDetections(). Internally, the calibration engine analyses the provided data and estimates the corrected calibration parameters for the particular sensor. At any time, the status of the calibration process (dwCalibrationEngine_getCalibrationStatus()) and the latest calibration parameters can be queried (e.g., via dwCalibrationEngine_getSensorToRigTransformation()).

Relevant Tutorials

APIs