DriveWorks SDK Reference
3.0.4260 Release
For Test and Development only

Point Cloud Stitching
Note
SW Release Applicability: This tutorial is applicable to modules in both NVIDIA DriveWorks and NVIDIA DRIVE Software releases.

This tutorial shows how to stitch multiple point clouds in a common coordinate system.

Assume there are three individual point clouds created and accumulated. You can initialize the module:

dwPointCloud accumulatedPointClouds[3];
dwPointCloud stitchedPointCloud;
dwTransformation3f pointCloudTransformations[3];
// allocate memory for individual point cloud and stitched point cloud
......
// accumulate lidar packets to point cloud spin
......
// get transformations for each point cloud
......
dwPointCloudStitcher_initialize(&stitcher, context);
for (uint32_t i = 0; i < 3; i++)
{
dwPointCloudStitcher_bindInput(i, &accumulatedPointClouds[i], pointCloudTransformations[i], stitcher);
}
dwPointCloudStitcher_bindOutput(&stitchedPointCloud, stitcher);

There is an ability to apply global transformation to all stitched points. To do this:

In reality each point cloud was captured in a different timestamp, stitching together would cause motion artifacts. To correct such distortion:

dwPointCloudStitcher_enableMotionCompensation(referenceTimestamp, egomotion, stitcher);
cudaStreamSynchronize(stream);

egomotion is needed to correct the distortion based on the relative egomotion between referenceTimestamp and individual point cloud's timestamp. Please see Relative Egomotion Workflow for egomotion usecase.

To release the module:

For more details see Point Cloud Processing Sample