Constraints

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 $ f(q) = \textbf{or} \le rhs $. More...
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)

Detailed Description

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)

ConfigProjector

addToSet (set):
  if set.configProjector_:
    throw
  if set.lockedDof_:
    throw
  set.removeConfigProjector ()
  set.configProjector_ = self
  Constraint::addToSet (set)

LockedJoint

addToSet (set):
  set.lockedJoint_ = true
  set.addLockedJoint (self)

Typedef Documentation

typedef Inequality< ComparisonType::Inferior > hpp::core::InferiorIneq
typedef boost::shared_ptr< InferiorIneq > hpp::core::InferiorPtr_t
typedef Inequality< ComparisonType::Superior > hpp::core::SuperiorIneq
typedef boost::shared_ptr< SuperiorIneq > hpp::core::SuperiorPtr_t

Function Documentation

std::ostream& hpp::core::operator<< ( std::ostream &  os,
const Constraint &  constraint 
) [inline]