#include <point_cloud_segmentation.h>
Public Member Functions | |
| bool | cloudsIntersect (XYZPointCloud cloud0, XYZPointCloud cloud1) | 
| bool | cloudsIntersect (XYZPointCloud cloud0, XYZPointCloud cloud1, double thresh) | 
| void | clusterProtoObjects (XYZPointCloud &objects_cloud, ProtoObjects &objs) | 
| cv::Mat | displayObjectImage (cv::Mat &obj_img, std::string win_name="projected objects", bool use_display=true) | 
| void | downsampleCloud (XYZPointCloud &cloud_in, XYZPointCloud &cloud_down) | 
| void | findTabletopObjects (XYZPointCloud &input_cloud, ProtoObjects &objs, bool use_mps=false) | 
| void | findTabletopObjects (XYZPointCloud &input_cloud, ProtoObjects &objs, XYZPointCloud &objs_cloud, bool use_mps=false) | 
| void | findTabletopObjects (XYZPointCloud &input_cloud, ProtoObjects &objs, XYZPointCloud &objs_cloud, XYZPointCloud &plane_cloud, bool use_mps=false) | 
| void | fitCylinderRANSAC (ProtoObject &obj, XYZPointCloud &cylinder_cloud, pcl16::ModelCoefficients &cylinder) | 
| void | fitSphereRANSAC (ProtoObject &obj, XYZPointCloud &sphere_cloud, pcl16::ModelCoefficients &sphere) | 
| void | getMovedRegions (XYZPointCloud &prev_cloud, XYZPointCloud &cur_cloud, ProtoObjects &moved_regions, std::string suf="") | 
| Eigen::Vector4f | getTableCentroid () const | 
| void | getTablePlane (XYZPointCloud &cloud, XYZPointCloud &objs_cloud, XYZPointCloud &plane_cloud, Eigen::Vector4f ¢er, bool find_hull=false, bool find_centroid=false) | 
| void | getTablePlaneMPS (XYZPointCloud &cloud, XYZPointCloud &objs_cloud, XYZPointCloud &plane_cloud, Eigen::Vector4f ¢er, bool find_hull=false, bool find_centroid=false) | 
| double | ICPBoundarySamples (XYZPointCloud &hull_t_0, XYZPointCloud &hull_t_1, Eigen::Matrix4f &transform, XYZPointCloud &aligned) | 
| double | ICPProtoObjects (ProtoObject &a, ProtoObject &b, Eigen::Matrix4f &transform) | 
| void | lineCloudIntersection (XYZPointCloud &cloud, Eigen::Vector3f vec, Eigen::Vector4f base, XYZPointCloud &line_cloud) | 
| void | lineCloudIntersectionEndPoints (XYZPointCloud &cloud, Eigen::Vector3f vec, Eigen::Vector4f base, std::vector< pcl16::PointXYZ > &end_points) | 
| void | matchMovedRegions (ProtoObjects &objs, ProtoObjects &moved_regions) | 
| PointCloudSegmentation (boost::shared_ptr< tf::TransformListener > tf) | |
| bool | pointIntersectsCloud (XYZPointCloud cloud, geometry_msgs::Point pt, double thresh) | 
| float | pointLineXYDist (pcl16::PointXYZ p, Eigen::Vector3f vec, Eigen::Vector4f base) | 
| void | projectPointCloudIntoImage (XYZPointCloud &cloud, cv::Mat &lbl_img, std::string target_frame, unsigned int id=1) | 
| void | projectPointCloudIntoImage (XYZPointCloud &cloud, cv::Mat &lbl_img) | 
| cv::Point | projectPointIntoImage (pcl16::PointXYZ cur_point_pcl, std::string point_frame, std::string target_frame) | 
| cv::Point | projectPointIntoImage (geometry_msgs::PointStamped cur_point) | 
| cv::Point | projectPointIntoImage (geometry_msgs::PointStamped cur_point, std::string target_frame) | 
| cv::Point | projectPointIntoImage (Eigen::Vector3f cur_point_eig, std::string point_frame, std::string target_frame) | 
| cv::Mat | projectProtoObjectIntoImage (ProtoObject &obj, cv::Size img_size, std::string target_frame) | 
| cv::Mat | projectProtoObjectsIntoImage (ProtoObjects &objs, cv::Size img_size, std::string target_frame) | 
Static Public Member Functions | |
| static double | dist (pcl16::PointXYZ a, pcl16::PointXYZ b) | 
| static double | dist (geometry_msgs::Point b, pcl16::PointXYZ a) | 
| static double | dist (pcl16::PointXYZ a, geometry_msgs::Point b) | 
| static double | sqrDist (Eigen::Vector3f &a, pcl16::PointXYZ &b) | 
| static double | sqrDist (Eigen::Vector4f &a, Eigen::Vector4f &b) | 
| static double | sqrDist (pcl16::PointXYZ a, pcl16::PointXYZ b) | 
| static double | sqrDistXY (pcl16::PointXYZ a, pcl16::PointXYZ b) | 
Public Attributes | |
| sensor_msgs::CameraInfo | cam_info_ | 
| double | cloud_diff_thresh_ | 
| double | cloud_intersect_thresh_ | 
| double | cluster_tolerance_ | 
| std::vector< cv::Vec3f > | colors_ | 
| std_msgs::Header | cur_camera_header_ | 
| double | cylinder_ransac_angle_thresh_ | 
| double | cylinder_ransac_thresh_ | 
| double | hull_alpha_ | 
| double | icp_max_cor_dist_ | 
| int | icp_max_iters_ | 
| double | icp_ransac_thresh_ | 
| double | icp_transform_eps_ | 
| int | max_cluster_size_ | 
| double | max_table_z_ | 
| double | max_workspace_x_ | 
| double | max_workspace_z_ | 
| int | min_cluster_size_ | 
| double | min_table_z_ | 
| double | min_workspace_x_ | 
| double | min_workspace_z_ | 
| int | moved_count_thresh_ | 
| double | mps_min_angle_thresh_ | 
| double | mps_min_dist_thresh_ | 
| int | mps_min_inliers_ | 
| int | num_downsamples_ | 
| bool | optimize_cylinder_coefficients_ | 
| double | sphere_ransac_thresh_ | 
| double | table_ransac_angle_thresh_ | 
| double | table_ransac_thresh_ | 
| bool | use_voxel_down_ | 
| double | voxel_down_res_ | 
Protected Attributes | |
| Eigen::Vector4f | table_centroid_ | 
| boost::shared_ptr < tf::TransformListener >  | tf_ | 
Definition at line 85 of file point_cloud_segmentation.h.
| tabletop_pushing::PointCloudSegmentation::PointCloudSegmentation | ( | boost::shared_ptr< tf::TransformListener > | tf | ) | 
Definition at line 85 of file point_cloud_segmentation.cpp.
| bool tabletop_pushing::PointCloudSegmentation::cloudsIntersect | ( | XYZPointCloud | cloud0, | 
| XYZPointCloud | cloud1 | ||
| ) | 
Naively determine if two point clouds intersect based on distance threshold between points.
| cloud0 | First cloud for interesection test | 
| cloud1 | Second cloud for interesection test | 
Definition at line 625 of file point_cloud_segmentation.cpp.
| bool tabletop_pushing::PointCloudSegmentation::cloudsIntersect | ( | XYZPointCloud | cloud0, | 
| XYZPointCloud | cloud1, | ||
| double | thresh | ||
| ) | 
Definition at line 647 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::clusterProtoObjects | ( | XYZPointCloud & | objects_cloud, | 
| ProtoObjects & | objs | ||
| ) | 
Function to segment point cloud regions using euclidean clustering
| objects_cloud | The cloud of objects to cluster | 
| objs | [Returned] The independent clusters | 
Definition at line 393 of file point_cloud_segmentation.cpp.
| cv::Mat tabletop_pushing::PointCloudSegmentation::displayObjectImage | ( | cv::Mat & | obj_img, | 
| std::string | win_name = "projected objects",  | 
        ||
| bool | use_display = true  | 
        ||
| ) | 
Visualization function of proto objects projected into an image
| obj_img | The projected objects image | 
| objs | The set of proto objects | 
Definition at line 871 of file point_cloud_segmentation.cpp.
| static double tabletop_pushing::PointCloudSegmentation::dist | ( | pcl16::PointXYZ | a, | 
| pcl16::PointXYZ | b | ||
| ) |  [inline, static] | 
        
Definition at line 193 of file point_cloud_segmentation.h.
| static double tabletop_pushing::PointCloudSegmentation::dist | ( | geometry_msgs::Point | b, | 
| pcl16::PointXYZ | a | ||
| ) |  [inline, static] | 
        
Definition at line 201 of file point_cloud_segmentation.h.
| static double tabletop_pushing::PointCloudSegmentation::dist | ( | pcl16::PointXYZ | a, | 
| geometry_msgs::Point | b | ||
| ) |  [inline, static] | 
        
Definition at line 206 of file point_cloud_segmentation.h.
| void tabletop_pushing::PointCloudSegmentation::downsampleCloud | ( | XYZPointCloud & | cloud_in, | 
| XYZPointCloud & | cloud_down | ||
| ) | 
Filter a point cloud to only be above the estimated table and within the workspace in x, then downsample the voxels.
| cloud_in | The cloud to filter and downsample | 
Definition at line 798 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::findTabletopObjects | ( | XYZPointCloud & | input_cloud, | 
| ProtoObjects & | objs, | ||
| bool | use_mps = false  | 
        ||
| ) | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| objs | [Returned] The object clusters. | 
| extract_table | True if the table plane should be extracted | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| extract_table | True if the table plane should be extracted | 
Definition at line 301 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::findTabletopObjects | ( | XYZPointCloud & | input_cloud, | 
| ProtoObjects & | objs, | ||
| XYZPointCloud & | objs_cloud, | ||
| bool | use_mps = false  | 
        ||
| ) | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| objs | [Returned] The object clusters. | 
| objs_cloud | The point cloud containing the object points. | 
| extract_table | True if the table plane should be extracted | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| objs_cloud | The point cloud containing the object points. | 
| extract_table | True if the table plane should be extracted | 
Definition at line 316 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::findTabletopObjects | ( | XYZPointCloud & | input_cloud, | 
| ProtoObjects & | objs, | ||
| XYZPointCloud & | objs_cloud, | ||
| XYZPointCloud & | plane_cloud, | ||
| bool | use_mps = false  | 
        ||
| ) | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| objs | [Returned] The object clusters. | 
| objs_cloud | The point cloud containing the object points. | 
| plane_cloud | The point cloud containing the table plane points. | 
| extract_table | True if the table plane should be extracted | 
Function to segment independent spatial regions from a supporting plane
| input_cloud | The point cloud to operate on. | 
| objs_cloud | The point cloud containing the object points. | 
| plane_cloud | The point cloud containing the table plane points. | 
| extract_table | True if the table plane should be extracted | 
Definition at line 333 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::fitCylinderRANSAC | ( | ProtoObject & | obj, | 
| XYZPointCloud & | cylinder_cloud, | ||
| pcl16::ModelCoefficients & | coefficients | ||
| ) | 
Method to fit a cylinder to a segmented object
| obj | The segmented object we are modelling as a cylinder | 
| cylinder_cloud | The cloud resulting from the cylinder fit | 
| coefficients | [Returned] The model of the cylinder | 
Definition at line 565 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::fitSphereRANSAC | ( | ProtoObject & | obj, | 
| XYZPointCloud & | sphere_cloud, | ||
| pcl16::ModelCoefficients & | coefficients | ||
| ) | 
Method to fit a sphere to a segmented object
| obj | The segmented object we are modelling as a sphere | 
| sphere_cloud | The cloud resulting from the sphere fit | 
| coefficients | [Returned] The model of the sphere | 
Definition at line 599 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::getMovedRegions | ( | XYZPointCloud & | prev_cloud, | 
| XYZPointCloud & | cur_cloud, | ||
| ProtoObjects & | moved, | ||
| std::string | suf = ""  | 
        ||
| ) | 
Find the regions that have moved between two point clouds
| prev_cloud | The first cloud to use in differencing | 
| cur_cloud | The second cloud to use | 
| moved_regions | [Returned] The new set of objects that have moved in the second cloud | 
| suf | [Optional] | 
Definition at line 505 of file point_cloud_segmentation.cpp.
| Eigen::Vector4f tabletop_pushing::PointCloudSegmentation::getTableCentroid | ( | ) |  const [inline] | 
        
Definition at line 328 of file point_cloud_segmentation.h.
| void tabletop_pushing::PointCloudSegmentation::getTablePlane | ( | XYZPointCloud & | cloud, | 
| XYZPointCloud & | objs_cloud, | ||
| XYZPointCloud & | plane_cloud, | ||
| Eigen::Vector4f & | center, | ||
| bool | find_hull = false,  | 
        ||
| bool | find_centroid = false  | 
        ||
| ) | 
Function to find the table plane in the image by plane RANSAC
| cloud | The input cloud | 
| objs_cloud | [Returned] the cloud not containing the table plane | 
| plane_cloud | [Returned the cloud containing the plane | 
| center | [Returned] the center of the table plane | 
| find_hull | set true to estimate the extent of the plane | 
Definition at line 97 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::getTablePlaneMPS | ( | XYZPointCloud & | cloud, | 
| XYZPointCloud & | objs_cloud, | ||
| XYZPointCloud & | plane_cloud, | ||
| Eigen::Vector4f & | center, | ||
| bool | find_hull = false,  | 
        ||
| bool | find_centroid = false  | 
        ||
| ) | 
Function to find the table plane in the image by using multi-plane segmentation (requires structured input cloud)
| cloud | The input cloud | 
| objs_cloud | [Returned] the cloud not containing the table plane | 
| plane_cloud | [Returned the cloud containing the plane | 
| center | [Returned] the center of the table plane | 
| find_hull | set true to estimate the extent of the plane | 
Definition at line 217 of file point_cloud_segmentation.cpp.
| double tabletop_pushing::PointCloudSegmentation::ICPBoundarySamples | ( | XYZPointCloud & | hull_t_0, | 
| XYZPointCloud & | hull_t_1, | ||
| Eigen::Matrix4f & | transform, | ||
| XYZPointCloud & | aligned | ||
| ) | 
Perform Iterated Closest Point between two object boundaries.
| a | The first object boundary | 
| b | The second object boundary | 
| transform | The transform from a to b | 
Definition at line 479 of file point_cloud_segmentation.cpp.
| double tabletop_pushing::PointCloudSegmentation::ICPProtoObjects | ( | ProtoObject & | a, | 
| ProtoObject & | b, | ||
| Eigen::Matrix4f & | transform | ||
| ) | 
Perform Iterated Closest Point between two proto objects.
| a | The first object | 
| b | The second object | 
Definition at line 451 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::lineCloudIntersection | ( | XYZPointCloud & | cloud, | 
| Eigen::Vector3f | vec, | ||
| Eigen::Vector4f | base, | ||
| XYZPointCloud & | line_cloud | ||
| ) | 
Definition at line 683 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::lineCloudIntersectionEndPoints | ( | XYZPointCloud & | cloud, | 
| Eigen::Vector3f | vec, | ||
| Eigen::Vector4f | base, | ||
| std::vector< pcl16::PointXYZ > & | end_points | ||
| ) | 
Definition at line 706 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::matchMovedRegions | ( | ProtoObjects & | objs, | 
| ProtoObjects & | moved_regions | ||
| ) | 
Match moved regions to previously extracted protoobjects
| objs | The previously extracted objects | 
| moved_regions | The regions that have been detected as having moved | 
Definition at line 539 of file point_cloud_segmentation.cpp.
| bool tabletop_pushing::PointCloudSegmentation::pointIntersectsCloud | ( | XYZPointCloud | cloud, | 
| geometry_msgs::Point | pt, | ||
| double | thresh | ||
| ) | 
Definition at line 661 of file point_cloud_segmentation.cpp.
| float tabletop_pushing::PointCloudSegmentation::pointLineXYDist | ( | pcl16::PointXYZ | p, | 
| Eigen::Vector3f | vec, | ||
| Eigen::Vector4f | base | ||
| ) | 
Definition at line 671 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::projectPointCloudIntoImage | ( | XYZPointCloud & | cloud, | 
| cv::Mat & | lbl_img, | ||
| std::string | target_frame, | ||
| unsigned int | id = 1  | 
        ||
| ) | 
Definition at line 894 of file point_cloud_segmentation.cpp.
| void tabletop_pushing::PointCloudSegmentation::projectPointCloudIntoImage | ( | XYZPointCloud & | cloud, | 
| cv::Mat & | lbl_img | ||
| ) | 
Definition at line 932 of file point_cloud_segmentation.cpp.
| cv::Point tabletop_pushing::PointCloudSegmentation::projectPointIntoImage | ( | pcl16::PointXYZ | cur_point_pcl, | 
| std::string | point_frame, | ||
| std::string | target_frame | ||
| ) | 
| cv::Point tabletop_pushing::PointCloudSegmentation::projectPointIntoImage | ( | geometry_msgs::PointStamped | cur_point | ) | 
Definition at line 944 of file point_cloud_segmentation.cpp.
| cv::Point tabletop_pushing::PointCloudSegmentation::projectPointIntoImage | ( | geometry_msgs::PointStamped | cur_point, | 
| std::string | target_frame | ||
| ) | 
Definition at line 950 of file point_cloud_segmentation.cpp.
| cv::Point tabletop_pushing::PointCloudSegmentation::projectPointIntoImage | ( | Eigen::Vector3f | cur_point_eig, | 
| std::string | point_frame, | ||
| std::string | target_frame | ||
| ) | 
Definition at line 908 of file point_cloud_segmentation.cpp.
| cv::Mat tabletop_pushing::PointCloudSegmentation::projectProtoObjectIntoImage | ( | ProtoObject & | obj, | 
| cv::Size | img_size, | ||
| std::string | target_frame | ||
| ) | 
Method to project the current proto object into an image
| obj | The objects | 
| img_in | An image of correct size for the projection | 
| target_frame | The frame of the associated image | 
Definition at line 857 of file point_cloud_segmentation.cpp.
| cv::Mat tabletop_pushing::PointCloudSegmentation::projectProtoObjectsIntoImage | ( | ProtoObjects & | objs, | 
| cv::Size | img_size, | ||
| std::string | target_frame | ||
| ) | 
Method to project the current proto objects into an image
| objs | The set of objects | 
| img_in | An image of correct size for the projection | 
| target_frame | The frame of the associated image | 
Definition at line 835 of file point_cloud_segmentation.cpp.
| static double tabletop_pushing::PointCloudSegmentation::sqrDist | ( | Eigen::Vector3f & | a, | 
| pcl16::PointXYZ & | b | ||
| ) |  [inline, static] | 
        
Definition at line 214 of file point_cloud_segmentation.h.
| static double tabletop_pushing::PointCloudSegmentation::sqrDist | ( | Eigen::Vector4f & | a, | 
| Eigen::Vector4f & | b | ||
| ) |  [inline, static] | 
        
Definition at line 222 of file point_cloud_segmentation.h.
| static double tabletop_pushing::PointCloudSegmentation::sqrDist | ( | pcl16::PointXYZ | a, | 
| pcl16::PointXYZ | b | ||
| ) |  [inline, static] | 
        
Definition at line 230 of file point_cloud_segmentation.h.
| static double tabletop_pushing::PointCloudSegmentation::sqrDistXY | ( | pcl16::PointXYZ | a, | 
| pcl16::PointXYZ | b | ||
| ) |  [inline, static] | 
        
Definition at line 238 of file point_cloud_segmentation.h.
| sensor_msgs::CameraInfo tabletop_pushing::PointCloudSegmentation::cam_info_ | 
Definition at line 356 of file point_cloud_segmentation.h.
Definition at line 348 of file point_cloud_segmentation.h.
Definition at line 352 of file point_cloud_segmentation.h.
Definition at line 347 of file point_cloud_segmentation.h.
Definition at line 338 of file point_cloud_segmentation.h.
Definition at line 357 of file point_cloud_segmentation.h.
Definition at line 367 of file point_cloud_segmentation.h.
Definition at line 366 of file point_cloud_segmentation.h.
Definition at line 353 of file point_cloud_segmentation.h.
Definition at line 361 of file point_cloud_segmentation.h.
Definition at line 359 of file point_cloud_segmentation.h.
Definition at line 362 of file point_cloud_segmentation.h.
Definition at line 360 of file point_cloud_segmentation.h.
Definition at line 350 of file point_cloud_segmentation.h.
Definition at line 340 of file point_cloud_segmentation.h.
Definition at line 342 of file point_cloud_segmentation.h.
Definition at line 344 of file point_cloud_segmentation.h.
Definition at line 349 of file point_cloud_segmentation.h.
Definition at line 339 of file point_cloud_segmentation.h.
Definition at line 341 of file point_cloud_segmentation.h.
Definition at line 343 of file point_cloud_segmentation.h.
Definition at line 358 of file point_cloud_segmentation.h.
Definition at line 364 of file point_cloud_segmentation.h.
Definition at line 365 of file point_cloud_segmentation.h.
Definition at line 363 of file point_cloud_segmentation.h.
Definition at line 355 of file point_cloud_segmentation.h.
Definition at line 369 of file point_cloud_segmentation.h.
Definition at line 368 of file point_cloud_segmentation.h.
Eigen::Vector4f tabletop_pushing::PointCloudSegmentation::table_centroid_ [protected] | 
        
Definition at line 335 of file point_cloud_segmentation.h.
Definition at line 346 of file point_cloud_segmentation.h.
Definition at line 345 of file point_cloud_segmentation.h.
boost::shared_ptr<tf::TransformListener> tabletop_pushing::PointCloudSegmentation::tf_ [protected] | 
        
Definition at line 334 of file point_cloud_segmentation.h.
Definition at line 354 of file point_cloud_segmentation.h.
Definition at line 351 of file point_cloud_segmentation.h.