hpp-core
4.9.0
Implement basic classes for canonical path planning for kinematic chains.
|
#include <hpp/core/continuous-validation.hh>
Classes | |
class | AddObstacle |
class | Initialize |
Public Member Functions | |
virtual bool | validate (const PathPtr_t &path, bool reverse, PathPtr_t &validPart, PathValidationReportPtr_t &report) |
virtual void | addObstacle (const CollisionObjectConstPtr_t &object) |
virtual void | removeObstacleFromJoint (const JointPtr_t &joint, const CollisionObjectConstPtr_t &obstacle) |
void | filterCollisionPairs (const RelativeMotion::matrix_type &relMotion) |
virtual void | setSecurityMargins (const matrix_t &securityMatrix) |
void | addIntervalValidation (const IntervalValidationPtr_t &intervalValidation) |
value_type | tolerance () const |
Get tolerance value. More... | |
DevicePtr_t | robot () const |
void | initialize () |
virtual | ~ContinuousValidation () |
Delegate | |
template<class Delegate > | |
void | add (const Delegate &delegate) |
template<class Delegate > | |
void | reset () |
Public Member Functions inherited from hpp::core::PathValidation | |
virtual | ~PathValidation () |
Public Member Functions inherited from hpp::core::ObstacleUserInterface | |
virtual | ~ObstacleUserInterface () |
Protected Types | |
typedef continuousValidation::IntervalValidations_t | IntervalValidations_t |
Protected Member Functions | |
ContinuousValidation (const DevicePtr_t &robot, const value_type &tolerance) | |
virtual bool | validateConfiguration (IntervalValidations_t &intervalValidations, const Configuration_t &config, const value_type &t, interval_t &interval, PathValidationReportPtr_t &report) |
bool | validateIntervals (IntervalValidations_t &validations, const value_type &t, interval_t &interval, PathValidationReportPtr_t &pathReport, typename IntervalValidations_t::iterator &smallestInterval, pinocchio::DeviceData &data) |
void | init (ContinuousValidationWkPtr_t weak) |
Store weak pointer to itself. More... | |
Protected Member Functions inherited from hpp::core::PathValidation | |
PathValidation () | |
Static Protected Member Functions | |
static void | setPath (IntervalValidations_t &intervalValidations, const PathPtr_t &path, bool reverse) |
Protected Attributes | |
DevicePtr_t | robot_ |
value_type | tolerance_ |
IntervalValidations_t | intervalValidations_ |
All BodyPairValidation to validate. More... | |
IntervalValidations_t | disabledBodyPairCollisions_ |
BodyPairCollision for which collision is disabled. More... | |
pinocchio::Pool< IntervalValidations_t > | bodyPairCollisionPool_ |
value_type | stepSize_ |
Continuous validation of a path
This class valides a path for various criteria. The default validation criterion is the absence of collisions between bodies of a robot and the environment.
Validation of PathVector instances is performed path by path.
A path is valid if and only if each interval validation element is valid along the whole interval of definition (class continuousValidation::IntervalValidation).
In order to validate other criteria, users can add their own derivation of class continuousValidation::IntervalValidation using method addIntervalValidation. They can also make use of two types of delegates:
doExecute
of these instances are called sucessively. doExecute
of these instances are called sucessively.Base class ContinuousValidation::Initialize initializes collision pairs between bodies of the robot.
Validation of a collision pair is based on the computation of an upper-bound of the relative velocity of objects of one joint (or of the environment) in the reference frame of the other joint. This is implemented in continuousValidation::BodyPairCollision and continuousValidation::SolidSolidCollision.
See this document for details on the continuous collision checking.
See this document for details on the architecture of the code.
|
protected |
|
virtual |
|
protected |
Constructor
robot | the robot for which validation is performed, |
tolerance | maximal penetration allowed. |
void hpp::core::ContinuousValidation::add | ( | const Delegate & | delegate | ) |
Add a delegate
Delegate | type of delegate. |
instance | of delegate class. |
Delegates are used to enable users to specialize some actions of the class without deriving the class. This class supports two types of delegates:
void hpp::core::ContinuousValidation::addIntervalValidation | ( | const IntervalValidationPtr_t & | intervalValidation | ) |
Add interval validation instance
|
virtual |
Iteratively call method doExecute of delegate classes AddObstacle
object | new obstacle. |
Implements hpp::core::ObstacleUserInterface.
|
virtual |
Filter collision pairs.
Remove pairs of object that cannot be in collision. This effectively disables collision detection between objects that have no possible relative motion due to the constraints.
relMotion | square symmetric matrix of RelativeMotionType of size numberDof x numberDof |
Implements hpp::core::ObstacleUserInterface.
|
protected |
Store weak pointer to itself.
void hpp::core::ContinuousValidation::initialize | ( | ) |
Iteratively call method doExecute of delegate classes Initialize
|
virtual |
Remove a collision pair between a joint and an obstacle
joint | the joint that holds the inner objects, |
obstacle | the obstacle to remove. |
Implements hpp::core::ObstacleUserInterface.
void hpp::core::ContinuousValidation::reset | ( | ) |
Reset delegates of a type
delegate | type of delegate |
|
inline |
|
staticprotected |
|
virtual |
Set different security margins for collision pairs
This method enables users to choose different security margins for each pair of robot body or each pair robot body - obstacle.
Implements hpp::core::ObstacleUserInterface.
|
inline |
Get tolerance value.
|
virtual |
Compute the largest valid interval starting from the path beginning
path | the path to check for validity, |
reverse | if true check from the end, |
validPart | the extracted valid part of the path, pointer to path if path is valid. |
report | information about the validation process. A report is allocated if the path is not valid. |
Implements hpp::core::PathValidation.
|
protectedvirtual |
Validate interval centered on a path parameter
intervalValidations | collision to consider |
config | Configuration at abscissa t on the path. |
t | parameter value in the path interval of definition |
interval | interval over which the path is collision-free, not necessarily included in definition interval |
|
inlineprotected |
Validate a set of intervals for a given parameter along a path
IntervalValidation | type of container of validation elements (for instance validation for collision between a pair of bodies), |
ValidationReportTypePtr_t | type of validation report produced in case non validation. Should derive from ValidationReport. |
objects | able to validate an interval for collision, |
t | center of the interval to be validated, |
interval | interval validated for all objects, |
smallestInterval | iterator to the validation element that returned the smallest interval. |
|
protected |
|
protected |
BodyPairCollision for which collision is disabled.
|
protected |
All BodyPairValidation to validate.
|
protected |
|
protected |
|
protected |