This class represents a sampled-based configuration space. This is the main class for RRT-related planning.
More...
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | CSpaceSampled (VirtualRobot::RobotPtr robot, VirtualRobot::CDManagerPtr collisionManager, VirtualRobot::RobotNodeSetPtr robotNodes, unsigned int maxConfigs=50000, unsigned int randomSeed=0) |
|
| ~CSpaceSampled () override |
|
void | setSamplingSize (float fSize) |
| sets sampling step size (used when adding new paths in CSpace) More...
|
|
void | setSamplingSizeDCD (float fSize) |
| sets sampling step size used for discrete collision checking More...
|
|
float | getSamplingSize () |
|
float | getSamplingSizeDCD () |
|
CSpacePtr | clone (VirtualRobot::CollisionCheckerPtr newColChecker, VirtualRobot::RobotPtr newRobot, VirtualRobot::CDManagerPtr newCDM, unsigned int newRandomSeed=0) override |
|
bool | isPathValid (const Eigen::VectorXf &q1, const Eigen::VectorXf &q2) override |
|
CSpacePathPtr | createPath (const Eigen::VectorXf &start, const Eigen::VectorXf &goal) override |
|
CSpacePathPtr | createPathUntilInvalid (const Eigen::VectorXf &start, const Eigen::VectorXf &goal, float &storeAddedLength) override |
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | CSpace (VirtualRobot::RobotPtr robot, VirtualRobot::CDManagerPtr collisionManager, VirtualRobot::RobotNodeSetPtr robotNodes, unsigned int maxConfigs=50000, unsigned int randomSeed=0) |
|
virtual | ~CSpace () |
| destructor More...
|
|
void | setBoundaries (const Eigen::VectorXf &min, const Eigen::VectorXf &max) |
|
void | setBoundary (unsigned int dim, float min, float max) |
|
void | setMetricWeights (const Eigen::VectorXf &weights) |
|
float | getBoundaryMin (unsigned int d) |
| get minimum boundary of an index More...
|
|
float | getBoundaryMax (unsigned int d) |
| get maximum boundary of an index More...
|
|
float | getBoundaryDist (unsigned int d) |
| get boundary distance of an index More...
|
|
bool | isBorderlessDimension (unsigned int dim) const |
|
unsigned int | getDimension () const |
| get cspace dimension More...
|
|
VirtualRobot::RobotPtr | getRobot () const |
| get the robot of cspace More...
|
|
VirtualRobot::RobotNodeSetPtr | getRobotNodeSet () const |
| get the sets of robotnodes representing of cspace More...
|
|
VirtualRobot::CDManagerPtr | getCDManager () const |
|
virtual float | getRandomConfig_UniformSampling (unsigned int dim) |
|
void | getRandomConfig (Eigen::VectorXf &storeValues, bool checkValid=false) |
|
virtual void | respectBoundaries (Eigen::VectorXf &config) |
| set values of configuration considering boundaries More...
|
|
void | requestStop () |
|
void | setRandomSeed (unsigned int random_seed) |
|
virtual bool | checkSolution (CSpacePathPtr path, bool verbose=false) |
| checks complete solution path (with the pathCheck methods provided by the CSpace implementation) More...
|
|
virtual bool | checkTree (CSpaceTreePtr tree) |
| checks complete tree (with the pathCheck methods provided by the CSpace implementation) More...
|
|
void | resetPerformanceVars () |
|
virtual void | reset () |
|
Eigen::VectorXf | getMetricWeights () |
|
void | enableWeights (bool enable) |
|
void | exclusiveRobotAccess (bool bGranted=true) |
|
bool | hasExclusiveRobotAccess () |
|
void | setRandomSampler (SamplerPtr sampler) |
|
float | calcDist (const Eigen::VectorXf &c1, const Eigen::VectorXf &c2, bool forceDisablingMetricWeights=false) |
|
float | calcDist2 (const Eigen::VectorXf &c1, const Eigen::VectorXf &c2, bool forceDisablingMetricWeights=false) |
|
virtual float | calculateObstacleDistance (const Eigen::VectorXf &config) |
| calculate distance to obstacles More...
|
|
CSpaceNodePtr | getNode (unsigned int id) |
|
virtual CSpaceNodePtr | createNewNode () |
|
virtual void | removeNode (CSpaceNodePtr node) |
|
virtual bool | isCollisionFree (const Eigen::VectorXf &config) |
| returns the collision status (true for a valid config) More...
|
|
virtual bool | isInBoundary (const Eigen::VectorXf &config) |
| returns the boundary violation status (true for a valid config) More...
|
|
virtual bool | isSatisfyingConstraints (const Eigen::VectorXf &config) |
| returns the constraint violation status (true for a valid config) More...
|
|
void | printConfig (const Eigen::VectorXf &c) const |
|
void | checkForBorderlessDimensions (bool enable) |
|
float | interpolate (const Eigen::VectorXf &q1, const Eigen::VectorXf &q2, int dim, float step) |
|
Eigen::VectorXf | interpolate (const Eigen::VectorXf &q1, const Eigen::VectorXf &q2, float step) |
|
virtual bool | isConfigValid (const Eigen::VectorXf &pConfig, bool checkBorders=true, bool checkCollisions=true, bool checkConstraints=true) |
| check whether a configuration is valid (collision, boundary, and constraints check) More...
|
|
virtual void | addConstraintCheck (Saba::ConfigurationConstraintPtr constraint) |
|
|
static void | lock () |
| if multithreading is enabled, the colChecking mutex can be locked/unlocked externally More...
|
|
static void | unlock () |
| if multithreading is enabled, the colChecking mutex can be locked/unlocked externally More...
|
|
int | performaceVars_collisionCheck |
|
int | performaceVars_distanceCheck |
|
virtual void | getDirectionVector (const Eigen::VectorXf &c1, const Eigen::VectorXf &c2, Eigen::VectorXf &storeDir, float length) |
|
virtual void | generateNewConfig (const Eigen::VectorXf &randomConfig, const Eigen::VectorXf &nearestConfig, Eigen::VectorXf &storeNewConfig, float stepSize, float preCalculatedDist=-1.0) |
|
virtual float | getDirectedMaxMovement (const Eigen::VectorXf &config, const Eigen::VectorXf &nextConfig) |
| return upper limit for movement of any point on joints if moving from config to nextConfig More...
|
|
float | interpolateLinear (float a, float b, float step) |
| interpolates linear between a and b using step as step size More...
|
|
float | interpolateRotational (float a, float b, float step) |
|
static int | cloneCounter = 0 |
|
static std::mutex | colCheckMutex |
|
This class represents a sampled-based configuration space. This is the main class for RRT-related planning.
A CSpace is defined by a set of robot nodes and a collision manager. The RobotNodeSet specifies the dimension and the borders of the CSpace. The collision manager is used to check configurations for collisions. Here, multiple sets of objects can be defined which are internally mutually checked for collisions. This allows to specify complex collision queries. The sampling-based c-space relies on two parameters: The sampling size, which specifies the (c-space) distance between two succeeding configurations on a path segment. This parameter affects how many intermediate configurations are added when creating new paths. The second parameter is called DCD sampling size, where DCD stands for discrete collision detection. This parameter is needed for the check if a path segment is valid or not. Therefore intermediate configurations on the path segment are checked for collisions with the given maximum distance between two neighboring intermediate configuration. This parameter affects both, the performance (the Rrt approach spends most of the time for collision detection) and the reliability of the results. Since there is no guarantee that all potential configurations are detected with sampling-based approaches, a large DCD sampling parameter will increase the chance of missing a collision.
Constraints can be considered by adding instances of ConfigurationConstraintPtr.
- See also
- CSpace
-
Rrt
-
BiRrt
-
VirtualRobot::CDManager