DriveWorks SDK Reference
3.5.78 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>
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 
164 
167 
169 
173 typedef struct
174 {
176  uint32_t pointSkip;
177 
181 
183 
184 //
185 // Camera based localization.
186 //
187 
204  dwConstRigHandle_t rig,
205  uint32_t numCameras,
206  const uint32_t cameraIndices[],
207  const dwCameraModelHandle_t cameraHandles[]);
208 
222 dwStatus dwLocalization_cameraInitialize(dwLocalizationHandle_t* localization,
223  dwConstMapHandle_t map,
224  const dwLocalizationCameraParameters* params,
225  dwContextHandle_t context);
226 
262  const dwLaneDetection laneDetectionsPerCamera[],
263  const dwLandmarkDetection poleDetectionsPerCamera[],
264  const dwObjectArray signAndLightDetectionsPerCamera[],
265  const dwGlobalEgomotionResult* globalEgoResult,
266  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
267  const dwTransformation3f* currToPrev,
268  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
269  dwTime_t timestamp,
270  dwLocalizationHandle_t localization);
271 
286 dwStatus dwLocalization_cameraSetExtrinsics(uint32_t cameraIndex, const dwTransformation3f* cameraToRig, dwLocalizationHandle_t localization);
287 
288 //
289 // Radar based localization.
290 //
291 
307 dwStatus dwLocalization_radarInitialize(dwLocalizationHandle_t* localization,
308  dwConstMapHandle_t map,
309  dwMapProviderHandle_t mapProvider,
310  const dwMapsContentLayerBuffer* contentLayers,
311  const dwLocalizationRadarParameters* params,
312  dwContextHandle_t context);
313 
346  const dwVector4f* radarPoints,
347  size_t numPoints,
348  const dwGlobalEgomotionResult* globalEgoResult,
349  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
350  const dwTransformation3f* currToPrev,
351  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
352  dwTime_t timestamp,
353  dwLocalizationHandle_t localization);
354 
355 //
356 // Lidar based localization.
357 //
358 
374 dwStatus dwLocalization_lidarInitialize(dwLocalizationHandle_t* localization,
375  dwConstMapHandle_t map,
376  dwMapProviderHandle_t mapProvider,
377  const dwMapsContentLayerBuffer* contentLayers,
378  const dwLocalizationLidarParameters* params,
379  dwContextHandle_t context);
380 
412  const dwPointCloud* lidarPoints,
413  const dwGlobalEgomotionResult* globalEgoResult,
414  const dwGlobalEgomotionUncertainty* globalEgoUncertainty,
415  const dwTransformation3f* currToPrev,
416  const dwEgomotionRelativeUncertainty* currToPrevUncertainty,
417  dwTime_t timestamp,
418  dwLocalizationHandle_t localization);
419 
420 //
421 // Common functions across camera, radar and lidar localization.
422 //
423 
435  dwLocalizationHandle_t localization);
436 
446 dwStatus dwLocalization_reset(dwLocalizationHandle_t localization);
447 
457 dwStatus dwLocalization_release(dwLocalizationHandle_t localization);
458 
471 dwStatus dwLocalization_setCUDAStream(cudaStream_t stream, dwLocalizationHandle_t localization);
472 
483 dwStatus dwLocalization_getCUDAStream(cudaStream_t* stream, dwLocalizationHandle_t localization);
484 
485 #ifdef __cplusplus
486 }
487 #endif
488 
489 #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
DW_API_PUBLIC dwStatus dwLocalization_lidarLocalize(dwLocalizationResult *localizationResult, const dwPointCloud *lidarPoints, 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.
float float32_t
Specifies POD types.
Definition: Types.h:70
NVIDIA DriveWorks API: Rig Configuration
Defines point cloud data structure.
Definition: PointCloud.h:70
NVIDIA DriveWorks API: World Module
dwQuaterniond globalOrientation
Global orientation (quaternion) in the local ENU frame set at globalPosition.
Definition: Localization.h:139
Defines a four-element single-precision floating point vector.
Definition: Types.h:335
Defines a three-element floating-point vector.
Definition: Types.h:319
DW_API_PUBLIC dwStatus dwLocalization_cameraInitParamsFromRig(dwLocalizationCameraParameters *params, dwConstRigHandle_t rig, uint32_t numCameras, const uint32_t cameraIndices[], const dwCameraModelHandle_t cameraHandles[])
Initializes a camera localization parameters struct for an existing rig.
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.
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:466
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
DW_API_PUBLIC dwStatus dwLocalization_setMap(dwConstMapHandle_t map, dwLocalizationHandle_t localization)
Sets a new HD Map to localize to.
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:178
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.
Location point defined by WGS84 coordinates.
Definition: Types.h:575
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:344
struct dwRigObject const * dwConstRigHandle_t
Definition: Rig.h:73
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:173
bool asyncLoading
Load maps in background thread.
Definition: Localization.h:179
The output format of detected lanes.
NVIDIA DriveWorks API: GPS
NVIDIA DriveWorks API: Point Cloud Processing
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:182
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:69
struct dwCameraModelObject * dwCameraModelHandle_t
A pointer to the handle representing a calibrated camera model.
Definition: CameraModel.h:68
dwLocalizationResultIndicator indicator
Localization indicator indicates whether there are any problems.
Definition: Localization.h:111
uint32_t pointSkip
Optional additional point filtering.
Definition: Localization.h:176
#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