libmove3d
3.13.0
|
00001 #ifndef GP_GRASP_H 00002 #define GP_GRASP_H 00003 00004 #include "../graspPlanning/include/graspPlanning.h" 00005 #include "../graspPlanning/include/gpContact.h" 00006 #include "../graspPlanning/include/gpPlacement.h" 00007 00008 // #include "GraspPlanning-pkg.h" 00009 00010 00013 class gpGrasp 00014 { 00015 public: 00016 bool autoGen; 00017 int ID; 00018 double stability; 00020 00021 double curvatureScore; 00022 double centroidScore; 00024 double IKscore; 00025 double visibility; 00026 double quality; 00027 p3d_matrix4 frame; 00028 std::vector<gpContact> contacts; 00029 int handID; 00030 p3d_rob *object; 00031 std::string object_name; 00032 double finger_opening; 00034 enum gpHand_type hand_type; 00035 std::vector<double> config; 00036 std::vector<double> openConfig; 00037 bool tested; 00039 gpPlacement recomPlacement; 00041 gpGrasp(); 00042 gpGrasp(const gpGrasp &grasp); 00043 gpGrasp(const gpHand_properties &handProp); 00044 ~gpGrasp(); 00045 gpGrasp & operator = (const gpGrasp &grasp); 00046 bool operator == (const gpGrasp &grasp); 00047 int print(); 00048 int printInFile(const char *filename); 00049 int draw(double cone_length, int cone_nb_slices= 10); 00050 int computeStability(); 00051 int computeQuality(); 00052 double configCost(); 00053 int removeContactsTooCloseToEdge(double angleThreshold, double distancethreshold); 00054 friend double gpGraspDistance(const gpGrasp &grasp1, const gpGrasp &grasp2); 00055 int contactCentroid(p3d_vector3 centroid); 00056 int direction(p3d_vector3 direction) const; 00057 double similarity(const gpGrasp &grasp); 00058 int computeOpenConfig(p3d_rob *robot, p3d_rob *object, bool environment); 00059 }; 00060 00061 bool gpCompareGraspQuality(const gpGrasp &grasp1, const gpGrasp &grasp2); 00062 bool gpReversedCompareGraspQuality(const gpGrasp &grasp1, const gpGrasp &grasp2); 00063 bool gpCompareGraspVisibility(const gpGrasp &grasp1, const gpGrasp &grasp2); 00064 bool gpCompareGraspNumberOfContacts(const gpGrasp &grasp1, const gpGrasp &grasp2); 00065 00069 class gpDoubleGrasp 00070 { 00071 public: 00072 int ID; 00073 gpGrasp grasp1, grasp2; 00074 double distanceScore; 00076 double stability; 00077 double quality; 00079 gpDoubleGrasp(); 00080 gpDoubleGrasp(const gpGrasp &graspA, const gpGrasp &graspB); 00081 gpDoubleGrasp(const gpDoubleGrasp &dgrasp); 00082 ~gpDoubleGrasp(); 00083 int setFromSingleGrasps(const gpGrasp &graspA, const gpGrasp &graspB); 00084 gpDoubleGrasp & operator = (const gpDoubleGrasp &dgrasp); 00085 bool operator < (const gpDoubleGrasp &grasp); 00086 int print(); 00087 int draw(double cone_length, int cone_nb_slices= 10); 00088 int computeStability(); 00089 int computeQuality(); 00090 int computeBestObjectOrientation(p3d_matrix4 torsoPose, p3d_matrix4 objectPose); 00091 }; 00092 00093 int gpNormalize_distance_score(std::list<gpDoubleGrasp> &list); 00094 int gpNormalize_stability(std::list<gpDoubleGrasp> &list); 00095 00096 00097 #endif 00098