pointcloud_segmentation. A package with tools to handle pointcloud data

pointcloud_segmentation

The pointcloud_segmentation package

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



pointcloud_segmentation
Author(s): Tiago Talhada
autogenerated on Mon Mar 2 2015 01:32:39