HintedPlaneDetector¶
What Is This¶
Estimate plane parameter from small ‘hint’ pointcloud and grow it to detect larger plane.
Algorithm is:
Detect hint plane from small hint pointcloud using RANSAC
Filter
~input
pointcloud based on distance and normal direction with hint plane.Detect plane from the pointcloud using RANSAC
Segment clusters out of the inliers of the detected plane based on euclidean metrics
Apply density filter
Extract points from the nearest segmented clusters to the centroid of hint plane
Compute convex hull of the extracted points
Subscribing Topic¶
~input
(sensor_msgs/PointCloud2
)Input pointcloud. It is required to have normal and xyz fields.
~input/hint/cloud
(sensor_msgs/PointCloud2
)Hint pointcloud to estimate plane parameter and only xyz fieleds are required.
Publishing Topic¶
~output/polygon
(geometry_msgs/PolygonStamped
)~output/polygon_array
(jsk_recognition_msgs/PolygonArray
)~output/inliers
(pcl_msgs/PointIndices
)~output/coefficients
(pcl_msgs/ModelCoefficients
)Result of detection.
~output/hint/polygon
(geometry_msgs/PolygonStamped
)~output/hint/polygon_array
(jsk_recognition_msgs/PolygonArray
)~output/hint/inliers
(pcl_msgs/PointIndices
)~output/hint/coefficients
(pcl_msgs/ModelCoefficients
)Result of detection of hint pointcloud.
~output/hint_filtered_indices
(pcl_msgs/PointIndices
)~output/plane_filtered_indices
(pcl_msgs/PointIndices
)~output/density_filtered_indices
(pcl_msgs/PointIndices
)~output/euclidean_filtered_indices
(pcl_msgs/PointIndices
)Candidate point indices filtered by each filtering phase.
Parameters¶
Parameters for detecting hint plane¶
~hint_outlier_threashold
(Double, default:0.1
)Outlier threshold to detect hint plane using RANSAC
~hint_max_iteration
(Integer, default:100
)Maximum iteration number to detect hint plane using RANSAC
~hint_min_size
(Integer, default:100
)Minimum number of inliers in hint plane
Parameters for filtering pointcloud with hint¶
~enable_distance_filtering
(Bool, default:True
)Whether to filter
~input
by distance from hint convex polygon.The distance is defined by
~outlier_threashold
.~enable_normal_filtering
(Bool, default:True
)Whether to filter
~input
by angular difference from normal of hint plane.~normal_filter_eps_angle
(Double, default:0.01
)Maximum allowable angle in radians to filter candidate points before detecting larger plane.
Normal direction is computed from hint plane.
Parameters for detecting larger plane¶
~outlier_threashold
(Double, default:0.1
)Outlier threshold to detect larger plane using RANSAC
~max_iteration
(Integer, default:100
)Maximum iteration number to detect larger plane using RANSAC
~eps_angle
(Double, default:0.01
)Maximum allowable angle in radians to detect larger plane and normal direction is computed from hint plane.
~min_size
(Integer, default:100
)Minimum number of inliers in larger plane
Parameters for filtering by euclidean clustering¶
~enable_euclidean_filtering
(Bool, default:True
)Whether to filter
~input
by euclidean clustering.~euclidean_clustering_filter_tolerance
(Double, default:0.001
)Tolerance distance in meters in euclidean clustering to filter far points.
~euclidean_clustering_filter_min_size
(Integer, default:20
)Minimum cluster size in euclidean clustering to filter far points.
This parameter is not used but
~min_size
is used instead.
Parameters for filtering by density¶
~enable_density_filtering
(Bool, default:True
)Whether to filter
~input
by density (radius search).~density_radius
(Double, default:0.1
)~density_num
(Integer, default:10
)These parameters are used in density filtering.
The only points which have at least
~density_num
neighbors within~density_radius
distance [m] will pass.
Sample¶
roslaunch jsk_pcl_ros sample_hinted_plane_detector.launch