robokudo.annotators.plane ========================= .. py:module:: robokudo.annotators.plane .. autoapi-nested-parse:: Plane detection and visualization in point clouds. This module provides an annotator for: * Detecting dominant planes using RANSAC * Creating plane model annotations * Visualizing detected planes and inliers * Supporting threaded execution The plane detection uses: * RANSAC for robust model fitting * Distance threshold for inlier selection * Plane equation in ax + by + cz + d = 0 form .. note:: Plane visualization includes both inlier points and a mesh model. Classes ------- .. autoapisummary:: robokudo.annotators.plane.PlaneAnnotator Module Contents --------------- .. py:class:: PlaneAnnotator(name='PlaneAnnotator', descriptor=Descriptor()) Bases: :py:obj:`robokudo.annotators.core.ThreadedAnnotator` Plane detector and visualizer for point clouds. This annotator: * Detects largest plane using RANSAC * Creates plane model annotations * Visualizes plane inliers and model * Runs in a separate thread .. note:: Uses Open3D's plane segmentation with configurable parameters. .. py:class:: Descriptor Bases: :py:obj:`robokudo.annotators.core.BaseAnnotator.Descriptor` Configuration descriptor for plane detection. .. py:class:: Parameters Parameters for configuring plane detection. :ivar visualize_plane_model: Show plane model mesh, defaults to True :type visualize_plane_model: bool .. py:attribute:: visualize_plane_model :value: True .. py:attribute:: parameters .. py:method:: compute() Detect and annotate dominant plane in point cloud. The method: * Loads point cloud from CAS * Detects plane using RANSAC: * Distance threshold: 0.02 * Sample size: 3 points * Iterations: 50 * Creates plane annotation with: * Model parameters (a, b, c, d) * Inlier point indices * Visualizes results: * Inlier points in original cloud * Optional plane model mesh :return: SUCCESS after processing :rtype: py_trees.Status