00001 00013 #ifndef RAIL_PICK_AND_PLACE_PCL_GRASP_MODEL_H_ 00014 #define RAIL_PICK_AND_PLACE_PCL_GRASP_MODEL_H_ 00015 00016 // ROS 00017 #include <graspdb/GraspModel.h> 00018 00019 // PCL 00020 #include <pcl/point_cloud.h> 00021 #include <pcl/point_types.h> 00022 00023 namespace rail 00024 { 00025 namespace pick_and_place 00026 { 00027 00036 class PCLGraspModel : public graspdb::GraspModel 00037 { 00038 public: 00047 PCLGraspModel(const graspdb::GraspModel &grasp_model = graspdb::GraspModel()); 00048 00056 bool isOriginal() const; 00057 00065 void setOriginal(const bool original); 00066 00074 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr &getPCLPointCloud() const; 00075 00084 const sensor_msgs::PointCloud2 &getPointCloud() const; 00085 00094 sensor_msgs::PointCloud2 &getPointCloud(); 00095 00103 void setPointCloud(const sensor_msgs::PointCloud2 &point_cloud); 00104 00112 double getAverageRed() const; 00113 00121 double getAverageGreen() const; 00122 00130 double getAverageBlue() const; 00131 00139 graspdb::GraspModel toGraspModel() const; 00140 00141 private: 00143 bool original_; 00145 pcl::PointCloud<pcl::PointXYZRGB>::Ptr pc_; 00147 double avg_r_, avg_g_, avg_b_; 00148 }; 00149 00150 } 00151 } 00152 00153 #endif