|
hpp-core
6.0.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) |
| virtual void | setSecurityMarginBetweenBodies (const std::string &body_a, const std::string &body_b, const value_type &margin) |
| void | addIntervalValidation (const IntervalValidationPtr_t &intervalValidation) |
| value_type | tolerance () const |
| Get tolerance value. More... | |
| value_type | breakDistance () const |
| void | breakDistance (value_type distance) |
| 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 bool | validate (ConfigurationIn_t q, ValidationReportPtr_t &report) |
| virtual | ~PathValidation () |
Public Member Functions inherited from hpp::core::ObstacleUserInterface | |
| virtual | ~ObstacleUserInterface ()=default |
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_ |
| value_type | breakDistance_ |
| 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.
|
inline |
Get the break distance passed to collision checking.
| void hpp::core::ContinuousValidation::breakDistance | ( | value_type | distance | ) |
Set the break distance passed to collision checking.
|
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 security margin for collision pair between the two bodies.
Implements hpp::core::ObstacleUserInterface.
|
virtual |
Set different security margins for collision pairs
This function works joint-wise. If you need a finer control, use setSecurityMarginBetweenBodies
This method enables users to choose different security margins for each pair of robot joint or each pair robot joint - 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 |
|
protected |
BodyPairCollision for which collision is disabled.
|
protected |
All BodyPairValidation to validate.
|
protected |
|
protected |
|
protected |