1 # Copyright (c) 2019-2020 NVIDIA CORPORATION. All rights reserved.
3 @page dwx_calibration_overview Calibration Overview
7 DriveWorks considers *calibration* as a representation and estimation of both the
8 (extrinsic) position and orientation as well as the intrinsics parameters for each individual sensor on a
9 vehicle. This is also known as an estimation for vehicle-specific parameters.
11 A precise knowledge of these values enables accurate mapping of perceived
12 objects in individual sensor frames into other sensor frames, or back into
15 DriveWorks provides multiple APIs, tools, and samples showing how to calibrate
16 sensors and vehicle parameters, and this section of the documentation summarizes
17 existing tools and APIs with the list of supported sensors.
19 @section dwx_calibration_overview_static 1.0 Static vs Dynamic Calibration
21 **Static Calibration** is the process of estimating a sensor's calibration parameters
22 with respect to the vehicle while it is *stationary*. These parameters include:
23 intrinsics model, extrinsic position and orientation.
25 Static Calibration consists of multiple steps involving several DriveWorks tools
26 and tutorials to achieve the desired outcome. These for instance include the
27 @ref dwx_imu_calibration_tool to estimate IMU orientation, or the @ref dwx_camera_calibration_tools
28 to estimate camera intrinsics parameters, position and orientation. The
29 @ref dwx_camera_calibration tutorial provides assistance in setting up an environment optimized for calibration.
31 **Dynamic Calibration**, also known as self-calibration, is the process of estimating
32 a sensor's calibration parameters with respect to the vehicle while it is *non-stationary*.
33 This process does not require a specifically prepared environment to optimize calibration.
34 Instead, certain driving maneuvers can influence how these dynamic calibration estimates are obtained.
35 These maneuvers can include extensive turns, stronger acceleration, or smooth driving in a straight line.
36 Although DriveWorks APIs and tools do not require you to perform these maneuvers, doing so may result in
37 quicker calibration results.
39 The following is a list of sensors supported by the **static calibration** and
40 **dynamic calibration** DriveWorks APIs and tools.
42 @subsection dwx_calibration_overview_imu 1.1 IMU Calibration
44 DriveWorks provides a collection of APIs and tools for both dynamic and
45 static IMU calibration. In general, any IMU sensor supported by the @ref dwx_sal is
46 considered to be supported.
50 For more information regarding static IMU Calibration, please refer to @ref dwx_imu_calibration_tool.
54 @ref calibration_usecase_imu covers in great detail how IMU self-calibration is
55 implemented and which driving maneuvers are beneficial for acceptance of an
58 Following is a list of sensors and DoFs that can be calibrated for IMU sensors
59 using the APIs as provided by the calibration engine, see
60 `dwCalibrationEngine_initializeIMU`.
62 These IMU sensors were tested and supported by both the static calibration tool
63 as well as the self-calibration API:
65 | Sensor | Calibration support | DW version|
66 |---------------- | ---------------------- | ----------|
67 |XSens MTi-G-710 | roll,pitch,yaw | >= 2.0 |
68 |Continental SC13 | roll,pitch,yaw | >= 3.0 |
71 @subsection dwx_calibration_overview_camera 1.2 Camera Calibration
73 DriveWorks provides support for the camera modules as listed in
74 `dwCameraType`. It also provides support for a custom camera through external
75 drivers. Calibration tools or APIs do not differentiate for specific camera
76 types, however they do depend on the availability of frames captured with these
77 cameras. They hence indirectly have a dependency on a working @ref dwx_sal.
79 #### Static Calibration and Camera Models
81 DriveWorks supports multiple mathematical models of the geometrical relationship
82 between pixels and optical rays, also known as intrinsic camera models, see @ref
85 DriveWorks's static calibration tools support the f-theta
86 (`dwFThetaCameraConfig`) and pinhole (`dwPinholeCameraConfig`) camera models.
87 Estimated parameters of these models are also known as **intrinsic** calibration
90 To additionally support mapping objects from camera space to the rig coordinate
91 system, all camera position and orientation parameters on the vehicle have to be
92 calibrated as well. These parameters are also known as the camera's
93 **extrinsic** calibration parameters.
95 Please refer to @ref dwx_camera_calibration_tools for the list of the tools
96 provided for static camera calibration. The step-by-step guide @ref
97 dwx_camera_calibration provides guidelines and best practices on how to successfully perform intrinsic as well
98 as extrinsic camera calibration. Static camera calibration can be performed on
99 any camera which is supported by the @ref dwx_sal.
101 #### Dynamic Calibration
103 Self-calibration is a method of estimating camera calibration parameters while
104 the vehicle performs regular driving maneuvers.
106 DriveWorks provides APIs, see @ref calibration_group, to implement
107 self-calibration in custom applications.
109 A collection of samples, for example @ref dwx_camera_calibration_sample,
110 demonstrates how the DriveWorks API can be used to calibrate recorded sessions.
111 An explanation of how self-calibration is implemented, as well as some
112 code-snippets, can be found at @ref calibration_usecase_features.
114 Following is a list of supported and verified sensors (cameras absent from the table below, but which are
115 listed in `dwCameraType` are not fully verified at this time):
117 | Sensor | FOV | Orientation | Dynamic calibration | DW version |
118 |----------- | --------| --------------| ----------------------| -------------|
119 | AR0231 | 60deg | front/rear | roll,pitch,yaw,height | >= 2.0 |
120 | AR0231 | 60deg | side/cross | roll,pitch,yaw | >= 3.0* |
121 | AR0231 | 120deg | front/rear | roll,pitch,yaw,height | >= 2.0 |
122 | AR0231 | 120deg | side/cross | roll,pitch,yaw | >= 3.0* |
123 | AR0820 | 30deg | front/rear | pitch,yaw | >= 3.0 |
124 | AR0820 | 30deg | side/cross | n.a. | n.a. |
125 | AR0820 | 70deg | front/rear | roll,pitch,yaw,height | >= 3.0 |
126 | AR0820 | 70deg | side/cross | roll,pitch,yaw | >= 3.0* |
127 | AR0820 | 120deg | front/rear | roll,pitch,yaw,height | >= 3.0 |
128 | AR0820 | 120deg | side/cross | roll,pitch,yaw | >= 3.0* |
129 | IMX390 | 190deg | front/rear | roll,pitch,yaw,height | >= 3.2** |
130 | IMX390 | 190deg | side/cross | roll,pitch,yaw | >= 3.2** |
133 - **front/rear** indicate a camera mostly pointing forward or to the back, i.e.
134 `yaw` in the ranges of (-30,30) and (150,-150) degrees.
135 - **side** is a camera pointing to the sides, i.e. `yaw` is in the ranges of (120,60)
136 and (-120,-60) degrees.
137 - **cross** indicates a camera along the diagonal axis, i.e. `yaw` is in the ranges of
138 (60,30), (-60,-30), (120,150) and (-120,-150) degrees.
139 - (*): support is already provided from this version, however expecting
141 - (**): expected support starting from this version
143 @subsection dwx_calibration_overview_lidar 1.3 Lidar Calibration
145 DriveWorks provides support for a variety of lidar sensors through it's @ref dwx_sal
146 interface, see @ref lidar_group.
150 There are no tools provided to calibrate lidars statically yet.
154 APIs to perform dynamic lidar calibration can be found at @ref
155 calibration_group. See @ref calibration_usecase_lidar for a detailed explanation
156 of the algorithms to self-calibrate, as well as verification methodology of
157 lidar dynamic calibration.
159 Following is a list of supported and verified lidars for self-calibration:
161 | Sensor | Calibration support | DW version |
162 |---------------- | ---------------------- | ---------- |
163 | Velodyne HD32 | roll,pitch,yaw,height | >= 2.0 |
164 | Velodyne HD64 | roll,pitch,yaw,height | >= 2.0 |
165 | Velodyne VLS128 | roll,pitch,yaw,height | >= 2.0 |
166 | Ouster OS2-128 | roll,pitch,yaw,height | >= 3.2* |
167 | Luminar H3 | roll,pitch,yaw,height | >= 3.2* |
170 - (*): expected support starting from this version
172 @subsection dwx_calibration_overview_radar 1.4 Radar calibration
176 There are no tools provided to calibrate radars statically yet.
180 DriveWorks provides APIs to perform radar self-calibration. See @ref
181 calibration_usecase_radar for a more detailed explanation of how
182 self-calibration of radars is implemented and verified.
184 Following is a list of supported and tested radars for self-calibration:
186 | Sensor | Calibration support | DW version|
187 |---------------- | ---------------------- | ----------|
188 | ARS430 (CAN) | yaw, wheel-radii | >= 2.0 |