DriveWorks SDK Reference
3.0.4260 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 
49 #ifndef DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
50 #define DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
51 
52 #include <dw/core/Types.h>
54 #include <dw/egomotion/Egomotion.h>
55 #include <dw/sensors/lidar/Lidar.h>
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 typedef struct dwPointCloudAccumulatorObject* dwPointCloudAccumulatorHandle_t;
61 
71 typedef struct
72 {
74 
77  uint32_t outputFormats;
78 
79  uint32_t filterWindowSize;
84 
86  bool organized;
87  bool enableZeroCrossDetection;
89 
93 
95 
103 {
106 
109 
111 
122 dwStatus dwPointCloudAccumulator_initialize(dwPointCloudAccumulatorHandle_t* obj,
123  const dwPointCloudAccumulatorParams* accumulationParams,
124  const dwLidarProperties* lidarProperties,
125  dwContextHandle_t ctx);
133 dwStatus dwPointCloudAccumulator_reset(dwPointCloudAccumulatorHandle_t obj);
134 
142 dwStatus dwPointCloudAccumulator_release(dwPointCloudAccumulatorHandle_t obj);
143 
152 
162 dwStatus dwPointCloudAccumulator_setCUDAStream(const cudaStream_t stream,
163  dwPointCloudAccumulatorHandle_t obj);
174  dwPointCloudAccumulatorHandle_t obj);
175 
187  dwPointCloudAccumulatorHandle_t obj);
202 dwStatus dwPointCloudAccumulator_isReady(bool* isReady, dwPointCloudAccumulatorHandle_t obj);
203 
216  dwPointCloudAccumulatorHandle_t obj);
217 
227  dwPointCloudAccumulatorHandle_t obj);
228 
239 dwStatus dwPointCloudAccumulator_process(dwPointCloudAccumulatorHandle_t obj);
240 
252 dwStatus dwPointCloudAccumulator_getSweepSize(dwVector2ui* size, dwPointCloudAccumulatorHandle_t obj);
253 
254 #ifdef __cplusplus
255 }
256 #endif
257 
258 #endif // DW_POINTCLOUDPROCESSING_POINTCLOUDACCUMULATOR_H_
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getSweepSize(dwVector2ui *size, dwPointCloudAccumulatorHandle_t obj)
Gets sweeps/spins size.
NVIDIA DriveWorks API: Core Types
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:70
NVIDIA DriveWorks API: Lidar
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:166
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:80
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:80
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:56
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.