GrasperRequest.h
Go to the documentation of this file.00001
00002 #ifndef INCLUDED_GrasperRequest_h_
00003 #define INCLUDED_GrasperRequest_h_
00004
00005 #include "Behaviors/StateNode.h"
00006 #include "DualCoding/ShapeRoot.h"
00007 #include "Planners/Manipulation/ShapeSpacePlanner2DR.h"
00008 #include "Planners/Manipulation/ShapeSpacePlanner3DR.h"
00009
00010 using namespace std;
00011 using namespace DualCoding;
00012
00013
00014
00015 class GrasperRequest {
00016 public:
00017 #ifdef TGT_CALLIOPE
00018 typedef ShapeSpacePlanner3DR<NumArmJoints> Planner;
00019 typedef Planner::NodeType_t NodeType_t;
00020 typedef PlannerObstacle3D PlannerObstacle;
00021 #else
00022 typedef ShapeSpacePlanner2DR<NumArmJoints> Planner;
00023 typedef Planner::NodeType_t NodeType_t;
00024 typedef PlannerObstacle2D PlannerObstacle;
00025 #endif
00026 typedef NodeType_t::NodeValue_t NodeValue_t;
00027
00028 private:
00029 friend class Grasper;
00030
00031 typedef unsigned int GrasperVerbosity_t;
00032
00033
00034 PlannerObstacle* objectPlannerObstacle;
00035
00036 public:
00037
00038
00039 enum GrasperRequestType_t {
00040 checkGraspable,
00041 checkMovable,
00042 checkRestable,
00043 computeReach,
00044 reach,
00045 grasp,
00046 touch,
00047 release,
00048 moveTo,
00049 rest,
00050
00051 sweep,
00052 computeMove,
00053 computeRest
00054 };
00055
00056
00057 enum GrasperErrorType_t {
00058 noError = 0,
00059 someError,
00060 invalidRequest,
00061 noGraspState,
00062 noGraspPath,
00063 noTargetState,
00064 noTargetPath,
00065 noRestPath,
00066 badGrasp,
00067 badMove,
00068 pickUpUnreachable,
00069 dropOffUnreachable
00070 };
00071
00072
00073 enum GrasperPathType_t {
00074 noPath,
00075 moveFree,
00076 moveConstrained,
00077 disengage
00078 };
00079
00080
00081 enum GrasperRestType_t {
00082 stationary,
00083 settleArm,
00084 settleBodyAndArm
00085 };
00086
00087 ~GrasperRequest();
00088
00089
00090 GrasperRequest(GrasperRequestType_t _type);
00091
00092
00093 GrasperRequest(const GrasperRequest &req);
00094
00095
00096 GrasperErrorType_t validateRequest();
00097
00098
00099 GrasperRequestType_t requestType;
00100
00101
00102 GrasperRestType_t restType;
00103
00104
00105 NodeValue_t armRestState;
00106
00107 GrasperVerbosity_t setVerbosity;
00108 GrasperVerbosity_t clearVerbosity;
00109
00110
00111
00112 unsigned int effectorOffset;
00113
00114 unsigned int rrtMaxIterations;
00115
00116 float rrtInflation;
00117
00118 NodeValue_t rrtInterpolationStep;
00119
00120
00121 float armTimeFactor;
00122
00123
00124 bool openGripperOnRest;
00125
00126
00127 ShapeRoot object;
00128
00129
00130 ShapeRoot targetLocation;
00131
00132
00133 std::vector<std::pair<float, float> > gripperAngleRangesX;
00134
00135
00136 std::vector<std::pair<float, float> > gripperAngleRangesY;
00137
00138
00139 std::vector<std::pair<float, float> > gripperAngleRangesZ;
00140
00141
00142 int maxNumberOfAngles;
00143
00144
00145 float angleResolution;
00146
00147
00148 std::vector<ShapeRoot> sweepObjects;
00149
00150
00151 std::vector<ShapeRoot> envObstacles;
00152
00153
00154 std::vector<PlannerObstacle*> plannerObstacles;
00155
00156
00157 std::vector<NodeValue_t> moveConstrainedPath;
00158
00159 std::vector<NodeValue_t> moveFreePath;
00160
00161 std::vector<NodeValue_t> disengagePath;
00162
00163
00164 AdmissibilityPredicate<NodeType_t> *predicate;
00165
00166
00167 bool displayPath;
00168
00169
00170 bool displayTree;
00171
00172
00173 BehaviorBase* requestingBehavior;
00174
00175
00176 GrasperVerbosity_t verbosity;
00177
00178 GrasperPathType_t populateEventPathWith;
00179
00180 protected:
00181 unsigned int requestID;
00182 GrasperRequest& operator=(const GrasperRequest&);
00183 };
00184
00185 typedef GrasperRequest::GrasperErrorType_t GraspError;
00186
00187 #endif