Some robots can be subject to constraints. More...
Classes | |
class | hpp::core::ComparisonType |
Abstract class defining the comparison for a function value and doing a saturation, necessary for inequality constraint. More... | |
class | hpp::core::Equality |
Implementation of equality. More... | |
class | hpp::core::EqualToZero |
Implementation of equality to zero. More... | |
class | hpp::core::ComparisonTypes |
Implementation of various equation types. More... | |
class | hpp::core::Inequality< T > |
Implementation of inequality. More... | |
class | hpp::core::DoubleInequality |
Implementation of double inequality. More... | |
class | hpp::core::ConfigProjector |
Implicit non-linear constraint. More... | |
class | hpp::core::ConstraintSet |
Set of constraints applicable to a robot configuration. More... | |
class | hpp::core::Constraint |
Constraint applicable to a robot configuration. More... | |
class | hpp::core::Equation |
This class represents an equation with the following format ![]() | |
class | hpp::core::LockedJoint |
Implementation of Equation specific to locked joint. More... | |
class | hpp::core::NumericalConstraint |
With the same notation as in Equation, this class represents equation: More... | |
Typedefs | |
typedef Inequality< ComparisonType::Superior > | hpp::core::SuperiorIneq |
typedef Inequality< ComparisonType::Inferior > | hpp::core::InferiorIneq |
typedef boost::shared_ptr< SuperiorIneq > | hpp::core::SuperiorPtr_t |
typedef boost::shared_ptr< InferiorIneq > | hpp::core::InferiorPtr_t |
Functions | |
std::ostream & | hpp::core::operator<< (std::ostream &os, const Constraint &constraint) |
Some robots can be subject to constraints.
are examples of such constraints. These constraints can be defined implicitely by an equation the left hand side of which is a differentiable function of the robot configuration.
Classes of this module enable users to define such constraints by deriving class Constraint and by storing instances in ConstraintSet.
ConfigProjector defines implicit constraints by equalities and/or inequalities between a differentiable function and a constant vector.
LockedJoint set the position of one joint to a fixed value.
Each ConstraintSet may contain at most one ConfigProjector. LockedJoint instances added to a ConstraintSet are in fact stored by the ConfigProjector of the ConstraintSet if any. The rationale is that the computations that solve numerical constraints are optimized by solving only for non locked degrees of freedom.
Below is a diagram of the classes that implement constraints with the description of some methods to help advanced user to understand how those classes interact between each other.
Constraint |
ConstraintSet |
addToSet (set):   set.push_back (self) addLockedJoint (lockedDof):   pass |
addToSet (set):   for c in constraints_:     c.addToSet (set) addLockedJoint (ld):   for c in constraints_:     c.addLockedJoint (ld) addConstraint (c):   c.addToSet (self) |
ConfigProjectoraddToSet (set):  if set.configProjector_:     throw   if set.lockedDof_:     throw   set.removeConfigProjector ()   set.configProjector_ = self   Constraint::addToSet (set) |
LockedJointaddToSet (set):  set.lockedJoint_ = true   set.addLockedJoint (self) |
typedef boost::shared_ptr< InferiorIneq > hpp::core::InferiorPtr_t |
typedef boost::shared_ptr< SuperiorIneq > hpp::core::SuperiorPtr_t |
|
inline |
Referenced by hpp::core::Roadmap::push_node().