diff --git a/perception/autoware_ground_segmentation/README.md b/perception/autoware_ground_segmentation/README.md index 0ad110f75c17c..0ee59b0d9c04b 100644 --- a/perception/autoware_ground_segmentation/README.md +++ b/perception/autoware_ground_segmentation/README.md @@ -30,14 +30,12 @@ Detail description of each ground segmentation algorithm is in the following lin | `~/output/points` | `sensor_msgs::msg::PointCloud2` | filtered points | ## Parameters + {{ json_to_markdown("perception/autoware_ground_segmentation/schema/ground_segmentation.schema.json") }} {{ json_to_markdown("perception/autoware_ground_segmentation/schema/ransac_ground_filter.schema.json") }} {{ json_to_markdown("perception/autoware_ground_segmentation/schema/ray_ground_filter.schema.json") }} {{ json_to_markdown("perception/autoware_ground_segmentation/schema/scan_ground_filter.schema.json") }} - - - ## Assumptions / Known limits `autoware::pointcloud_preprocessor::Filter` is implemented based on pcl_perception [1] because of [this issue](https://github.com/ros-perception/perception_pcl/issues/9). diff --git a/perception/autoware_ground_segmentation/schema/ground_segmentation.schema.json b/perception/autoware_ground_segmentation/schema/ground_segmentation.schema.json index fa530a4297c3f..3c33ccc992399 100644 --- a/perception/autoware_ground_segmentation/schema/ground_segmentation.schema.json +++ b/perception/autoware_ground_segmentation/schema/ground_segmentation.schema.json @@ -1,151 +1,150 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "autoware_ground_segmentation", - "type": "object", - "definitions": { - "ground_segmentation": { - "type": "object", - "properties": { - "plugin": { - "type": "string", - "description": "The plugin name used for ground segmentation.", - "default": "autoware::ground_segmentation::ScanGroundFilterComponent" - }, - "parameters": { - "type": "object", - "properties": { - "global_slope_max_angle_deg": { - "type": "number", - "description": "Maximum allowable global slope angle in degrees.", - "default": 10.0 - }, - "local_slope_max_angle_deg": { - "type": "number", - "description": "Maximum allowable local slope angle in degrees. Recommended 30.0 for non-elevation grid mode.", - "default": 13.0 - }, - "split_points_distance_tolerance": { - "type": "number", - "description": "Distance tolerance for split points.", - "default": 0.2 - }, - "use_virtual_ground_point": { - "type": "boolean", - "description": "Enable the use of virtual ground points.", - "default": true - }, - "split_height_distance": { - "type": "number", - "description": "Height distance threshold for splitting.", - "default": 0.2 - }, - "non_ground_height_threshold": { - "type": "number", - "description": "Height threshold for non-ground points.", - "default": 0.20 - }, - "grid_size_m": { - "type": "number", - "description": "Size of the grid in meters.", - "default": 0.1 - }, - "grid_mode_switch_radius": { - "type": "number", - "description": "Radius for switching grid mode.", - "default": 20.0 - }, - "gnd_grid_buffer_size": { - "type": "integer", - "description": "Buffer size for ground grid processing.", - "default": 4 - }, - "detection_range_z_max": { - "type": "number", - "description": "Maximum detection range in the Z direction.", - "default": 2.5 - }, - "elevation_grid_mode": { - "type": "boolean", - "description": "Enable elevation grid mode for ground filtering.", - "default": true - }, - "low_priority_region_x": { - "type": "number", - "description": "X-coordinate defining the low-priority region.", - "default": -20.0 - }, - "center_pcl_shift": { - "type": "number", - "description": "Shift applied to the center of the point cloud.", - "default": 0.0 - }, - "radial_divider_angle_deg": { - "type": "number", - "description": "Angle step for radial segmentation in degrees.", - "default": 1.0 - }, - "use_recheck_ground_cluster": { - "type": "boolean", - "description": "Enable rechecking of ground clusters for refinement.", - "default": true - }, - "use_lowest_point": { - "type": "boolean", - "description": "Use the lowest point for ground estimation.", - "default": true - }, - "publish_processing_time_detail": { - "type": "boolean", - "description": "Enable publishing of detailed processing time for debugging.", - "default": false - } - }, - "required": [ - "global_slope_max_angle_deg", - "local_slope_max_angle_deg", - "split_points_distance_tolerance", - "use_virtual_ground_point", - "split_height_distance", - "non_ground_height_threshold", - "grid_size_m", - "grid_mode_switch_radius", - "gnd_grid_buffer_size", - "detection_range_z_max", - "elevation_grid_mode", - "low_priority_region_x", - "center_pcl_shift", - "radial_divider_angle_deg", - "use_recheck_ground_cluster", - "use_lowest_point", - "publish_processing_time_detail" - ], - "additionalProperties": false - } - }, - "required": ["plugin", "parameters"], - "additionalProperties": false - } - }, - "properties": { - "/**": { - "type": "object", - "properties": { - "ros__parameters": { - "type": "object", - "properties": { - "common_ground_filter": { - "$ref": "#/definitions/ground_segmentation" - } - }, - "required": ["common_ground_filter"], - "additionalProperties": false - } + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_ground_segmentation", + "type": "object", + "definitions": { + "ground_segmentation": { + "type": "object", + "properties": { + "plugin": { + "type": "string", + "description": "The plugin name used for ground segmentation.", + "default": "autoware::ground_segmentation::ScanGroundFilterComponent" }, - "required": ["ros__parameters"], - "additionalProperties": false - } - }, - "required": ["/**"], - "additionalProperties": false - } - \ No newline at end of file + "parameters": { + "type": "object", + "properties": { + "global_slope_max_angle_deg": { + "type": "number", + "description": "Maximum allowable global slope angle in degrees.", + "default": 10.0 + }, + "local_slope_max_angle_deg": { + "type": "number", + "description": "Maximum allowable local slope angle in degrees. Recommended 30.0 for non-elevation grid mode.", + "default": 13.0 + }, + "split_points_distance_tolerance": { + "type": "number", + "description": "Distance tolerance for split points.", + "default": 0.2 + }, + "use_virtual_ground_point": { + "type": "boolean", + "description": "Enable the use of virtual ground points.", + "default": true + }, + "split_height_distance": { + "type": "number", + "description": "Height distance threshold for splitting.", + "default": 0.2 + }, + "non_ground_height_threshold": { + "type": "number", + "description": "Height threshold for non-ground points.", + "default": 0.2 + }, + "grid_size_m": { + "type": "number", + "description": "Size of the grid in meters.", + "default": 0.1 + }, + "grid_mode_switch_radius": { + "type": "number", + "description": "Radius for switching grid mode.", + "default": 20.0 + }, + "gnd_grid_buffer_size": { + "type": "integer", + "description": "Buffer size for ground grid processing.", + "default": 4 + }, + "detection_range_z_max": { + "type": "number", + "description": "Maximum detection range in the Z direction.", + "default": 2.5 + }, + "elevation_grid_mode": { + "type": "boolean", + "description": "Enable elevation grid mode for ground filtering.", + "default": true + }, + "low_priority_region_x": { + "type": "number", + "description": "X-coordinate defining the low-priority region.", + "default": -20.0 + }, + "center_pcl_shift": { + "type": "number", + "description": "Shift applied to the center of the point cloud.", + "default": 0.0 + }, + "radial_divider_angle_deg": { + "type": "number", + "description": "Angle step for radial segmentation in degrees.", + "default": 1.0 + }, + "use_recheck_ground_cluster": { + "type": "boolean", + "description": "Enable rechecking of ground clusters for refinement.", + "default": true + }, + "use_lowest_point": { + "type": "boolean", + "description": "Use the lowest point for ground estimation.", + "default": true + }, + "publish_processing_time_detail": { + "type": "boolean", + "description": "Enable publishing of detailed processing time for debugging.", + "default": false + } + }, + "required": [ + "global_slope_max_angle_deg", + "local_slope_max_angle_deg", + "split_points_distance_tolerance", + "use_virtual_ground_point", + "split_height_distance", + "non_ground_height_threshold", + "grid_size_m", + "grid_mode_switch_radius", + "gnd_grid_buffer_size", + "detection_range_z_max", + "elevation_grid_mode", + "low_priority_region_x", + "center_pcl_shift", + "radial_divider_angle_deg", + "use_recheck_ground_cluster", + "use_lowest_point", + "publish_processing_time_detail" + ], + "additionalProperties": false + } + }, + "required": ["plugin", "parameters"], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "common_ground_filter": { + "$ref": "#/definitions/ground_segmentation" + } + }, + "required": ["common_ground_filter"], + "additionalProperties": false + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_ground_segmentation/schema/ransac_ground_filter.schema.json b/perception/autoware_ground_segmentation/schema/ransac_ground_filter.schema.json index 643f6702fcd25..d5b883d419e1c 100644 --- a/perception/autoware_ground_segmentation/schema/ransac_ground_filter.schema.json +++ b/perception/autoware_ground_segmentation/schema/ransac_ground_filter.schema.json @@ -1,115 +1,114 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "autoware_ground_segmentation parameters", - "type": "object", - "definitions": { - "ransac_ground_filter": { - "type": "object", - "properties": { - "base_frame": { - "type": "string", - "description": "The reference coordinate frame for the base.", - "default": "base_link" - }, - "unit_axis": { - "type": "string", - "description": "The primary axis used for unit vector computations.", - "default": "z" - }, - "max_iterations": { - "type": "integer", - "description": "The maximum number of iterations for the segmentation algorithm.", - "default": 1000 - }, - "min_trial": { - "type": "integer", - "description": "The minimum number of trials required for segmentation.", - "default": 5000 - }, - "min_points": { - "type": "integer", - "description": "The minimum number of points required to fit a plane.", - "default": 1000 - }, - "outlier_threshold": { - "type": "number", - "description": "Threshold for detecting outliers in the plane segmentation process.", - "default": 0.01 - }, - "plane_slope_threshold": { - "type": "number", - "description": "Maximum allowable slope angle for detected planes (in degrees).", - "default": 10.0 - }, - "voxel_size_x": { - "type": "number", - "description": "Voxel grid size in the X direction.", - "default": 0.04 - }, - "voxel_size_y": { - "type": "number", - "description": "Voxel grid size in the Y direction.", - "default": 0.04 - }, - "voxel_size_z": { - "type": "number", - "description": "Voxel grid size in the Z direction.", - "default": 0.04 - }, - "height_threshold": { - "type": "number", - "description": "Height difference threshold for plane segmentation.", - "default": 0.01 - }, - "debug": { - "type": "boolean", - "description": "Enable debug mode for additional logging and output.", - "default": false - }, - "publish_processing_time_detail": { - "type": "boolean", - "description": "Enable publishing of detailed processing time for debugging.", - "default": false - } + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_ground_segmentation parameters", + "type": "object", + "definitions": { + "ransac_ground_filter": { + "type": "object", + "properties": { + "base_frame": { + "type": "string", + "description": "The reference coordinate frame for the base.", + "default": "base_link" }, - "required": [ - "base_frame", - "unit_axis", - "max_iterations", - "min_trial", - "min_points", - "outlier_threshold", - "plane_slope_threshold", - "voxel_size_x", - "voxel_size_y", - "voxel_size_z", - "height_threshold", - "debug", - "publish_processing_time_detail" - ], - "additionalProperties": false - } - }, - "properties": { - "/**": { - "type": "object", - "properties": { - "ros__parameters": { - "type": "object", - "properties": { - "plane_segmentation": { - "$ref": "#/definitions/ransac_ground_filter" - } - }, - "required": ["plane_segmentation"], - "additionalProperties": false - } + "unit_axis": { + "type": "string", + "description": "The primary axis used for unit vector computations.", + "default": "z" }, - "required": ["ros__parameters"], - "additionalProperties": false - } - }, - "required": ["/**"], - "additionalProperties": false - } - \ No newline at end of file + "max_iterations": { + "type": "integer", + "description": "The maximum number of iterations for the segmentation algorithm.", + "default": 1000 + }, + "min_trial": { + "type": "integer", + "description": "The minimum number of trials required for segmentation.", + "default": 5000 + }, + "min_points": { + "type": "integer", + "description": "The minimum number of points required to fit a plane.", + "default": 1000 + }, + "outlier_threshold": { + "type": "number", + "description": "Threshold for detecting outliers in the plane segmentation process.", + "default": 0.01 + }, + "plane_slope_threshold": { + "type": "number", + "description": "Maximum allowable slope angle for detected planes (in degrees).", + "default": 10.0 + }, + "voxel_size_x": { + "type": "number", + "description": "Voxel grid size in the X direction.", + "default": 0.04 + }, + "voxel_size_y": { + "type": "number", + "description": "Voxel grid size in the Y direction.", + "default": 0.04 + }, + "voxel_size_z": { + "type": "number", + "description": "Voxel grid size in the Z direction.", + "default": 0.04 + }, + "height_threshold": { + "type": "number", + "description": "Height difference threshold for plane segmentation.", + "default": 0.01 + }, + "debug": { + "type": "boolean", + "description": "Enable debug mode for additional logging and output.", + "default": false + }, + "publish_processing_time_detail": { + "type": "boolean", + "description": "Enable publishing of detailed processing time for debugging.", + "default": false + } + }, + "required": [ + "base_frame", + "unit_axis", + "max_iterations", + "min_trial", + "min_points", + "outlier_threshold", + "plane_slope_threshold", + "voxel_size_x", + "voxel_size_y", + "voxel_size_z", + "height_threshold", + "debug", + "publish_processing_time_detail" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "plane_segmentation": { + "$ref": "#/definitions/ransac_ground_filter" + } + }, + "required": ["plane_segmentation"], + "additionalProperties": false + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_ground_segmentation/schema/ray_ground_filter.schema.json b/perception/autoware_ground_segmentation/schema/ray_ground_filter.schema.json index c217b739a8d86..dc9479bff4336 100644 --- a/perception/autoware_ground_segmentation/schema/ray_ground_filter.schema.json +++ b/perception/autoware_ground_segmentation/schema/ray_ground_filter.schema.json @@ -1,115 +1,114 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "autoware_ground_segmentation", - "type": "object", - "definitions": { - "ray_ground_filter": { - "type": "object", - "properties": { - "min_x": { - "type": "number", - "description": "Minimum X coordinate threshold.", - "default": -0.01 - }, - "max_x": { - "type": "number", - "description": "Maximum X coordinate threshold.", - "default": 0.01 - }, - "min_y": { - "type": "number", - "description": "Minimum Y coordinate threshold.", - "default": -0.01 - }, - "max_y": { - "type": "number", - "description": "Maximum Y coordinate threshold.", - "default": 0.01 - }, - "use_vehicle_footprint": { - "type": "boolean", - "description": "Whether to use the vehicle footprint for ground segmentation.", - "default": false - }, - "general_max_slope": { - "type": "number", - "description": "Maximum allowable slope for general ground segmentation.", - "default": 8.0 - }, - "local_max_slope": { - "type": "number", - "description": "Maximum allowable slope for local ground segmentation.", - "default": 6.0 - }, - "initial_max_slope": { - "type": "number", - "description": "Maximum allowable slope for initial ground segmentation.", - "default": 3.0 - }, - "radial_divider_angle": { - "type": "number", - "description": "Angle step for radial segmentation.", - "default": 1.0 - }, - "min_height_threshold": { - "type": "number", - "description": "Minimum height threshold for ground segmentation.", - "default": 0.15 - }, - "concentric_divider_distance": { - "type": "number", - "description": "Distance between concentric dividers used in segmentation.", - "default": 0.0 - }, - "reclass_distance_threshold": { - "type": "number", - "description": "Threshold distance for reclassification in ground segmentation.", - "default": 0.1 - }, - "publish_processing_time_detail": { - "type": "boolean", - "description": "Enable publishing of detailed processing time for debugging.", - "default": false - } + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_ground_segmentation", + "type": "object", + "definitions": { + "ray_ground_filter": { + "type": "object", + "properties": { + "min_x": { + "type": "number", + "description": "Minimum X coordinate threshold.", + "default": -0.01 }, - "required": [ - "min_x", - "max_x", - "min_y", - "max_y", - "use_vehicle_footprint", - "general_max_slope", - "local_max_slope", - "initial_max_slope", - "radial_divider_angle", - "min_height_threshold", - "concentric_divider_distance", - "reclass_distance_threshold", - "publish_processing_time_detail" - ], - "additionalProperties": false - } - }, - "properties": { - "/**": { - "type": "object", - "properties": { - "ros__parameters": { - "type": "object", - "properties": { - "ground_segmentation": { - "$ref": "#/definitions/ray_ground_filter" - } - }, - "required": ["ground_segmentation"], - "additionalProperties": false - } + "max_x": { + "type": "number", + "description": "Maximum X coordinate threshold.", + "default": 0.01 }, - "required": ["ros__parameters"], - "additionalProperties": false - } - }, - "required": ["/**"], - "additionalProperties": false - } - \ No newline at end of file + "min_y": { + "type": "number", + "description": "Minimum Y coordinate threshold.", + "default": -0.01 + }, + "max_y": { + "type": "number", + "description": "Maximum Y coordinate threshold.", + "default": 0.01 + }, + "use_vehicle_footprint": { + "type": "boolean", + "description": "Whether to use the vehicle footprint for ground segmentation.", + "default": false + }, + "general_max_slope": { + "type": "number", + "description": "Maximum allowable slope for general ground segmentation.", + "default": 8.0 + }, + "local_max_slope": { + "type": "number", + "description": "Maximum allowable slope for local ground segmentation.", + "default": 6.0 + }, + "initial_max_slope": { + "type": "number", + "description": "Maximum allowable slope for initial ground segmentation.", + "default": 3.0 + }, + "radial_divider_angle": { + "type": "number", + "description": "Angle step for radial segmentation.", + "default": 1.0 + }, + "min_height_threshold": { + "type": "number", + "description": "Minimum height threshold for ground segmentation.", + "default": 0.15 + }, + "concentric_divider_distance": { + "type": "number", + "description": "Distance between concentric dividers used in segmentation.", + "default": 0.0 + }, + "reclass_distance_threshold": { + "type": "number", + "description": "Threshold distance for reclassification in ground segmentation.", + "default": 0.1 + }, + "publish_processing_time_detail": { + "type": "boolean", + "description": "Enable publishing of detailed processing time for debugging.", + "default": false + } + }, + "required": [ + "min_x", + "max_x", + "min_y", + "max_y", + "use_vehicle_footprint", + "general_max_slope", + "local_max_slope", + "initial_max_slope", + "radial_divider_angle", + "min_height_threshold", + "concentric_divider_distance", + "reclass_distance_threshold", + "publish_processing_time_detail" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "ground_segmentation": { + "$ref": "#/definitions/ray_ground_filter" + } + }, + "required": ["ground_segmentation"], + "additionalProperties": false + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +} diff --git a/perception/autoware_ground_segmentation/schema/scan_ground_filter.schema.json b/perception/autoware_ground_segmentation/schema/scan_ground_filter.schema.json index 8ff0049221746..4225f0ea9e35a 100644 --- a/perception/autoware_ground_segmentation/schema/scan_ground_filter.schema.json +++ b/perception/autoware_ground_segmentation/schema/scan_ground_filter.schema.json @@ -1,139 +1,138 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "autoware_ground_segmentation", - "type": "object", - "definitions": { - "scan_ground_filter": { - "type": "object", - "properties": { - "global_slope_max_angle_deg": { - "type": "number", - "description": "Maximum allowable global slope angle in degrees.", - "default": 10.0 - }, - "local_slope_max_angle_deg": { - "type": "number", - "description": "Maximum allowable local slope angle in degrees. Recommended 30.0 for non-elevation grid mode.", - "default": 13.0 - }, - "split_points_distance_tolerance": { - "type": "number", - "description": "Distance tolerance for splitting points.", - "default": 0.2 - }, - "use_virtual_ground_point": { - "type": "boolean", - "description": "Enable the use of virtual ground points.", - "default": true - }, - "split_height_distance": { - "type": "number", - "description": "Height distance threshold for point splitting.", - "default": 0.2 - }, - "non_ground_height_threshold": { - "type": "number", - "description": "Height threshold for classifying non-ground points.", - "default": 0.20 - }, - "grid_size_m": { - "type": "number", - "description": "Grid size in meters for ground segmentation.", - "default": 0.5 - }, - "grid_mode_switch_radius": { - "type": "number", - "description": "Radius at which to switch grid mode.", - "default": 20.0 - }, - "gnd_grid_buffer_size": { - "type": "integer", - "description": "Buffer size for ground grid processing.", - "default": 4 - }, - "detection_range_z_max": { - "type": "number", - "description": "Maximum detection range in the Z direction.", - "default": 2.5 - }, - "elevation_grid_mode": { - "type": "boolean", - "description": "Enable elevation grid mode for ground filtering.", - "default": true - }, - "low_priority_region_x": { - "type": "number", - "description": "X-coordinate defining the low-priority region.", - "default": -20.0 - }, - "center_pcl_shift": { - "type": "number", - "description": "Shift applied to the center of the point cloud.", - "default": 0.0 - }, - "radial_divider_angle_deg": { - "type": "number", - "description": "Angle step for radial segmentation in degrees.", - "default": 1.0 - }, - "use_recheck_ground_cluster": { - "type": "boolean", - "description": "Enable rechecking of ground clusters for refinement.", - "default": true - }, - "use_lowest_point": { - "type": "boolean", - "description": "Use the lowest point for ground estimation.", - "default": true - }, - "publish_processing_time_detail": { - "type": "boolean", - "description": "Enable publishing of detailed processing time for debugging.", - "default": false - } - }, - "required": [ - "global_slope_max_angle_deg", - "local_slope_max_angle_deg", - "split_points_distance_tolerance", - "use_virtual_ground_point", - "split_height_distance", - "non_ground_height_threshold", - "grid_size_m", - "grid_mode_switch_radius", - "gnd_grid_buffer_size", - "detection_range_z_max", - "elevation_grid_mode", - "low_priority_region_x", - "center_pcl_shift", - "radial_divider_angle_deg", - "use_recheck_ground_cluster", - "use_lowest_point", - "publish_processing_time_detail" - ], - "additionalProperties": false - } - }, - "properties": { - "/**": { - "type": "object", - "properties": { - "ros__parameters": { - "type": "object", - "properties": { - "ground_filtering": { - "$ref": "#/definitions/scan_ground_filter" - } - }, - "required": ["ground_filtering"], - "additionalProperties": false - } - }, - "required": ["ros__parameters"], - "additionalProperties": false - } - }, - "required": ["/**"], - "additionalProperties": false - } - \ No newline at end of file + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "autoware_ground_segmentation", + "type": "object", + "definitions": { + "scan_ground_filter": { + "type": "object", + "properties": { + "global_slope_max_angle_deg": { + "type": "number", + "description": "Maximum allowable global slope angle in degrees.", + "default": 10.0 + }, + "local_slope_max_angle_deg": { + "type": "number", + "description": "Maximum allowable local slope angle in degrees. Recommended 30.0 for non-elevation grid mode.", + "default": 13.0 + }, + "split_points_distance_tolerance": { + "type": "number", + "description": "Distance tolerance for splitting points.", + "default": 0.2 + }, + "use_virtual_ground_point": { + "type": "boolean", + "description": "Enable the use of virtual ground points.", + "default": true + }, + "split_height_distance": { + "type": "number", + "description": "Height distance threshold for point splitting.", + "default": 0.2 + }, + "non_ground_height_threshold": { + "type": "number", + "description": "Height threshold for classifying non-ground points.", + "default": 0.2 + }, + "grid_size_m": { + "type": "number", + "description": "Grid size in meters for ground segmentation.", + "default": 0.5 + }, + "grid_mode_switch_radius": { + "type": "number", + "description": "Radius at which to switch grid mode.", + "default": 20.0 + }, + "gnd_grid_buffer_size": { + "type": "integer", + "description": "Buffer size for ground grid processing.", + "default": 4 + }, + "detection_range_z_max": { + "type": "number", + "description": "Maximum detection range in the Z direction.", + "default": 2.5 + }, + "elevation_grid_mode": { + "type": "boolean", + "description": "Enable elevation grid mode for ground filtering.", + "default": true + }, + "low_priority_region_x": { + "type": "number", + "description": "X-coordinate defining the low-priority region.", + "default": -20.0 + }, + "center_pcl_shift": { + "type": "number", + "description": "Shift applied to the center of the point cloud.", + "default": 0.0 + }, + "radial_divider_angle_deg": { + "type": "number", + "description": "Angle step for radial segmentation in degrees.", + "default": 1.0 + }, + "use_recheck_ground_cluster": { + "type": "boolean", + "description": "Enable rechecking of ground clusters for refinement.", + "default": true + }, + "use_lowest_point": { + "type": "boolean", + "description": "Use the lowest point for ground estimation.", + "default": true + }, + "publish_processing_time_detail": { + "type": "boolean", + "description": "Enable publishing of detailed processing time for debugging.", + "default": false + } + }, + "required": [ + "global_slope_max_angle_deg", + "local_slope_max_angle_deg", + "split_points_distance_tolerance", + "use_virtual_ground_point", + "split_height_distance", + "non_ground_height_threshold", + "grid_size_m", + "grid_mode_switch_radius", + "gnd_grid_buffer_size", + "detection_range_z_max", + "elevation_grid_mode", + "low_priority_region_x", + "center_pcl_shift", + "radial_divider_angle_deg", + "use_recheck_ground_cluster", + "use_lowest_point", + "publish_processing_time_detail" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "ground_filtering": { + "$ref": "#/definitions/scan_ground_filter" + } + }, + "required": ["ground_filtering"], + "additionalProperties": false + } + }, + "required": ["ros__parameters"], + "additionalProperties": false + } + }, + "required": ["/**"], + "additionalProperties": false +}