Skip to content

autoware_ground_segmentation_cuda#

Purpose#

The autoware_ground_segmentation algorithms have been thoroughly tested with Autoware. However, due to latency and high computational cost when processing large pointcloud, the input pointcloud range has been limited by the crop_box_filter based on the ego-vehicle's base_link. This can cause unwanted object loss, especially before a sloped road.

ground_segmentation_pipeline issue

Recently, GPU and CUDA-supported libraries such as cuda_blackboard and accelerated versions of autoware_pointcloud_preprocessor have been implemented. These can be leveraged to improve the performance of ground segmentation filter algorithms using CUDA/GPU.

This package reimplements the current scan_ground_filter of the ground_segmentation package to reduce latency and avoid the bottleneck caused by processing a large number of point clouds.

Inner-workings / Algorithm#

The detailed algorithm is available in scan-ground-filter.md.

Parameters#

Name Type Description Default Range
global_slope_max_angle_deg float Maximum global ground slope angle [deg]. Larger values reduce false negatives on steep roads but can increase false positives (classifying objects as ground). 10 N/A
local_slope_max_angle_deg float Maximum local slope angle [deg] between adjacent points (used for fine discrimination of small objects or ramps). 13 N/A
non_ground_height_threshold float Absolute vertical distance threshold [m] above estimated ground line to classify a point as non-ground. 0.2 N/A
grid_size_m float Radial cell size in polar grid [m]; larger values smooth ground estimation but may miss small objects. 0.1 N/A
gnd_cell_buffer_size integer Number of previous ground cells used to estimate local ground slope. 4 N/A
detection_range_z_max float Maximum Z height (above base_link) considered in classification [m]. 2.5 N/A
center_pcl_shift float X-axis offset [m] applied to additional LiDAR point clouds relative to vehicle reference (positive forward). 0 N/A
sector_angle_deg float Angular width of each polar sector [deg]. 1 N/A
use_recheck_ground_cluster boolean Enable secondary pass to re-evaluate ground clusters (may reduce false ground on elevated points). 1 N/A
recheck_start_distance float Minimum radial distance [m] at which ground cluster recheck logic begins. 20 ≥0.0
use_lowest_point boolean Use lowest point in cell as reference during ground recheck (otherwise median-like selection). 1 N/A
min_x float Minimum X range relative to base_link [m] included in processing. -100 N/A
max_x float Maximum X (forward) range relative to base_link [m] included in processing. 150 N/A
min_y float Minimum Y range relative to base_link [m] included in processing. -70 N/A
max_y float Maximum Y range relative to base_link [m] included in processing. 70 N/A
min_z float Minimum Z range relative to base_link [m] included in processing. -2.5 N/A
max_z float Maximum Z range relative to base_link [m] included in processing. 2.5 N/A