#include "ros/ros.h"
#include "pcl/console/parse.h"
#include "pcl/io/pcd_io.h"
#include "pcl/surface/convex_hull.h"
#include "pcl/filters/voxel_grid.h"
#include "pcl/filters/passthrough.h"
#include "pcl/filters/extract_indices.h"
#include "pcl/filters/project_inliers.h"
#include "pcl/filters/statistical_outlier_removal.h"
#include "pcl/sample_consensus/method_types.h"
#include "pcl/sample_consensus/impl/ransac.hpp"
#include "pcl/segmentation/sac_segmentation.h"
#include "pcl/segmentation/extract_clusters.h"
#include "pcl/segmentation/extract_polygonal_prism_data.h"
#include "pcl/visualization/pcl_visualizer.h"
#include "pcl_ias_sample_consensus/pcl_sac_model_orientation.h"
#include "dos_pcl/segmentation/door_detection_by_color_and_fixture.h"
Go to the source code of this file.
Typedefs | |
typedef pcl::PointXYZ | PointT |
Functions | |
bool | findBoxModel (boost::shared_ptr< const pcl::PointCloud< PointT > > cloud, pcl::PointCloud< pcl::Normal > nrmls, std::vector< double > &coeff, double eps_angle_=0.1, double success_probability_=0.99, int verbosity_level_=1) |
* | |
void | getAxesOrientedSurfaces (pcl::PointCloud< PointT > &input_cloud, pcl::PointCloud< pcl::Normal > &normals_cloud, Eigen::Vector3f axis, double epsilon_angle, double plane_threshold, int minimum_plane_inliers, int maximum_plane_iterations, int minimum_size_of_plane_cluster, double plane_inliers_clustering_tolerance, std::vector< pcl::PointCloud< PointT >::Ptr > &planar_surfaces, std::vector< std::string > &planar_surfaces_ids, std::vector< pcl::PointIndices::Ptr > &planar_surfaces_indices, std::vector< pcl::ModelCoefficients::Ptr > &planar_surfaces_coefficients, pcl::visualization::PCLVisualizer &viewer) |
void | getMinAndMax (boost::shared_ptr< const pcl::PointCloud< PointT > > cloud_, Eigen::VectorXf model_coefficients, boost::shared_ptr< pcl::SACModelOrientation< pcl::Normal > > model, std::vector< int > &min_max_indices, std::vector< float > &min_max_distances) |
* | |
float | getRGB (float r, float g, float b) |
int | main (int argc, char **argv) |
Main routine of the method. Segmentation of point cloud data. | |
Variables | |
double | center_radius = 0.085 |
[meters] | |
bool | clean = false |
double | cluster_tolerance = 0.020 |
[meters] | |
double | color_radius = 0.050 |
double | epsilon_angle = 0.010 |
[percentage] | |
bool | find_box_model = true |
double | fixture_cluster_tolerance = 0.025 |
[meters] | |
int | fixture_min_pts_per_cluster = 150 |
[points] | |
double | handle_clustering_tolerance = 0.050 |
[points] | |
double | height_of_ceiling = 0.050 |
[percentage] | |
double | height_of_floor = 0.025 |
double | height_of_walls = 0.750 |
[percentage] | |
double | init_radius = 0.035 |
int | maximum_plane_iterations = 1000 |
[points] | |
int | min_pts_per_cluster = 150 |
int | minimum_plane_inliers = 1000 |
[meters] | |
int | minimum_size_of_handle_cluster = 25 |
[meters] | |
int | minimum_size_of_plane_cluster = 100 |
[iterations] | |
double | plane_inliers_clustering_tolerance = 0.100 |
[points] | |
double | plane_threshold = 0.100 |
[radians] | |
bool | segmentation_by_color_and_fixture = false |
int | size_of_points = 1 |
int | std_limit = 2 |
bool | step = false |
[points] | |
bool | verbose = false |
typedef pcl::PointXYZ PointT |
Definition at line 68 of file segmentation_of_pointcloud.cpp.
bool findBoxModel | ( | boost::shared_ptr< const pcl::PointCloud< PointT > > | cloud, |
pcl::PointCloud< pcl::Normal > | nrmls, | ||
std::vector< double > & | coeff, | ||
double | eps_angle_ = 0.1 , |
||
double | success_probability_ = 0.99 , |
||
int | verbosity_level_ = 1 |
||
) |
*
actual model fitting happens here
: inliers are actually indexes in the indices_ array, but that is not set (by default it has all the points in the correct order)
: making things transparent for the outside... not really needed
best_model_ contains actually the samples used to find the best model!
: making things transparent for the outside... not really needed
Definition at line 184 of file segmentation_of_pointcloud.cpp.
void getAxesOrientedSurfaces | ( | pcl::PointCloud< PointT > & | input_cloud, |
pcl::PointCloud< pcl::Normal > & | normals_cloud, | ||
Eigen::Vector3f | axis, | ||
double | epsilon_angle, | ||
double | plane_threshold, | ||
int | minimum_plane_inliers, | ||
int | maximum_plane_iterations, | ||
int | minimum_size_of_plane_cluster, | ||
double | plane_inliers_clustering_tolerance, | ||
std::vector< pcl::PointCloud< PointT >::Ptr > & | planar_surfaces, | ||
std::vector< std::string > & | planar_surfaces_ids, | ||
std::vector< pcl::PointIndices::Ptr > & | planar_surfaces_indices, | ||
std::vector< pcl::ModelCoefficients::Ptr > & | planar_surfaces_coefficients, | ||
pcl::visualization::PCLVisualizer & | viewer | ||
) |
*
Definition at line 391 of file segmentation_of_pointcloud.cpp.
void getMinAndMax | ( | boost::shared_ptr< const pcl::PointCloud< PointT > > | cloud_, |
Eigen::VectorXf | model_coefficients, | ||
boost::shared_ptr< pcl::SACModelOrientation< pcl::Normal > > | model, | ||
std::vector< int > & | min_max_indices, | ||
std::vector< float > & | min_max_distances | ||
) |
*
Definition at line 134 of file segmentation_of_pointcloud.cpp.
float getRGB | ( | float | r, |
float | g, | ||
float | b | ||
) |
Definition at line 125 of file segmentation_of_pointcloud.cpp.
int main | ( | int | argc, |
char ** | argv | ||
) |
Main routine of the method. Segmentation of point cloud data.
*
Definition at line 700 of file segmentation_of_pointcloud.cpp.
double center_radius = 0.085 |
[meters]
Definition at line 94 of file segmentation_of_pointcloud.cpp.
Definition at line 104 of file segmentation_of_pointcloud.cpp.
double cluster_tolerance = 0.020 |
[meters]
Definition at line 92 of file segmentation_of_pointcloud.cpp.
double color_radius = 0.050 |
Definition at line 96 of file segmentation_of_pointcloud.cpp.
double epsilon_angle = 0.010 |
[percentage]
Definition at line 80 of file segmentation_of_pointcloud.cpp.
bool find_box_model = true |
Definition at line 109 of file segmentation_of_pointcloud.cpp.
double fixture_cluster_tolerance = 0.025 |
[meters]
Definition at line 93 of file segmentation_of_pointcloud.cpp.
int fixture_min_pts_per_cluster = 150 |
[points]
Definition at line 100 of file segmentation_of_pointcloud.cpp.
double handle_clustering_tolerance = 0.050 |
[points]
Definition at line 89 of file segmentation_of_pointcloud.cpp.
double height_of_ceiling = 0.050 |
[percentage]
Definition at line 76 of file segmentation_of_pointcloud.cpp.
double height_of_floor = 0.025 |
Definition at line 75 of file segmentation_of_pointcloud.cpp.
double height_of_walls = 0.750 |
[percentage]
Definition at line 77 of file segmentation_of_pointcloud.cpp.
double init_radius = 0.035 |
Definition at line 95 of file segmentation_of_pointcloud.cpp.
int maximum_plane_iterations = 1000 |
[points]
Definition at line 83 of file segmentation_of_pointcloud.cpp.
int min_pts_per_cluster = 150 |
Definition at line 99 of file segmentation_of_pointcloud.cpp.
int minimum_plane_inliers = 1000 |
[meters]
Definition at line 82 of file segmentation_of_pointcloud.cpp.
int minimum_size_of_handle_cluster = 25 |
[meters]
Definition at line 88 of file segmentation_of_pointcloud.cpp.
int minimum_size_of_plane_cluster = 100 |
[iterations]
Definition at line 86 of file segmentation_of_pointcloud.cpp.
double plane_inliers_clustering_tolerance = 0.100 |
[points]
Definition at line 87 of file segmentation_of_pointcloud.cpp.
double plane_threshold = 0.100 |
[radians]
Definition at line 81 of file segmentation_of_pointcloud.cpp.
Definition at line 110 of file segmentation_of_pointcloud.cpp.
int size_of_points = 1 |
Definition at line 106 of file segmentation_of_pointcloud.cpp.
int std_limit = 2 |
Definition at line 98 of file segmentation_of_pointcloud.cpp.
[points]
Definition at line 103 of file segmentation_of_pointcloud.cpp.
Definition at line 105 of file segmentation_of_pointcloud.cpp.