Simox
2.3.74.0
|
Data Structures | |
struct | GraspInfo |
struct | PlanningPerformance |
Public Types | |
enum | MoveArmResult { eMovedOneStep, eGoalReached, eCollision_Environment, eGraspablePoseReached, eJointBoundaryViolation, eTrapped, eError, eFatalError } |
typedef std::vector< GraspInfo, Eigen::aligned_allocator< GraspInfo > > | GraspInfoVector |
Public Types inherited from Saba::Rrt | |
enum | RrtMethod { eExtend, eConnect, eConnectCompletePath } |
enum | ExtensionResult { eError, eFailed, eSuccess, ePartial } |
Public Member Functions | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | GraspRrt (CSpaceSampledPtr cspace, VirtualRobot::EndEffectorPtr eef, VirtualRobot::ObstaclePtr object, VirtualRobot::BasicGraspQualityMeasurePtr measure, VirtualRobot::SceneObjectSetPtr graspCollisionObjects=VirtualRobot::SceneObjectSetPtr(), float probabGraspHypothesis=0.1f, float graspQualityMinScore=0.01f) |
~GraspRrt () override | |
bool | plan (bool bQuiet=false) override |
void | printConfig (bool printOnlyParams=false) override |
bool | setStart (const Eigen::VectorXf &c) override |
set start configuration More... | |
bool | setGoal (const Eigen::VectorXf &c) override |
This is not allowed here, since we sample goal configurations during planning: If called an exception is thrown. More... | |
void | reset () override |
reset the planner More... | |
ApproachDiscretizationPtr | getPoseRelationSphere () |
void | getGraspInfoResult (GraspInfoVector &vStoreGraspInfo) |
Stores all found grasps to given vector (thread safe) More... | |
bool | getGraspInfoResult (int index, GraspInfo &storeGraspInfo) |
Returns a specific grasp result (thread safe) More... | |
int | getNrOfGraspInfoResults () |
Returns number of (currently) found grasps (thread safe) More... | |
PlanningPerformance | getPerformanceMeasurement () |
void | printPerformanceResults () |
bool | calculateGlobalGraspPose (const Eigen::VectorXf &c, Eigen::Matrix4f &storeGoal) |
MoveArmResult | createWorkSpaceSamplingStep (const Eigen::Matrix4f ¤tPose, const Eigen::Matrix4f &goalPose, Eigen::VectorXf &storeCSpaceConf) |
virtual bool | init () |
void | setMinGraspContacts (int nr) |
Public Member Functions inherited from Saba::Rrt | |
Rrt (CSpacePtr cspace, RrtMethod mode=eConnect, float probabilityExtendToGoal=0.1f, float samplingSize=-1) | |
~Rrt () override | |
bool | plan (bool bQuiet=false) override |
void | printConfig (bool printOnlyParams=false) override |
void | reset () override |
reset the planner More... | |
bool | setStart (const Eigen::VectorXf &c) override |
set start configuration More... | |
bool | setGoal (const Eigen::VectorXf &c) override |
set goal configuration More... | |
void | setProbabilityExtendToGoal (float p) |
CSpaceTreePtr | getTree () |
Public Member Functions inherited from Saba::MotionPlanner | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | MotionPlanner (CSpacePtr cspace) |
virtual | ~MotionPlanner () |
destructor More... | |
CSpacePathPtr | getSolution () |
void | setMaxCycles (unsigned int mc) |
Eigen::VectorXf | getStartConfig () |
return start configuration More... | |
Eigen::VectorXf | getGoalConfig () |
return goal configuration More... | |
unsigned int | getNrOfCycles () |
check that planner is initialized More... | |
CSpacePtr | getCSpace () |
The CSpace. More... | |
virtual void | stopExecution () |
void | setName (std::string sName) |
Give the planner a name. More... | |
std::string | getName () |
The name of the planner. More... | |
float | getPlanningTimeMS () |
virtual bool | isInitialized () |
returns true, when start and goal config have been set More... | |
void | setPlanningTimeout (float timeoutMs) |
Protected Member Functions | |
bool | doPlanningCycle () |
bool | processNodes (unsigned int startId, unsigned int endId) |
bool | processNode (CSpaceNodePtr n) |
Compute tcp (gcp) pose and update internal map and pose relation sphere. More... | |
MoveArmResult | connectRandomGraspPositionJacobian () |
Rrt::ExtensionResult | connectComplete () |
MoveArmResult | moveTowardsGoal (CSpaceNodePtr startNode, const Eigen::Matrix4f &targetPose, int nMaxLoops) |
MoveArmResult | createWorkSpaceSamplingStep (const Eigen::Matrix4f &goalPose, CSpaceNodePtr extendNode, Eigen::VectorXf &storeCSpaceConf) |
void | limitWorkspaceStep (Eigen::Matrix4f &p) |
MoveArmResult | moveArmDiffKin (const Eigen::Matrix4f &deltaPose, Eigen::VectorXf &storeCSpaceConf) |
float | calculateGraspScore (const Eigen::VectorXf &c, int nId=-1, bool bStoreGraspInfoOnSuccess=false) |
Rrt::ExtensionResult | connectComplete (Eigen::VectorXf &c, CSpaceTreePtr tree, int &storeLastAddedID) override |
void | printGraspInfo (GraspInfo &GrInfo) |
Protected Member Functions inherited from Saba::Rrt | |
bool | createSolution (bool bQuiet=false) override |
create the solution More... | |
virtual ExtensionResult | extend (Eigen::VectorXf &c, CSpaceTreePtr tree, int &storeLastAddedID) |
virtual ExtensionResult | connectUntilCollision (Eigen::VectorXf &c, CSpaceTreePtr tree, int &storeLastAddedID) |
Protected Attributes | |
VirtualRobot::ObstaclePtr | targetObject |
VirtualRobot::RobotNodeSetPtr | rns |
VirtualRobot::EndEffectorPtr | eef |
VirtualRobot::RobotPtr | robot |
std::map< VirtualRobot::GraspPtr, Saba::CSpaceNodePtr > | graspNodeMapping |
std::vector< Eigen::VectorXf > | ikSolutions |
PlanningPerformance | performanceMeasure |
int | minGraspContacts |
float | workSpaceSamplingCount |
VirtualRobot::ObstaclePtr | gcpOject |
VirtualRobot::SceneObjectSetPtr | graspCollisionObjects |
These objects are considered as obstacles when closing the hand. The targetObject is handled explicitly and must not be part of these object set. More... | |
MoveArmResult | extendGraspStatus |
float | cartSamplingOriStepSize |
float | cartSamplingPosStepSize |
GraspInfoVector | grasps |
ApproachDiscretizationPtr | poseSphere |
VirtualRobot::DifferentialIKPtr | diffIK |
Eigen::Vector3f | targetObjectPosition |
float | tryGraspsDistance2 |
int | colChecksOverall |
bool | foundSolution |
std::mutex | graspInfoMutex |
bool | verbose |
std::map< CSpaceNodePtr, Eigen::Matrix4f, std::less< CSpaceNodePtr >, Eigen::aligned_allocator< std::pair< const CSpaceNodePtr, Eigen::Matrix4f > > > | mapConfigTcp |
Store the tcp (gcp) poses that correspond with the config. More... | |
VirtualRobot::BasicGraspQualityMeasurePtr | graspQualityMeasure |
float | probabGraspHypothesis |
float | graspQualityMinScore |
bool | plannerInitialized |
Protected Attributes inherited from Saba::Rrt | |
CSpaceTreePtr | tree |
the rrt on which are operating More... | |
CSpaceNodePtr | startNode |
start node (root of RRT) More... | |
CSpaceNodePtr | goalNode |
goal node (set when RRT weas successfully connected to goalConfig) More... | |
Eigen::VectorXf | tmpConfig |
tmp config More... | |
float | extendGoToGoal |
the probability that the goal config is used instead of a randomly created configuration More... | |
float | extendStepSize |
step size for one rrt extend (copied from cspace) More... | |
int | lastAddedID |
ID of last added node. More... | |
RrtMethod | rrtMode |
Protected Attributes inherited from Saba::MotionPlanner | |
CSpacePtr | cspace |
the cspace on which are operating More... | |
CSpacePathPtr | solution |
the solution More... | |
bool | stopSearch |
indicates that the search should be interrupted More... | |
unsigned int | dimension |
dimension of c-space More... | |
Eigen::VectorXf | startConfig |
start config More... | |
bool | startValid |
Eigen::VectorXf | goalConfig |
goal config More... | |
bool | goalValid |
unsigned int | maxCycles |
maximum cycles for searching More... | |
unsigned int | cycles |
current cycles done in the run method More... | |
std::string | name |
Name of this planner (standard: "Motion Planner") More... | |
float | planningTime |
float | planningTimeout |
Planning time in milliseconds. More... | |
A planner that combines the search for a feasible grasping pose with RRT-based motion planning. No predefined grasps are needed, a feasible grasp is searched during the planning process. Makes use of the DifferntialIK methods to generate potential approach movements. A GraspQualityMeasure object is needed in order to evaluate generated grasping hypotheses.
Related publication: "Integrated Grasp and Motion Planning", N. Vahrenkamp, M. Do, T. Asfour, R. Dillmann, ICRA 2010
typedef std::vector< GraspInfo, Eigen::aligned_allocator<GraspInfo> > Saba::GraspRrt::GraspInfoVector |
Saba::GraspRrt::GraspRrt | ( | CSpaceSampledPtr | cspace, |
VirtualRobot::EndEffectorPtr | eef, | ||
VirtualRobot::ObstaclePtr | object, | ||
VirtualRobot::BasicGraspQualityMeasurePtr | measure, | ||
VirtualRobot::SceneObjectSetPtr | graspCollisionObjects = VirtualRobot::SceneObjectSetPtr() , |
||
float | probabGraspHypothesis = 0.1f , |
||
float | graspQualityMinScore = 0.01f |
||
) |
Constructor
cspace | The C-Space that should be used for collision detection. The RobotNodeSet, that was used to define the cspace, is internally used to generate approach movements. |
eef | The EndEffector that should be used for grasping. |
object | The object to be grasped |
measure | A measure object that should be used for evaluating the quality of generated grasping hypotheses. |
graspCollisionObjects | These (optional) objects are considered as obstacles when closing the hand. The targetObject is handled explicitly and need not be part of these object set. |
probabGraspHypothesis | The probability that a grasping hypothesis is generated during a loop. |
graspQualityMinScore | The minimum score that must be achieved for a valid grasp. |
|
overridedefault |
bool Saba::GraspRrt::calculateGlobalGraspPose | ( | const Eigen::VectorXf & | c, |
Eigen::Matrix4f & | storeGoal | ||
) |
This method generates a grasping pose on the object's surface. The z-axis of the GCP's coordinate system is aligned with the normal. We assume that the z axis specifies the favorite approach movement of the EEF.
|
protected |
|
protected |
|
overrideprotectedvirtual |
Reimplemented from Saba::Rrt.
|
protected |
GraspRrt::MoveArmResult Saba::GraspRrt::createWorkSpaceSamplingStep | ( | const Eigen::Matrix4f & | currentPose, |
const Eigen::Matrix4f & | goalPose, | ||
Eigen::VectorXf & | storeCSpaceConf | ||
) |
Computes a step towards goalPose.
currentPose | The current pose |
goalPose | The pose in global coord system. |
storeCSpaceConf | The result is stored here. |
|
protected |
|
protected |
void Saba::GraspRrt::getGraspInfoResult | ( | GraspRrt::GraspInfoVector & | storeGraspInfo | ) |
Stores all found grasps to given vector (thread safe)
bool Saba::GraspRrt::getGraspInfoResult | ( | int | index, |
GraspInfo & | storeGraspInfo | ||
) |
Returns a specific grasp result (thread safe)
int Saba::GraspRrt::getNrOfGraspInfoResults | ( | ) |
Returns number of (currently) found grasps (thread safe)
GraspRrt::PlanningPerformance Saba::GraspRrt::getPerformanceMeasurement | ( | ) |
ApproachDiscretizationPtr Saba::GraspRrt::getPoseRelationSphere | ( | ) |
Returns the internal representation of the pose sphere. The pose sphere is used to encode approach directions.
|
virtual |
Can be used for custom initialization. Usually this method is automatically called at the beginning of a planning query.
|
protected |
Limit the step that is defined with p, so that the translational and rotational stepsize is limited by cartSamplingOriStepSize and cartSamplingPosStepSize
|
protected |
Current pose of RNS is moved.
deltaPose | Consists of the 3x3 rotation delta R and the 3 dim translational delta T in homogeneous notation. R and T must be given in global coordinate system. |
storeCSpaceConf | The result is stored here. |
|
protected |
|
overridevirtual |
do the planning (blocking method)
Implements Saba::MotionPlanner.
|
overridevirtual |
Print setup of planner.
printOnlyParams | If set the decorating start and end is skipped (can be used to print derived classes). |
Reimplemented from Saba::MotionPlanner.
|
protected |
void Saba::GraspRrt::printPerformanceResults | ( | ) |
|
protected |
Compute tcp (gcp) pose and update internal map and pose relation sphere.
|
protected |
For all nodes in tree, that form the path from startId to endId processNode is called. startId is not processed.
|
overridevirtual |
reset the planner
Reimplemented from Saba::MotionPlanner.
|
overridevirtual |
This is not allowed here, since we sample goal configurations during planning: If called an exception is thrown.
Reimplemented from Saba::MotionPlanner.
void Saba::GraspRrt::setMinGraspContacts | ( | int | nr | ) |
By default min 3 contacts are needed, this number can be adjusted here.
|
overridevirtual |
set start configuration
Reimplemented from Saba::MotionPlanner.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
These objects are considered as obstacles when closing the hand. The targetObject is handled explicitly and must not be part of these object set.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Store the tcp (gcp) poses that correspond with the config.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |