robokudo.annotators.icp_pose_refinement

Pose refinement using iterative closest point (ICP).

This module provides an annotator for:

  • Refining object pose estimates using ICP

  • Matching against reference point cloud models

  • Supporting multiple initial pose variants

  • Evaluating registration quality

The module uses:

  • Open3D ICP implementation

  • Point-to-point registration

  • Multiple pose hypotheses

  • PLY model loading

  • Visualization tools

Warning

Currently limited to refining against a single pre-loaded model.

Classes

ICPPoseRefinementAnnotator

Pose refinement using iterative closest point (ICP).

Module Contents

class robokudo.annotators.icp_pose_refinement.ICPPoseRefinementAnnotator(name='ICPPoseRefinementAnnotator', descriptor=Descriptor())

Bases: robokudo.annotators.core.ThreadedAnnotator

Pose refinement using iterative closest point (ICP).

This annotator:

  • Refines object pose estimates using ICP

  • Matches against reference point cloud models

  • Evaluates multiple initial pose variants

  • Selects best registration result

  • Creates refined pose annotations

Note

Point cloud models can be generated from meshes using CloudCompare’s “Sample points on a mesh” feature.

Warning

Currently limited to refining against a single pre-loaded model.

class Descriptor

Bases: robokudo.annotators.core.BaseAnnotator.Descriptor

Configuration descriptor for ICP refinement.

class Parameters

Parameters for configuring model loading.

Path parameters:

Variables:
  • ros_pkg_path – ROS package containing models, defaults to None

  • data_path – Path to model directory (absolute or relative to ros_pkg_path), defaults to None

ros_pkg_path = None
data_path = None
parameters
class_name_to_ply_model
get_model_path(class_name: str = '')

Get path to PLY model file.

Resolves model path using:

  • ROS package path if provided

  • Direct data path otherwise

Parameters:

class_name (str, optional) – Name of object class to load model for

Returns:

Path to PLY file or None if not found

Return type:

pathlib.Path or None

compute()

Process object hypotheses and refine poses.

The method:

  • Loads point cloud and object hypotheses

  • For each hypothesis with pose: * Creates initial pose variants * Performs ICP registration for each variant * Selects best registration result * Creates refined pose annotation * Generates visualization markers

Returns:

SUCCESS after processing, even if annotator deactivated

Return type:

py_trees.Status