robokudo.annotators.outlier_removal_objecthypothesis

Statistical outlier removal and clustering for object hypotheses.

This module implements statistical outlier removal based on standard deviation and number of neighbors in point clouds, followed by clustering to refine object hypotheses. The implementation works in-place to minimize memory usage.

Key features:

  • Statistical outlier removal using point neighborhoods

  • DBSCAN clustering for object refinement

  • In-place point cloud modification

  • Configurable parameters per object class

  • Visualization of processed clusters

Authors: * Sorin Arion * Naser Azizi

Attributes

Classes

OutlierRemovalOnObjectHypothesisAnnotator

Annotator for statistical outlier removal and clustering refinement.

Module Contents

robokudo.annotators.outlier_removal_objecthypothesis._PYTYPE_TO_ROS_FIELD: typing_extensions.Dict[typing_extensions.Type, str]
class robokudo.annotators.outlier_removal_objecthypothesis.OutlierRemovalOnObjectHypothesisAnnotator(name: str = 'OutlierRemovalOnObjectHypothesis', descriptor: OutlierRemovalOnObjectHypothesisAnnotator = Descriptor())

Bases: robokudo.annotators.core.BaseAnnotator

Annotator for statistical outlier removal and clustering refinement.

This annotator processes object hypotheses by:

  • Removing statistical outliers from point clouds

  • Clustering remaining points using DBSCAN

  • Selecting largest cluster as refined object

  • Updating object hypothesis point clouds in-place

  • Providing visualization of processed clusters

The processing can be selectively disabled for specific object classes.

class Descriptor

Bases: robokudo.annotators.core.BaseAnnotator.Descriptor

Configuration descriptor for outlier removal and clustering.

class Parameters

Parameter container for outlier removal configuration.

dbscan_neighbors: int = 90

Minimum points to form a cluster (DBSCAN min_samples)

dbscan_epsilon: float = 0.02

DBSCAN neighborhood size

stat_neighbors: int = 200

Number of neighbors for statistical analysis

stat_std: float = 0.5

Standard deviation threshold for outlier removal

skip_removal_on_classes: typing_extensions.List[str] = []

List of class names to skip processing

If you want to skip the complete outlier removal process on certain classes, you can add a list of strings here. The values are case-sensitive!

parameters
node
parameters_callback(params: typing_extensions.List[rclpy.parameter.Parameter]) rcl_interfaces.msg.SetParametersResult
update() py_trees.common.Status

Process object hypotheses to remove outliers and refine clusters.

Returns:

SUCCESS if processing completed, raises Exception if no clusters found

Raises:

Exception – If no clusters are found after processing

cluster_statistical_outlierremoval_pcd() bool

Perform outlier removal and clustering on each object hypothesis.

Returns:

True, if at least one of the object hypotheses could be optimized. False otherwise.