DriveWorks SDK Reference
3.0.4260 Release
For Test and Development only

Localization.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed
3 // under the Mutual Non-Disclosure Agreement.
4 //
5 // Notice
6 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
7 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
8 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
9 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
10 //
11 // NVIDIA Corporation assumes no responsibility for the consequences of use of such
12 // information or for any infringement of patents or other rights of third parties that may
13 // result from its use. No license is granted by implication or otherwise under any patent
14 // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
15 // expressly authorized by NVIDIA. Details are subject to change without notice.
16 // This code supersedes and replaces all information previously supplied.
17 // NVIDIA Corporation products are not authorized for use as critical
18 // components in life support devices or systems without express written approval of
19 // NVIDIA Corporation.
20 //
21 // Copyright (c) 2017-2020 NVIDIA Corporation. All rights reserved.
22 //
23 // NVIDIA Corporation and its licensors retain all intellectual property and proprietary
24 // rights in and to this software and related documentation and any modifications thereto.
25 // Any use, reproduction, disclosure or distribution of this software and related
26 // documentation without an express license agreement from NVIDIA Corporation is
27 // strictly prohibited.
28 //
30 
49 #ifndef DW_LOCALIZATION_H_
50 #define DW_LOCALIZATION_H_
51 
52 #include <dw/core/Context.h>
54 #include <dw/world/ObjectArray.h>
55 #include <dw/sensors/gps/GPS.h>
56 #include <dw/sensors/imu/IMU.h>
57 #include <dw/sensors/lidar/Lidar.h>
58 #include <dw/maps/Maps.h>
59 #include <dw/maps/ContentLayers.h>
61 #include <dw/rig/Rig.h>
63 
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67 
71 typedef struct dwLocalizationObject* dwLocalizationHandle_t;
72 
99 
104 typedef struct
105 {
108 
112 
116 
120 
123 
126 
129 
134 
140 
143 
148 
149 // The maximum number of cameras that the localization module can use.
150 #define DW_LOCALIZATION_MAX_CAMERA_COUNT 8
151 
155 typedef struct
156 {
158  uint32_t numCameras;
159 
162 
165 
167 
171 typedef struct
172 {
174  uint32_t pointSkip;
175 
179 
181 
182 //
183 // Camera based localization.
184 //
185 
201  dwConstRigHandle_t rig,
202  uint32_t numCameras,
203  const uint32_t cameraIndices[]);
204 
218 dwStatus dwLocalization_cameraInitialize(dwLocalizationHandle_t* localization,
219  dwConstMapHandle_t map,
220  const dwLocalizationCameraParameters* params,
221  dwContextHandle_t context);
222 
258  const dwLaneDetection laneDetectionsPerCamera[],
259  const dwLandmarkDetection poleDetectionsPerCamera[],
260  const dwObjectArray signAndLightDetectionsPerCamera[],
261  const dwGlobalEgomotionResult* globalEgoResult,
262  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
263  const dwTransformation3f* currToPrev,
264  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
265  dwTime_t timestamp,
266  dwLocalizationHandle_t localization);
267 
282 dwStatus dwLocalization_cameraSetExtrinsics(uint32_t cameraIndex, const dwTransformation3f* cameraToRig, dwLocalizationHandle_t localization);
283 
284 //
285 // Radar based localization.
286 //
287 
303 dwStatus dwLocalization_radarInitialize(dwLocalizationHandle_t* localization,
304  dwConstMapHandle_t map,
305  dwMapProviderHandle_t mapProvider,
306  const dwMapsContentLayerBuffer* contentLayers,
307  const dwLocalizationRadarParameters* params,
308  dwContextHandle_t context);
309 
342  const dwVector4f* radarPoints,
343  size_t numPoints,
344  const dwGlobalEgomotionResult* globalEgoResult,
345  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
346  const dwTransformation3f* currToPrev,
347  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
348  dwTime_t timestamp,
349  dwLocalizationHandle_t localization);
350 
351 //
352 // Lidar based localization.
353 //
354 
370 dwStatus dwLocalization_lidarInitialize(dwLocalizationHandle_t* localization,
371  dwConstMapHandle_t map,
372  dwMapProviderHandle_t mapProvider,
373  const dwMapsContentLayerBuffer* contentLayers,
374  const dwLocalizationLidarParameters* params,
375  dwContextHandle_t context);
376 
409  const dwLidarPointXYZI* lidarPoints,
410  size_t numPoints,
411  const dwGlobalEgomotionResult* globalEgoResult,
412  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
413  const dwTransformation3f* currToPrev,
414  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
415  dwTime_t timestamp,
416  dwLocalizationHandle_t localization);
417 
418 //
419 // Common functions across camera, radar and lidar localization.
420 //
421 
433  dwLocalizationHandle_t localization);
434 
444 dwStatus dwLocalization_reset(dwLocalizationHandle_t localization);
445 
455 dwStatus dwLocalization_release(dwLocalizationHandle_t localization);
456 
469 dwStatus dwLocalization_setCUDAStream(cudaStream_t stream, dwLocalizationHandle_t localization);
470 
481 dwStatus dwLocalization_getCUDAStream(cudaStream_t* stream, dwLocalizationHandle_t localization);
482 
483 #ifdef __cplusplus
484 }
485 #endif
486 
487 #endif // DW_LOCALIZATION_H_
dwMatrix3d positionUncertainty
A 3x3 covariance matrix indicating position uncertainty with respect to the rig frame itself (order: ...
Definition: Localization.h:142
float float32_t
Specifies POD types.
Definition: Types.h:70
NVIDIA DriveWorks API: Rig Configuration
NVIDIA DriveWorks API: World Module
dwQuaterniond globalOrientation
Global orientation (quaternion) in the local ENU frame set at globalPosition.
Definition: Localization.h:139
NVIDIA DriveWorks API: Lidar
Defines a four-element single-precision floating point vector.
Definition: Types.h:335
Defines a three-element floating-point vector.
Definition: Types.h:319
Configuration parameters for a calibrated FTheta camera.
Definition: Rig.h:268
DW_API_PUBLIC dwStatus dwLocalization_release(dwLocalizationHandle_t localization)
Releases the localization module.
Defines a double-precision quaternion.
Definition: Types.h:430
DW_API_PUBLIC dwStatus dwLocalization_cameraLocalize(dwLocalizationResult *localizationResult, const dwLaneDetection laneDetectionsPerCamera[], const dwLandmarkDetection poleDetectionsPerCamera[], const dwObjectArray signAndLightDetectionsPerCamera[], const dwGlobalEgomotionResult *globalEgoResult, const dwGlobalEgomotionUncertainty *globalEgoUncertainty, const dwTransformation3f *currToPrev, const dwEgomotionRelativeUncertainty *currToPrevUncertainty, dwTime_t timestamp, dwLocalizationHandle_t localization)
Localize the rig based on the latest measurements with camera.
DW_API_PUBLIC dwStatus dwLocalization_cameraInitParamsFromRig(dwLocalizationCameraParameters *params, dwConstRigHandle_t rig, uint32_t numCameras, const uint32_t cameraIndices[])
Initializes a camera localization parameters struct for an existing rig.
dwQuaterniond relativeOrientation
Relative orientation in a local ENU frame set at the road segment origin.
Definition: Localization.h:128
The output format of detected line types.
Holds egomotion uncertainty estimates for a relative motion estimate.
Definition: Egomotion.h:463
NVIDIA DriveWorks API: Core Methods
DW_API_PUBLIC dwStatus dwLocalization_getCUDAStream(cudaStream_t *stream, dwLocalizationHandle_t localization)
Gets the CUDA stream used by all landmark detections.
dwTime_t timestamp
Timestamp that localization was run on.
Definition: Localization.h:107
NVIDIA DriveWorks API: Maps
DW_API_PUBLIC dwStatus dwLocalization_cameraInitialize(dwLocalizationHandle_t *localization, dwConstMapHandle_t map, const dwLocalizationCameraParameters *params, dwContextHandle_t context)
Create a new camera localization module.
DW_API_PUBLIC dwStatus dwLocalization_radarLocalize(dwLocalizationResult *localizationResult, const dwVector4f *radarPoints, size_t numPoints, const dwGlobalEgomotionResult *globalEgoResult, const dwGlobalEgomotionUncertainty *globalEgoUncertainty, const dwTransformation3f *currToPrev, const dwEgomotionRelativeUncertainty *currToPrevUncertainty, dwTime_t timestamp, dwLocalizationHandle_t localization)
Localize the rig based on the latest measurements with radar.
dwVector3f relativePosition
Relative position in a local ENU frame set at the road segment origin.
Definition: Localization.h:125
Specifies a 3D rigid transformation.
Definition: Types.h:462
dwMapsRoadSegmentId roadSegmentId
ID of the road segment that relative pose is with respect to.
Definition: Localization.h:122
Location point defined by WGS84 coordinates.
DW_API_PUBLIC dwStatus dwLocalization_setMap(dwConstMapHandle_t map, dwLocalizationHandle_t localization)
Sets a new HD Map to localize to.
Holds a Lidar point cloud XYZ and the associated intensity.
Definition: Lidar.h:57
DW_API_PUBLIC dwStatus dwLocalization_lidarLocalize(dwLocalizationResult *localizationResult, const dwLidarPointXYZI *lidarPoints, size_t numPoints, const dwGlobalEgomotionResult *globalEgoResult, const dwGlobalEgomotionUncertainty *globalEgoUncertainty, const dwTransformation3f *currToPrev, const dwEgomotionRelativeUncertainty *currToPrevUncertainty, dwTime_t timestamp, dwLocalizationHandle_t localization)
Localize the rig based on the latest measurements with lidar.
dwLocalizationResultIndicator
Defines all the possible localization result indicators, set via bits.
Definition: Localization.h:76
dwMatrix3d orientationUncertainty
A 3x3 covariance matrix indicating orientation uncertainty with respect to the rig frame itself (orde...
Definition: Localization.h:146
dwStatus
Status definition.
Definition: Status.h:166
Holds global egomotion state estimate.
DW_API_PUBLIC dwStatus dwLocalization_setCUDAStream(cudaStream_t stream, dwLocalizationHandle_t localization)
Sets the CUDA stream for CUDA related operations.
DW_API_PUBLIC dwStatus dwLocalization_lidarInitialize(dwLocalizationHandle_t *localization, dwConstMapHandle_t map, dwMapProviderHandle_t mapProvider, const dwMapsContentLayerBuffer *contentLayers, const dwLocalizationLidarParameters *params, dwContextHandle_t context)
Create a new lidar localization module.
DW_API_PUBLIC dwStatus dwLocalization_reset(dwLocalizationHandle_t localization)
Resets all internal state of the localization module; does not modify properties specified in each in...
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
bool isMapAvailable
A boolean flag indicating if map is available in the surrounding of the vehicle.
Definition: Localization.h:119
Globally unique identifier for road segments.
Definition: Maps.h:345
struct dwRigObject const * dwConstRigHandle_t
Definition: Rig.h:180
float32_t confidence
A [0, 1] floating point number that indicates the confidence of the localization result.
Definition: Localization.h:115
NVIDIA DriveWorks API: Landmark Detector Methods
Defines a 3x3 matrix of double floating point numbers.
Definition: Types.h:250
DW_API_PUBLIC dwStatus dwLocalization_cameraSetExtrinsics(uint32_t cameraIndex, const dwTransformation3f *cameraToRig, dwLocalizationHandle_t localization)
Sets the camera-to-rig extrinsic transformation for a specified camera.
uint32_t numCameras
The number of cameras to use for localization.
Definition: Localization.h:158
DW_API_PUBLIC dwStatus dwLocalization_radarInitialize(dwLocalizationHandle_t *localization, dwConstMapHandle_t map, dwMapProviderHandle_t mapProvider, const dwMapsContentLayerBuffer *contentLayers, const dwLocalizationRadarParameters *params, dwContextHandle_t context)
Create a new radar localization module.
struct dwMapProviderObject * dwMapProviderHandle_t
Definition: MapProvider.h:77
Parameters for initializing the radar / lidar localization module.
Definition: Localization.h:171
bool asyncLoading
Load maps in background thread.
Definition: Localization.h:177
The output format of detected lanes.
NVIDIA DriveWorks API: GPS
Homogeneous array of structs.
Definition: ObjectArray.h:68
Parameters for initializing the camera localization module.
Definition: Localization.h:155
Holds global egomotion uncertainty estimate.
dwLocalizationRadarParameters dwLocalizationLidarParameters
Definition: Localization.h:180
NVIDIA DriveWorks API: Global Egomotion Methods
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:80
Caller-provided buffer for content layers.
Definition: MapProvider.h:181
dwMapsGeoPoint globalPosition
Global WGS84 position (LLA).
Definition: Localization.h:133
struct dwMapObject const * dwConstMapHandle_t
Definition: Maps.h:70
dwLocalizationResultIndicator indicator
Localization indicator indicates whether there are any problems.
Definition: Localization.h:111
uint32_t pointSkip
Optional additional point filtering.
Definition: Localization.h:174
#define DW_LOCALIZATION_MAX_CAMERA_COUNT
Definition: Localization.h:150
Output structure obtained from any of the localization modules (camera, radar, lidar, fusion).
Definition: Localization.h:104
#define DW_API_PUBLIC
Definition: Exports.h:56
NVIDIA DriveWorks API: IMU
struct dwLocalizationObject * dwLocalizationHandle_t
Handle to a localization module object.
Definition: Localization.h:71