PointCloudRecognizer.h
Go to the documentation of this file.
00001 
00013 #ifndef RAIL_PICK_AND_PLACE_POINT_CLOUD_RECOGNIZER_H_
00014 #define RAIL_PICK_AND_PLACE_POINT_CLOUD_RECOGNIZER_H_
00015 
00016 // RAIL Recognition
00017 #include "PCLGraspModel.h"
00018 
00019 // ROS
00020 #include <graspdb/graspdb.h>
00021 #include <sensor_msgs/PointCloud.h>
00022 #include <ros/ros.h>
00023 #include <rail_manipulation_msgs/SegmentedObject.h>
00024 #include <tf2/LinearMath/Transform.h>
00025 
00026 // PCL
00027 #include <pcl/point_cloud.h>
00028 #include <pcl/point_types.h>
00029 
00030 namespace rail
00031 {
00032 namespace pick_and_place
00033 {
00034 
00042 class PointCloudRecognizer
00043 {
00044 public:
00046   static const double ALPHA = 0.5;
00048   static const double SCORE_CONFIDENCE_THRESHOLD = 1.1;
00050   static const double OVERLAP_THRESHOLD = 0.6;
00051 
00057   PointCloudRecognizer();
00058 
00071   bool recognizeObject(rail_manipulation_msgs::SegmentedObject &object,
00072       const std::vector<PCLGraspModel> &candidates) const;
00073 
00074 private:
00087   double scoreRegistration(pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr candidate,
00088       pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr object, tf2::Transform &tf_icp) const;
00089 
00100   void computeGraspList(const tf2::Transform &tf_icp, const geometry_msgs::Point &centroid,
00101       const std::vector<graspdb::Grasp> &candidate_grasps, std::vector<graspdb::Grasp> &grasps) const;
00102 };
00103 
00104 }
00105 }
00106 
00107 #endif


rail_recognition
Author(s): David Kent , Russell Toris , bhetherman
autogenerated on Sun Mar 6 2016 11:39:13