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.


    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


    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" />    


    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


    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" />


    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" />

    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 :)





    Other usefull classes



     All Classes Files Functions Variables Defines

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