DriveWorks SDK Reference
4.0.0 Release
For Test and Development only

PointCloudAccumulator.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) 2018-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 
47 #ifndef DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
48 #define DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
49 
50 #include <dw/core/base/Types.h>
52 #include <dw/egomotion/Egomotion.h>
53 #include <dw/sensors/lidar/Lidar.h>
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 typedef struct dwPointCloudAccumulatorObject* dwPointCloudAccumulatorHandle_t;
59 
69 typedef struct
70 {
72 
75  uint32_t outputFormats;
76 
77  uint32_t filterWindowSize;
82 
84  bool organized;
85  bool enableZeroCrossDetection;
87  bool outputInRigCoordinates;
89 
92 
94 
102 {
105 
108 
110 
121 dwStatus dwPointCloudAccumulator_initialize(dwPointCloudAccumulatorHandle_t* obj,
122  const dwPointCloudAccumulatorParams* accumulationParams,
123  const dwLidarProperties* lidarProperties,
124  dwContextHandle_t ctx);
132 dwStatus dwPointCloudAccumulator_reset(dwPointCloudAccumulatorHandle_t obj);
133 
141 dwStatus dwPointCloudAccumulator_release(dwPointCloudAccumulatorHandle_t obj);
142 
151 
160  dwPointCloudAccumulatorHandle_t obj);
161 
171 dwStatus dwPointCloudAccumulator_setCUDAStream(const cudaStream_t stream,
172  dwPointCloudAccumulatorHandle_t obj);
183  dwPointCloudAccumulatorHandle_t obj);
184 
196  dwPointCloudAccumulatorHandle_t obj);
211 dwStatus dwPointCloudAccumulator_isReady(bool* isReady, dwPointCloudAccumulatorHandle_t obj);
212 
225  dwPointCloudAccumulatorHandle_t obj);
226 
236  dwPointCloudAccumulatorHandle_t obj);
237 
248 dwStatus dwPointCloudAccumulator_process(dwPointCloudAccumulatorHandle_t obj);
249 
261 dwStatus dwPointCloudAccumulator_getSweepSize(dwVector2ui* size, dwPointCloudAccumulatorHandle_t obj);
262 
263 #ifdef __cplusplus
264 }
265 #endif
266 
267 #endif // DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
NVIDIA DriveWorks API: Core Types
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getSweepSize(dwVector2ui *size, dwPointCloudAccumulatorHandle_t obj)
Gets sweeps/spins size.
float float32_t
Specifies POD types.
Definition: Types.h:70
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getDefaultParams(dwPointCloudAccumulatorParams *params)
Gets default point cloud accumulator parameters.
NVIDIA DriveWorks API: Egomotion Methods
Defines point cloud data structure.
Definition: PointCloud.h:68
NVIDIA DriveWorks API: Lidar
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_setLidarToRigTransformation(const dwTransformation3f *transformation, dwPointCloudAccumulatorHandle_t obj)
Sets lidar to rig transformation.
dwTransformation3f sensorTransformation
Transformation aligns the lidar sensor with the platform that produces the egomotion.
float32_t minAngleDegree
Starting angle in degree.
Specifies a 3D rigid transformation.
Definition: Types.h:462
bool organized
If user sets it to true, the module will process the lidar packets such that the output data is align...
dwMemoryType
Memory type definitions.
Definition: Types.h:177
uint32_t filterWindowSize
The horizontal smoothing filter window size.
dwStatus
Status definition.
Definition: Status.h:180
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_initialize(dwPointCloudAccumulatorHandle_t *obj, const dwPointCloudAccumulatorParams *accumulationParams, const dwLidarProperties *lidarProperties, dwContextHandle_t ctx)
Initializes point cloud accumulator.
float32_t maxDistanceMeter
Ending distance in degree.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutputTimestamps(dwPointCloudTimestampRange *timestampRange, dwPointCloudAccumulatorHandle_t obj)
Binds output timestamp range.
int64_t dwTime_t
Specifies a timestamp unit, in microseconds.
Definition: Types.h:82
float32_t minDistanceMeter
Starting distance in meter.
Defines point cloud accumulator parameters.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutput(dwPointCloud *pointCloud, dwPointCloudAccumulatorHandle_t obj)
Binds output point cloud buffer.
struct dwPointCloudAccumulatorObject * dwPointCloudAccumulatorHandle_t
struct dwEgomotionObject const * dwEgomotionConstHandle_t
Definition: Egomotion.h:78
Defines timestamp range of a point cloud.
dwMemoryType memoryType
The module will process lidar packets and output to cuda memory if memoryType = DW_MEMORY_CUDA...
NVIDIA DriveWorks API: Point Cloud Processing
Defines a two-element unsigned-integer vector.
Definition: Types.h:312
uint32_t outputFormats
Combination of desired dwPointCloudFormat flags.
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:79
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_setCUDAStream(const cudaStream_t stream, dwPointCloudAccumulatorHandle_t obj)
Sets CUDA stream of point cloud accumulator.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_release(dwPointCloudAccumulatorHandle_t obj)
Releases point cloud accumulator.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getCUDAStream(cudaStream_t *stream, dwPointCloudAccumulatorHandle_t obj)
Gets CUDA stream of point cloud accumulator.
bool enableMotionCompensation
Setting it to true will correct the distortions caused by lidar sensor motion.
#define DW_API_PUBLIC
Definition: Exports.h:54
float32_t maxAngleDegree
Ending angle in degree.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_addLidarPacket(const dwLidarDecodedPacket *packet, dwPointCloudAccumulatorHandle_t obj)
Pushes lidar packet to point cloud accumulator.
dwEgomotionConstHandle_t egomotion
Handle to egomotion module.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_process(dwPointCloudAccumulatorHandle_t obj)
Accumulates lidar packets and stores the results to the output buffer.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_isReady(bool *isReady, dwPointCloudAccumulatorHandle_t obj)
Indicate that enough data has been collected to perform full combination.
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_reset(dwPointCloudAccumulatorHandle_t obj)
Resets point cloud accumulator.