DriveWorks SDK Reference
3.0.4260 Release
For Test and Development only

Point Cloud Accumulator

Detailed Description

Defines datatypes and functions to accumulate cloud of points.

Note
SW Release Applicability: These APIs are available in both NVIDIA DriveWorks and NVIDIA DRIVE Software releases.

Data Structures

struct  dwPointCloudAccumulatorParams
 Defines point cloud accumulator parameters. More...
 
struct  dwPointCloudTimestampRange
 Defines timestamp range of a point cloud. More...
 

Typedefs

typedef struct dwPointCloudAccumulatorObject * dwPointCloudAccumulatorHandle_t
 

Functions

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_addLidarPacket (const dwLidarDecodedPacket *packet, dwPointCloudAccumulatorHandle_t obj)
 Pushes lidar packet to point cloud accumulator. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutput (dwPointCloud *pointCloud, dwPointCloudAccumulatorHandle_t obj)
 Binds output point cloud buffer. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutputTimestamps (dwPointCloudTimestampRange *timestampRange, dwPointCloudAccumulatorHandle_t obj)
 Binds output timestamp range. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getCUDAStream (cudaStream_t *stream, dwPointCloudAccumulatorHandle_t obj)
 Gets CUDA stream of point cloud accumulator. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getDefaultParams (dwPointCloudAccumulatorParams *params)
 Gets default point cloud accumulator parameters. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getSweepSize (dwVector2ui *size, dwPointCloudAccumulatorHandle_t obj)
 Gets sweeps/spins size. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_initialize (dwPointCloudAccumulatorHandle_t *obj, const dwPointCloudAccumulatorParams *accumulationParams, const dwLidarProperties *lidarProperties, dwContextHandle_t ctx)
 Initializes point cloud accumulator. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_isReady (bool *isReady, dwPointCloudAccumulatorHandle_t obj)
 Indicate that enough data has been collected to perform full combination. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_process (dwPointCloudAccumulatorHandle_t obj)
 Accumulates lidar packets and stores the results to the output buffer. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_release (dwPointCloudAccumulatorHandle_t obj)
 Releases point cloud accumulator. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_reset (dwPointCloudAccumulatorHandle_t obj)
 Resets point cloud accumulator. More...
 
DW_API_PUBLIC dwStatus dwPointCloudAccumulator_setCUDAStream (const cudaStream_t stream, dwPointCloudAccumulatorHandle_t obj)
 Sets CUDA stream of point cloud accumulator. More...
 

Data Structure Documentation

◆ dwPointCloudAccumulatorParams

struct dwPointCloudAccumulatorParams
Data Fields
dwEgomotionConstHandle_t egomotion Handle to egomotion module.
bool enableMotionCompensation Setting it to true will!< correct the distortions caused by lidar sensor motion.
bool enableZeroCrossDetection If set to true end of spin is detected based on angle of incoming points otherwise on number of incoming packets.
uint32_t filterWindowSize The horizontal smoothing filter window size.
float32_t maxAngleDegree Ending angle in degree.
float32_t maxDistanceMeter Ending distance in degree.
dwMemoryType memoryType The module will process lidar packets and output to cuda memory
if memoryType = DW_MEMORY_CUDA.

The module will process
lidar packets and output to cpu memory if memoryType = DW_MEMORY_CPU

float32_t minAngleDegree Starting angle in degree.
float32_t minDistanceMeter Starting distance in meter.
bool organized If user sets it to true, the module will process the lidar packets such that the output data is aligned on 3D grid.
uint32_t outputFormats Combination of desired dwPointCloudFormat flags.
dwTransformation3f sensorTransformation Transformation aligns the lidar sensor with the platform that produces the egomotion.

◆ dwPointCloudTimestampRange

struct dwPointCloudTimestampRange
Data Fields
dwTime_t hostEndTimestamp
dwTime_t hostStartTimestamp
dwTime_t sensorEndTimestamp
dwTime_t sensorStartTimestamp

Typedef Documentation

◆ dwPointCloudAccumulatorHandle_t

typedef struct dwPointCloudAccumulatorObject* dwPointCloudAccumulatorHandle_t

Definition at line 60 of file PointCloudAccumulator.h.

Function Documentation

◆ dwPointCloudAccumulator_addLidarPacket()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_addLidarPacket ( const dwLidarDecodedPacket packet,
dwPointCloudAccumulatorHandle_t  obj 
)

Pushes lidar packet to point cloud accumulator.

Parameters
[in]packetPointer to decoded lidar packet
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS - if successfully added packet
DW_INTERNAL_ERROR - the values included in decoded lidar packet do not match the ones in the lidar properties
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_bindOutput()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutput ( dwPointCloud pointCloud,
dwPointCloudAccumulatorHandle_t  obj 
)

Binds output point cloud buffer.

Parameters
[out]pointCloudPointer to output buffer
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT - the memory type in the output buffer does not match the one specified in dwPointCloudAccumulatorParams.
Or user did not allocate memory. Please call dwPointCloud_createBuffer in advance to allocate proper memory storage.

◆ dwPointCloudAccumulator_bindOutputTimestamps()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_bindOutputTimestamps ( dwPointCloudTimestampRange timestampRange,
dwPointCloudAccumulatorHandle_t  obj 
)

Binds output timestamp range.

Parameters
[out]timestampRangeTimestamp range of a output point cloud
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_getCUDAStream()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getCUDAStream ( cudaStream_t *  stream,
dwPointCloudAccumulatorHandle_t  obj 
)

Gets CUDA stream of point cloud accumulator.

Parameters
[out]streamPointer to CUDA stream handle
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT
DW_CALL_NOT_ALLOWED - point cloud accumulator is initialized to process host memory

◆ dwPointCloudAccumulator_getDefaultParams()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getDefaultParams ( dwPointCloudAccumulatorParams params)

Gets default point cloud accumulator parameters.

Parameters
[out]paramsPointer to point cloud parameters
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_getSweepSize()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_getSweepSize ( dwVector2ui size,
dwPointCloudAccumulatorHandle_t  obj 
)

Gets sweeps/spins size.

Parameters
[out]sizeSweep size, x is width and y is height
[in]objHandle to the Point Cloud Accumulator module
Returns
DW_INVALID_HANDLE if given handle is invalid, i.e. null or of wrong type
DW_INVALID_ARGUMENT if given arguments are invalid
DW_SUCCESS
Note
User can call this function once Point Cloud Accumulator is initialized

◆ dwPointCloudAccumulator_initialize()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_initialize ( dwPointCloudAccumulatorHandle_t obj,
const dwPointCloudAccumulatorParams accumulationParams,
const dwLidarProperties lidarProperties,
dwContextHandle_t  ctx 
)

Initializes point cloud accumulator.

Parameters
[out]objPointer to point cloud accumulator handle
[in]accumulationParamsPointer to point cloud accumulator parameters
[in]lidarPropertiesPointer to lidar properties
[in]ctxHandle to the context
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_isReady()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_isReady ( bool *  isReady,
dwPointCloudAccumulatorHandle_t  obj 
)

Indicate that enough data has been collected to perform full combination.

When this method returns true, a call to dwPointCloudAccumulator_process() can be used to retrieve a solution.

Parameters
[out]isReadyIf true we have enough packets to full fill the selcted strategy
[in]objHandle to point cloud accumulator
Returns
DW_INVALID_HANDLE - if given handle is invalid
DW_INVALID_ARGUMENT - if isReady is nullptr
DW_SUCCESS

◆ dwPointCloudAccumulator_process()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_process ( dwPointCloudAccumulatorHandle_t  obj)

Accumulates lidar packets and stores the results to the output buffer.

Parameters
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT
Note
Upon successful execution, the function will modify the following variables in output buffer
  1. organized will be set to the same value specified in dwPointCloudAccumulatorParams
  2. size will be non-zero value denotes the current accumulated points in the memory.

◆ dwPointCloudAccumulator_release()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_release ( dwPointCloudAccumulatorHandle_t  obj)

Releases point cloud accumulator.

Parameters
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_reset()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_reset ( dwPointCloudAccumulatorHandle_t  obj)

Resets point cloud accumulator.

Parameters
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT

◆ dwPointCloudAccumulator_setCUDAStream()

DW_API_PUBLIC dwStatus dwPointCloudAccumulator_setCUDAStream ( const cudaStream_t  stream,
dwPointCloudAccumulatorHandle_t  obj 
)

Sets CUDA stream of point cloud accumulator.

Parameters
[in]streamHandle to CUDA stream
[in]objHandle to point cloud accumulator
Returns
DW_SUCCESS
DW_INVALID_ARGUMENT
DW_CALL_NOT_ALLOWED - point cloud accumulator is initialized to process host memory