Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

GrasperRequest.cc

Go to the documentation of this file.
00001 #include "Shared/RobotInfo.h"
00002 #if (defined(TGT_HAS_ARMS) || !defined(STRICT_TGT_MODEL)) && !defined(TGT_IS_AIBO)
00003 
00004 #if defined(TGT_HANDEYE) or defined(TGT_CHIARA) or defined(TGT_CHIARA2)
00005 #  include "Crew/CBracketGrasperPredicate.h"
00006 #endif
00007 #include "Crew/GrasperRequest.h"
00008 
00009 GrasperRequest::GrasperRequest(GrasperRequestType_t _type) :
00010   objectPlannerObstacle(NULL),
00011   requestType(_type),
00012   graspStrategy(sideGrasp),
00013   restType(GrasperRequest::stationary),
00014   armRestState(),
00015   setVerbosity(0),
00016   clearVerbosity(0),
00017   effectorOffset(),
00018   rrtMaxIterations(2000),
00019   rrtInflation(10),
00020   rrtInterpolationStep(),
00021   armTimeFactor(1.0f),
00022   openGripperOnRest(false),
00023   object(), 
00024   targetLocation(), 
00025   allowBodyMotion(false),
00026   gripperAngleRangesX(),
00027   gripperAngleRangesY(),
00028   gripperAngleRangesZ(),
00029   maxNumberOfAngles(1000000000),
00030   angleResolution((float)M_PI/12),
00031   sweepObjects(), 
00032   envObstacles(), 
00033   predicate(NULL),
00034   populateEventPathWith(noPath),
00035   pilotreq(PilotTypes::goToShape),
00036   mapreq(NULL),
00037   displayPath(false),
00038   displayTree(false),
00039   approachPose(),
00040   transportPose(),
00041   withdrawPose(),
00042   approachPath(),
00043   deliverPath(),
00044   releasePath(),
00045   requestingBehavior(),
00046   verbosity(0),
00047   requestID(0)
00048 { 
00049 #if defined(TGT_HANDEYE) or defined(TGT_CHIARA) or defined(TGT_CHIARA2)
00050   predicate = new CBracketGrasperPredicate<NumArmJoints>();
00051   effectorOffset = RobotInfo::GripperFrameOffset;
00052 #endif
00053 #if defined(TGT_CHIARA) or defined(TGT_CHIARA2)
00054   restType = GrasperRequest::settleBodyAndArm;
00055 #endif
00056 #if defined(TGT_HAS_GRIPPER)
00057   effectorOffset = RobotInfo::GripperFrameOffset;
00058 #endif
00059 #if defined(TGT_IS_CALLIOPE2)
00060   allowBodyMotion = true;
00061 #endif
00062   for (unsigned int i = 0; i < numPlannerJoints; i++) {
00063     armRestState[i] = 0.0f;
00064     rrtInterpolationStep[i] = M_PI / 180;
00065   }
00066 }
00067 
00068 GrasperRequest::GrasperRequest(const GrasperRequest &req) :
00069   objectPlannerObstacle(req.objectPlannerObstacle),
00070   requestType(req.requestType),
00071   graspStrategy(req.graspStrategy),
00072   restType(req.restType),
00073   armRestState(req.armRestState),
00074   setVerbosity(req.setVerbosity), clearVerbosity(req.clearVerbosity),
00075   effectorOffset(req.effectorOffset),
00076   rrtMaxIterations(req.rrtMaxIterations),
00077   rrtInflation(req.rrtInflation),
00078   rrtInterpolationStep(req.rrtInterpolationStep),
00079   armTimeFactor(req.armTimeFactor),
00080   openGripperOnRest(req.openGripperOnRest),
00081   object(req.object), 
00082   targetLocation(req.targetLocation), 
00083   allowBodyMotion(req.allowBodyMotion),
00084   gripperAngleRangesX(req.gripperAngleRangesX),
00085   gripperAngleRangesY(req.gripperAngleRangesY),
00086   gripperAngleRangesZ(req.gripperAngleRangesZ),
00087   maxNumberOfAngles(req.maxNumberOfAngles),
00088   angleResolution(req.angleResolution),
00089   sweepObjects(req.sweepObjects), 
00090   envObstacles(req.envObstacles), 
00091   predicate(req.predicate),
00092   populateEventPathWith(req.populateEventPathWith),
00093   pilotreq(req.pilotreq),
00094   mapreq(req.mapreq),
00095   displayPath(req.displayPath),
00096   displayTree(req.displayTree),
00097   approachPose(req.approachPose),
00098   transportPose(req.transportPose),
00099   withdrawPose(req.withdrawPose),
00100   approachPath(req.approachPath),
00101   deliverPath(req.deliverPath),
00102   releasePath(req.releasePath),
00103   requestingBehavior(req.requestingBehavior),
00104   verbosity(req.verbosity),
00105   requestID(req.requestID)
00106 {}
00107 
00108 GrasperRequest::GrasperErrorType_t GrasperRequest::validateRequest() {
00109   // If grasper action requires an object, make sure that one was supplied
00110   switch ( requestType ) {
00111   case checkGraspable:
00112   case checkMovable:
00113   case computeMove:
00114   case grasp:
00115   case computeReach:
00116   case reach:
00117   case touch:
00118   case moveTo:
00119     if ( ! object.isValid() ) {
00120       cout << "GrasperRequest of this type requires a valid 'object' field. " << endl;
00121       return invalidRequest;
00122     }
00123     break;
00124   default:
00125     break;
00126   }
00127 
00128   // If grasper action requires a taget location, make sure that one was supplied
00129   switch ( requestType ) {
00130   case checkMovable:
00131   case computeMove:
00132   case computeReach:
00133   case moveTo:
00134     if ( ! targetLocation.isValid() ) {
00135       cout << "GrasperRequest of this type requires a valid 'targetLocation' field. " << endl;
00136       return invalidRequest;
00137     }
00138     break;
00139   default:
00140     break;
00141   }
00142 
00143   if (armTimeFactor < 0) {
00144     cout << "Grasper request has armTimeFactor < 0: changing to 1." << endl;
00145     armTimeFactor = 1;
00146   }
00147 
00148   return noError;
00149 }
00150 
00151 #endif

Tekkotsu v5.1CVS
Generated Sat May 4 06:32:49 2013 by Doxygen 1.6.3