pointcloud_segmentation. A package with tools to handle pointcloud data

pointcloud_segmentation: pointcloud_segmentation

Clustering for 3D Pointclouds

  • Homepage: http://ros.org/wiki/pointcloud_segmentation
  • pointcloud_segmentation is a package that provides some tools to segment 3D pointclouds. A detailed description about c++ node classes and nodelets are given below.

    Table of contents

    1. How to use the nodelets
    2. The node classes
    3. Other usefull classes

    How to use the nodelets

    Here is a brief description on how to use the nodelets and node classes.

    filtering_nodelet

    This node will take a message of type sensor_msg::PointCloud2 and pass a voxel grid filter and a volume filter. Usefull tool for stereo pointclouds.

           <!-- FILTER XB3 POINT CLOUD -->
           <node name="cloud_filtering" pkg="pointcloud_segmentation" type="filtering_nodelet" >
               <param name="pointcloud_input" type="string" value="/snr/scam/wide/points2" />
               <param name="pointcloud_output" type="string" value="/snr/scam/wide/filtered/points2" />
               <param name="frame_id" type="string" value="/atc/vehicle/center_bumper" />
               <param name="voxel_size" type="double" value="0.05" />   Voxel resolution
               <param name="min_x" type="double" value="0.0" />         Min for x value relatively to /atc/vehicle/center_bumper
               <param name="max_x" type="double" value="15.0" />        Max for x value relatively to /atc/vehicle/center_bumper
               <param name="min_y" type="double" value="-8.0" />        Min for y value relatively to /atc/vehicle/center_bumper
               <param name="max_y" type="double" value="8.0" />         Max for y value relatively to /atc/vehicle/center_bumper
               <param name="min_z" type="double" value="-0.5" />        Min for z value relatively to /atc/vehicle/center_bumper
               <param name="max_z" type="double" value="5.0" />         Max for z value relatively to /atc/vehicle/center_bumper
           </node>
    

    laser_to_pc_nodelet

    Actualy this nodelet is similar to filtering_nodelet but it accepts only laser_scan instead of pointclouds

    <h2> <a name="laser_to_pc_nodelet"> laser_to_pc_nodelet </a> </h2>
        <node name="laser_to_cloud" pkg="pointcloud_segmentation" type="laser_to_pc_nodelet">
            <param name="laser_input" type="string" value="/snr/las/2/scan" />
            <param name="pointcloud_output" type="string" value="/snr/las/2/filtered/points2" />
            <param name="frame_id" type="string" value="/atc/vehicle/center_bumper" />
            <param name="min_x" type="double" value="0.0" />
            <param name="max_x" type="double" value="15.0" />    
            <param name="min_y" type="double" value="-8.0" />    
            <param name="max_y" type="double" value="8.0" />    
            <param name="min_z" type="double" value="-0.5" />    
            <param name="max_z" type="double" value="5.0" />    
        </node>
    

    plane_road_extraction_nodelet

    This nodelet requires the use of package plane_model_road_segmentation to make a RANSAC model for road plane. It will accept a message of type sensor_msg::PointCloud2 and return two messages: one with road pointcloud and other with the rest of the points.

           <!-- PLANE MODEL ROAD SEGMENTATION     -->
           <node name="plane_model_road_extraction" pkg="pointcloud_segmentation" type="plane_road_extraction_nodelet">
               <param name="pointcloud_input" type="string" value="/snr/scam/wide/filtered/points2" />
               <param name="pointcloud_road" type="string" value="/snr/scam/wide/road/points2" />
               <param name="pointcloud_clusters" type="string" value="/snr/scam/wide/clusters/points2" />
               <param name="z_min" type="double" value="-0.5" />    Minimum value for road extraction value
               <param name="z_max" type="double" value="0.15" />    Maximum value for road extraction value
               <param name="threshold" type="double" value="0.15" />    Threshold limit for plane_model_road_segmentation class. see /lar3/utils/plane_model_road_segmentation
           </node>
    

    euclidean_cluster_nodelet

    This nodelet will accept a pointcloud for euclidean segmentation. It will assume that the input data is already pre-processed and there is no contact between obstacles so you can set properly your parameters.

     <!--   EUCLIDEAN CLUSTERING      -->
       <node name="euclidean_cluster" pkg="pointcloud_segmentation" type="euclidean_cluster_nodelet">
           <param name="pointcloud_input" type="string" value="/snr/scam/wide/clusters/points2" />
           <param name="cluster_markers" type="string" value="/environment/clusters/marker" />
           <param name="cluster_markers_text" type="string" value="/environment/clusters/info" />
           <param name="cluster_tolerance" type="double" value="0.5" />
           <param name="min_cluster_size" type="double" value="5" />
           <param name="max_cluster_size" type="double" value="10000" />
       </node>
    

    region_growing_nodelet

    This nodelet have as input two diferent pointclouds: one is from a laserscan or similar to make euclidean cluster segmentation, and then it will accept a 3D pointcloud for neighboor search.

    <!--  REGION GROWING -->
    <node name="region_growing" pkg="pointcloud_segmentation" type="region_growing_nodelet">
        <param name="pointcloud_input" type="string" value="/snr/scam/wide/clusters/points2" />
        <param name="laser_input" type="string" value="/snr/las/2/filtered/points2" />
        <param name="cluster_markers" type="string" value="/environment/clusters/markers" />
        <param name="cluster_markers_text" type="string" value="/environment/clusters/info" />
        <param name="min_cluster_size" type="double" value="2" />
        <param name="max_cluster_size" type="double" value="1000" />
        <param name="clustering_tolerance" type="double" value="1.0" />
        <param name="radius" type="double" value="0.5" />
    </node>
    

    The node classes

    If you need to configure your own nodelets for other applications you can use the class nodes as well. Each nodelet uses a c++ class and you can use them as your own will :)

    filtering

    plane_road_extraction

    euclidean_cluster_extraction

    region_growing_node

    Other usefull classes

    region_growing

    markers

     All Classes Files Functions Variables Defines


    pointcloud_segmentation
    Author(s): Tiago Talhada
    autogenerated on Wed Jul 23 04:33:32 2014