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: str = 'ICPPoseRefinementAnnotator', descriptor: ICPPoseRefinementAnnotator = 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.

ros_pkg_path: typing_extensions.Optional[str] = None

If set, use use data_path as a relative path to self.ros_pkg_path

data_path: typing_extensions.Optional[str] = None

Relative Path to the folder containing the models

parameters
class_name_to_ply_model
get_model_path(class_name: str = '') typing_extensions.Optional[pathlib.Path]

Get path to PLY model file.

Resolves model path using:

  • ROS package path if provided

  • Direct data path otherwise

Parameters:

class_name – Name of object class to load model for

Returns:

Path to PLY file or None if not found

compute() py_trees.common.Status

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