The node cuda_pointcloud_preprocessor
expects a 2D pointcloud where every row represents a single channel/ring and each row's points are in non decreasing azimuth order.
To utilize the previously mentioned node, this node provides an adapter to convert standard flat pointclouds (height
equals to 1) to the required 2D tensor.
In addition, this node uses the cuda_blackboard
, a cuda transport layer that enables a zero-copy mechanism between GPU and GPU memory for both input and output.
To create the required 2D tensor, this node iterates the input pointcloud sequentially, filling the output 2D tensor depending on the input point's channel.
The output tensor's size is also estimated in this node, based on the largest channel
value and the maximum number of points per channel observed so far.
Name | Type | Description |
---|---|---|
~/input/pointcloud |
sensor_msgs::msg::PointCloud2 |
Input pointcloud's topic. |
Name | Type | Description |
---|---|---|
~/output/pointcloud |
sensor_msgs::msg::PointCloud2 |
Processed pointcloud's topic |
~/output/pointcloud/cuda |
negotiated_interfaces/msg/NegotiatedTopicsInfo |
Processed pointcloud's negotiation topic |
{{ json_to_markdown("sensing/autoware_cuda_pointcloud_preprocessor/schema/cuda_pointcloud_preprocessor.schema.schema.json") }}
- This algorithm assumes that the input points will be in non-decreasing azimuth order (per ring).
- This node expects that the input pointcloud is flat (
height
equals to 1) and follows theautoware::point_types::PointXYZIRC
layout defined in theautoware_point_types
package.