|
MatrixBlockView | viewJacobian (matrix_t &jacobian) const HPP_CONSTRAINTS_DEPRECATED |
|
MatrixBlockView | jacobianNotOutToOut (matrix_t &jacobian) const |
|
void | jacobian (matrixOut_t jacobian, vectorIn_t q) const |
|
std::ostream & | print (std::ostream &os) const |
|
|
bool | solve (vectorOut_t arg) const |
|
bool | isSatisfied (vectorIn_t arg) const |
|
bool | isSatisfied (vectorIn_t arg, vectorOut_t error) const |
|
bool | isConstraintSatisfied (const ImplicitPtr_t &constraint, vectorIn_t arg, vectorOut_t error, bool &constraintFound) const |
|
|
size_type | add (const ExplicitPtr_t &constraint) |
|
bool | contains (const ExplicitPtr_t &numericalConstraint) const |
|
| ExplicitConstraintSet (const LiegroupSpacePtr_t &space) |
|
|
void | errorThreshold (const value_type &threshold) |
| Set error threshold. More...
|
|
value_type | errorThreshold () const |
| Get error threshold. More...
|
|
value_type | squaredErrorThreshold () const |
| Get error threshold. More...
|
|
|
const RowBlockIndices & | inArgs () const |
| Set \(in\) of input configuration variables. More...
|
|
const ColBlockIndices & | inDers () const |
| Set of input velocity variables. More...
|
|
const RowBlockIndices & | freeArgs () const HPP_CONSTRAINTS_DEPRECATED |
|
const ColBlockIndices & | freeDers () const HPP_CONSTRAINTS_DEPRECATED |
|
const RowBlockIndices & | notOutArgs () const |
|
const ColBlockIndices & | notOutDers () const |
|
ColBlockIndices | activeParameters () const |
| Same as inArgs. More...
|
|
const ColBlockIndices & | activeDerivativeParameters () const |
| Same as inDers. More...
|
|
const Eigen::MatrixXi & | inOutDependencies () const |
|
Eigen::MatrixXi | inOutDofDependencies () const |
| Same as inOutDependencies except that cols correpond to DoFs. More...
|
|
const Eigen::VectorXi & | derFunction () const |
|
const RowBlockIndices & | outArgs () const |
|
const RowBlockIndices & | outDers () const |
|
std::size_t | argSize () const HPP_CONSTRAINTS_DEPRECATED |
|
std::size_t | derSize () const HPP_CONSTRAINTS_DEPRECATED |
|
LiegroupSpacePtr_t | configSpace () const |
| The Lie group on which constraints are defined. More...
|
|
std::size_t | nq () const |
| The number of variables. More...
|
|
std::size_t | nv () const |
| The number of derivative variables. More...
|
|
|
vector_t | rightHandSideFromInput (vectorIn_t p) |
|
bool | rightHandSideFromInput (const ExplicitPtr_t &constraint, vectorIn_t p) |
|
void | rightHandSideFromInput (const size_type &i, vectorIn_t p) |
|
void | rightHandSide (vectorIn_t rhs) |
|
bool | rightHandSide (const ExplicitPtr_t &constraint, vectorIn_t rhs) |
|
bool | getRightHandSide (const ExplicitPtr_t &constraint, vectorOut_t rhs) const |
|
void | rightHandSide (const size_type &i, vectorIn_t rhs) |
|
vector_t | rightHandSide () const |
|
size_type | rightHandSideSize () const |
|
Set of explicit constraints
This class combines compatible explicit constraints as defined in the following paper published in Robotics Science and System 2018: https://hal.archives-ouvertes.fr/hal-01804774/file/paper.pdf, Section II-B Definition 4.
An explicit constraint \(E=(in,out,f)\) on a robot configuration space \(\mathcal{C}\) is defined by
- Note
- Right hand side.
For manipulation planning, it is useful to handle a parameterizable right hand side \(rhs\). The expression above thus becomes
\begin{equation} \mathbf{q}_{out} = f (\mathbf{p}_{in}) + rhs. \end{equation}
The right hand side may be set using the various methods ExplicitConstraintSet::rightHandSide and ExplicitConstraintSet::rightHandSideFromInput.
- Note
- For some applications like manipulation planning, an invertible function \( g \) (of known inverse \( g^{-1} \)) can be specified for each explicit constraint \(E\). The above expression then becomes:
\begin{equation} g(\mathbf{q}_{out}) = f(\mathbf{p}_{in}) + rhs \end{equation}
To add explicit constraints, use methods ExplicitConstraintSet::add. If the constraint to add is not compatible with the previous one, this method returns -1.
Method ExplicitConstraintSet::solve solves the explicit constraints.
The combination of compatible explicit constraints is an explicit constraint. As such this class can be considered as an explicit constraint.
We will therefore use the following notation
- \(in\) for the set of indices of input variables,
- \(out\) for the set of indices of output variables.
Compute right hand side of constraints using input configuration.
- Parameters
-
p | vector in \(\mathcal{C}\). |
For each explicit constraint \(E=(in,out,f)\), compute the right hand side as follows:
\begin{equation} rhs = f (\mathbf{q}), \end{equation}
where in general
\begin{equation} f(\mathbf{q}) = \mathbf{p}_{out} - f(\mathbf{q}_{in), \end{equation}
in such a way that all \(\mathbf{q}\) satisfies the explicit constraint.
- Note
- For hpp::constraints::explicit_::RelativePose, the implicit formulation does not derive from the explicit one. The right hand side considered is the right hand side of the implicit formulation.
bool hpp::constraints::ExplicitConstraintSet::rightHandSideFromInput |
( |
const ExplicitPtr_t & |
constraint, |
|
|
vectorIn_t |
p |
|
) |
| |
Compute right hand side of constraint using input configuration.
- Parameters
-
constraint | explicit constraint, |
p | vector in \(\mathcal{C}\). |
Let \(E=(in,out,f)\) be the explicit constraint, compute the right hand side as follows:
\begin{equation} rhs = f (\mathbf{q}), \end{equation}
where in general
\begin{equation} f(\mathbf{q}) = \mathbf{p}_{out} - f(\mathbf{q}_{in), \end{equation}
in such a way that all \(\mathbf{q}\) satisfies the explicit constraint.
- Note
- For hpp::constraints::explicit_::RelativePose, the implicit formulation does not derive from the explicit one. The right hand side considered is the right hand side of the implicit formulation.
void hpp::constraints::ExplicitConstraintSet::rightHandSideFromInput |
( |
const size_type & |
i, |
|
|
vectorIn_t |
p |
|
) |
| |
Compute right hand side of constraint using input configuration.
- Parameters
-
i | index of the explicit constraint, |
p | vector in \(\mathcal{C}\). |
Let \(E=(in,out,f)\) be the explicit constraint, compute the right hand side as follows:
\begin{equation} rhs = f (\mathbf{q}), \end{equation}
where in general
\begin{equation} f(\mathbf{q}) = \mathbf{p}_{out} - f(\mathbf{q}_{in), \end{equation}
in such a way that all \(\mathbf{q}\) satisfies the explicit constraint.
- Note
- For hpp::constraints::explicit_::RelativePose, the implicit formulation does not derive from the explicit one. The right hand side considered is the right hand side of the implicit formulation.