hpp-constraints
6.0.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 |
![]() | |
bool | operator== (const Implicit &other) const |
Operator equality. 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 ![]() | |
const DifferentiableFunctionPtr_t & | functionPtr () const |
Return a reference to function ![]() | |
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 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&, const More... | |
Explicit (const Explicit &other) | |
Copy constructor. More... | |
bool | isEqual (const Implicit &other, bool swapAndTest) const |
void | init (const ExplicitWkPtr_t &weak) |
Explicit () | |
![]() | |
Implicit (const DifferentiableFunctionPtr_t &function, ComparisonTypes_t comp, std::vector< bool > mask) | |
Implicit (const Implicit &other) | |
Copy constructor. More... | |
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
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 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 a 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
|
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&, const
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&, const DifferentiableFunctionPtr_t&, const segments_t& inputConf, const segments_t& outputConf, const segments_t& inputVelocity, const segments_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_::RelativePose, hpp::constraints::LockedJoint, and hpp::constraints::explicit_::ConvexShapeContact.
|
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 | ![]() |
rhs | right hand side (of implicit formulation). |
Reimplemented in hpp::constraints::explicit_::RelativePose, and hpp::constraints::explicit_::ConvexShapeContact.
|
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_::RelativePose, and hpp::constraints::explicit_::ConvexShapeContact.
|
inline |
Get output degrees of freedom.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |