libmove3d  3.13.0
/home/slemaign/softs-local/BioMove3D-git/graspPlanning/include/gpGrasp.h
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 
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines