|
hpp-constraints 6.1.0
Definition of basic geometric constraints for motion planning
|
#include <hpp/constraints/explicit.hh>


Public Member Functions | |
| virtual ImplicitPtr_t | copy () const |
| Copy object and return shared pointer to copy. More... | |
| DifferentiableFunctionPtr_t | explicitFunction () const |
| const segments_t & | outputConf () const |
| Get output configuration variables. More... | |
| const segments_t & | outputVelocity () const |
| Get output degrees of freedom. More... | |
| const segments_t & | inputConf () const |
| Get input configuration variables. More... | |
| const segments_t & | inputVelocity () const |
| Get input degrees of freedom. More... | |
| virtual void | outputValue (LiegroupElementRef result, vectorIn_t qin, LiegroupElementConstRef rhs) const |
| virtual void | jacobianOutputValue (vectorIn_t qin, LiegroupElementConstRef g_value, LiegroupElementConstRef rhs, matrixOut_t jacobian) const |
Public Member Functions inherited from hpp::constraints::Implicit | |
| bool | operator== (const Implicit &other) const |
| Operator equality. More... | |
| Implicit & | operator= (const Implicit &other) |
| Operator assignation. More... | |
| virtual ImplicitPtr_t | copy () const |
| Copy object and return shared pointer to copy. More... | |
| virtual | ~Implicit () |
| const ComparisonTypes_t & | comparisonType () const |
| Return the ComparisonType. More... | |
| void | comparisonType (const ComparisonTypes_t &comp) |
| Set the comparison type. More... | |
| const segments_t & | activeRows () const |
| bool | checkAllRowsActive () const |
| Check if all rows are active (no inactive rows) More... | |
| const Eigen::RowBlockIndices & | equalityIndices () const |
| Get indices of constraint coordinates that are equality. More... | |
| void | setInactiveRowsToZero (vectorOut_t error) const |
| DifferentiableFunction & | function () const |
Return a reference to function . More... | |
| const DifferentiableFunctionPtr_t & | functionPtr () const |
Return a reference to function . More... | |
| virtual std::pair< JointConstPtr_t, JointConstPtr_t > | doesConstrainRelPoseBetween (DeviceConstPtr_t robot) const |
| void | rightHandSideFromConfig (ConfigurationIn_t config, LiegroupElementRef rhs) |
| bool | checkRightHandSide (LiegroupElementConstRef rhs) const |
| size_type | parameterSize () const |
| size_type | rightHandSideSize () const |
| void | rightHandSideFunction (const DifferentiableFunctionPtr_t &rhsF) |
| const DifferentiableFunctionPtr_t & | rightHandSideFunction () const |
| vectorIn_t | rightHandSideAt (const value_type &s) |
Static Public Member Functions | |
| static ExplicitPtr_t | create (const LiegroupSpacePtr_t &configSpace, const DifferentiableFunctionPtr_t &function, const segments_t &inputConf, const segments_t &outputConf, const segments_t &inputVelocity, const segments_t &outputVelocity, const ComparisonTypes_t &comp=ComparisonTypes_t(), std::vector< bool > mask=std::vector< bool >()) |
| static ExplicitPtr_t | createCopy (const ExplicitPtr_t &other) |
| Create a copy and return shared pointer. More... | |
Static Public Member Functions inherited from hpp::constraints::Implicit | |
| static ImplicitPtr_t | create (const DifferentiableFunctionPtr_t &func, ComparisonTypes_t comp, std::vector< bool > mask=std::vector< bool >()) |
| static ImplicitPtr_t | createCopy (const ImplicitPtr_t &other) |
| Create a copy and return shared pointer. More... | |
Protected Member Functions | |||
| Explicit (const LiegroupSpacePtr_t &configSpace, const DifferentiableFunctionPtr_t &function, const segments_t &inputConf, const segments_t &outputConf, const segments_t &inputVelocity, const segments_t &outputVelocity, const ComparisonTypes_t &comp, std::vector< bool > mask) | |||
| Explicit (const DifferentiableFunctionPtr_t &implicitFunction, const DifferentiableFunctionPtr_t &function, const segments_t &inputConf, const segments_t &outputConf, const segments_t &inputVelocity, const segments_t &outputVelocity, const ComparisonTypes_t &comp, std::vector< bool > mask) | |||
(const LiegroupSpacePtr_t&, constDifferentiableFunctionPtr_t&, const segments_t& inputConf, constsegments_t& outputConf, const segments_t& inputVelocity, constsegments_t&, const ComparisonTypes_t&);
| |||
| Explicit (const Explicit &other) | |||
| Copy constructor. More... | |||
| bool | isEqual (const Implicit &other, bool swapAndTest) const | ||
| void | init (const ExplicitWkPtr_t &weak) | ||
| Explicit () | |||
Protected Member Functions inherited from hpp::constraints::Implicit | |||
| Implicit (const DifferentiableFunctionPtr_t &function, ComparisonTypes_t comp, std::vector< bool > mask) | |||
| Implicit (const Implicit &other) | |||
| Copy constructor. More... | |||
| virtual bool | isEqual (const Implicit &other, bool swapAndTest) const | ||
| void | init (const ImplicitWkPtr_t &weak) | ||
| Implicit () | |||
Protected Attributes | |
| DifferentiableFunctionPtr_t | inputToOutput_ |
| segments_t | inputConf_ |
| segments_t | outputConf_ |
| segments_t | inputVelocity_ |
| segments_t | outputVelocity_ |
Explicit numerical constraint
An explicit numerical constraint is a constraint such that some configuration variables called output are function of the others called input.
Let
be the list of indices corresponding to ordered input configuration variables,
be the list of indices corresponding to ordered output configuration variables,
be the list of indices corresponding to ordered input degrees of freedom,
be the list of indices corresponding to ordered output degrees of freedom.Recall that degrees of freedom refer to velocity vectors.
Let us notice that
is less than the robot configuration size, and
is less than the velocity size. Some degrees of freedom may indeed be neither input nor output.
Then the differential function is of the form
It is straightforward that an equality constraint with this function can be solved explicitely:
If function
takes values in a Lie group (SO(2), SO(3)), the above "+" between a Lie group element and a tangent vector has to be undestood as the integration of the constant velocity from the Lie group element:
where
is a Lie group element and
is a tangent vector.
Considered as an Implicit instance, the expression of the Jacobian of the DifferentiableFunction above depends on the output space of function
. The rows corresponding to values in a vector space are expressed as follows.
for any index
between 0 and the size of velocity vectors, either
is an input degree of freedom:
integer,
such that
,
is an output degree of freedom:
integer,
such that
, or
neither input nor output. In this case, the corresponding column is equal to 0.
is the rotation matrix corresponding to unit quaternion
,
is the rotation matrix corresponding to the part of the output value of
corresponding to SO(3),
is the Jacobian matrix of function that associates to a rotation matrix
the vector
such that
definition"
Some explicit constraints might be defined over only a subspace of the input
space. If the input value is not in the definition subspace, the explicit constraint will throw an exception of type FunctionNotDefinedForThisValue.
|
protected |
Constructor
| configSpace | Configuration space on which the constraint is defined, |
| function | relation between input configuration variables and output configuration variables, |
| inputConf | set of integer intervals defining indices , |
| outputConf | set of integer intervals defining indices , |
| inputVelocity | set of integer defining indices . |
| outputVelocity | set of integer defining indices . |
| mask | mask defining which components of the error are taken into account to determine whether the constraint is satisfied (See parent class for details). |
|
protected |
(const LiegroupSpacePtr_t&, constDifferentiableFunctionPtr_t&, const segments_t& inputConf, constsegments_t& outputConf, const segments_t& inputVelocity, constsegments_t&, const ComparisonTypes_t&);
| implicitFunction |
Constructor
| configSpace | Configuration space on which the constraint is defined, |
| function | relation between input configuration variables and output configuration variables, |
| inputConf | set of integer intervals defining indices , |
| outputConf | set of integer intervals defining indices , |
| inputVelocity | set of integer defining indices . |
| outputVelocity | set of integer defining indices . |
| mask | mask defining which components of the error are taken into account to determine whether the constraint is satisfied (See parent class for details). (const LiegroupSpacePtr_t&, constDifferentiableFunctionPtr_t&, const segments_t& inputConf, constsegments_t& outputConf, const segments_t& inputVelocity, constsegments_t&, const ComparisonTypes_t&); |
| implicitFunction | differentiable function of the implicit formulation if different from default expression
|
|
protected |
Copy constructor.
|
inlineprotected |
|
virtual |
Copy object and return shared pointer to copy.
Reimplemented from hpp::constraints::Implicit.
Reimplemented in hpp::constraints::explicit_::ConvexShapeContact, hpp::constraints::explicit_::RelativePose, and hpp::constraints::LockedJoint.
|
static |
Create instance and return shared pointer
| configSpace | Configuration space on which the constraint is defined, |
| function | relation between input configuration variables and output configuration variables, |
| inputConf | set of integer intervals defining indices , |
| outputConf | set of integer intervals defining indices , |
| inputVelocity | set of integer defining indices . |
| outputVelocity | set of integer defining indices . |
| mask | mask defining which components of the error are taken into account to determine whether the constraint is satisfied (See parent class for details). |
|
static |
Create a copy and return shared pointer.
|
inline |
Function that maps input to output
.
|
protected |
|
inline |
Get input configuration variables.
|
inline |
Get input degrees of freedom.
|
protectedvirtual |
Test equality with other instance
| other | object to copy |
| swapAndTest | whether we should also check other == this |
Reimplemented from hpp::constraints::Implicit.
Reimplemented in hpp::constraints::LockedJoint.
|
virtual |
Compute Jacobian of output value
| qin | vector of input variables, |
| g_value | provided to avoid recomputation, |
| rhs | right hand side (of implicit formulation). |
Reimplemented in hpp::constraints::explicit_::ConvexShapeContact, and hpp::constraints::explicit_::RelativePose.
|
inline |
Get output configuration variables.
|
virtual |
Compute the value of the output configuration variables
| qin | input configuration variables, |
| rhs | right hand side of constraint |
The default implementation computes
Reimplemented in hpp::constraints::explicit_::ConvexShapeContact, and hpp::constraints::explicit_::RelativePose.
|
inline |
Get output degrees of freedom.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |