|
MatrixBlockView | viewJacobian (matrix_t &jacobian) const HPP_CONSTRAINTS_DEPRECATED |
| Return Jacobian matrix of output variable wrt not output variables. More...
|
|
MatrixBlockView | jacobianNotOutToOut (matrix_t &jacobian) const |
| Return Jacobian matrix of output variable wrt not output variables. More...
|
|
void | jacobian (matrixOut_t jacobian, vectorIn_t q) const |
| Compute the Jacobian of the explicit constraint resolution. More...
|
|
std::ostream & | print (std::ostream &os) const |
|
|
bool | solve (vectorOut_t arg) const |
| Solve the explicit constraints. More...
|
|
bool | isSatisfied (vectorIn_t arg) const |
| Whether input vector satisfies the constraints of the solver. More...
|
|
bool | isSatisfied (vectorIn_t arg, vectorOut_t error) const |
| Whether input vector satisfies the constraints of the solver. More...
|
|
bool | isConstraintSatisfied (const ImplicitPtr_t &constraint, vectorIn_t arg, vectorOut_t error, bool &constraintFound) const |
| Whether a constraint is satisfied for an input vector. More...
|
|
|
size_type | add (const ExplicitPtr_t &constraint) |
| Attempt to add an explicit constraint. More...
|
|
bool | contains (const ExplicitPtr_t &numericalConstraint) const |
| Check whether an explicit numerical constraint has been added. More...
|
|
| ExplicitConstraintSet (const LiegroupSpacePtr_t &space) |
| Constructor. More...
|
|
|
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 |
| Set \(i\overline{n\cup ou}t\) of other configuration variables. More...
|
|
const ColBlockIndices & | freeDers () const HPP_CONSTRAINTS_DEPRECATED |
| Set \(i\overline{n\cup ou}t\) of other velocity variables. More...
|
|
const RowBlockIndices & | notOutArgs () const |
| Set \(i\overline{n\cup ou}t\) of other configuration variables. More...
|
|
const ColBlockIndices & | notOutDers () const |
| Set \(i\overline{n\cup ou}t\) of other velocity variables. More...
|
|
ColBlockIndices | activeParameters () const |
| Same as inArgs. More...
|
|
const ColBlockIndices & | activeDerivativeParameters () const |
| Same as inDers. More...
|
|
const Eigen::MatrixXi & | inOutDependencies () const |
| Returns a matrix of integer whose: More...
|
|
Eigen::MatrixXi | inOutDofDependencies () const |
| Same as inOutDependencies except that cols correpond to DoFs. More...
|
|
const Eigen::VectorXi & | derFunction () const |
|
const RowBlockIndices & | outArgs () const |
| Set \(out\) of output configuration variables. More...
|
|
const RowBlockIndices & | outDers () const |
| Set of output velocity variables. More...
|
|
std::size_t | argSize () const HPP_CONSTRAINTS_DEPRECATED |
| The number of configuration variables. More...
|
|
std::size_t | derSize () const HPP_CONSTRAINTS_DEPRECATED |
| The number of derivative variables. More...
|
|
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) |
| Compute right hand side of constraints using input configuration. More...
|
|
bool | rightHandSideFromInput (const ExplicitPtr_t &constraint, vectorIn_t p) |
| Compute right hand side of constraint using input configuration. More...
|
|
void | rightHandSideFromInput (const size_type &i, vectorIn_t p) |
| Compute right hand side of constraint using input configuration. More...
|
|
void | rightHandSide (vectorIn_t rhs) |
| Set the right hand sides of the explicit constraints. More...
|
|
bool | rightHandSide (const ExplicitPtr_t &constraint, vectorIn_t rhs) |
| Set the right hand side for a given explicit constraint. More...
|
|
bool | getRightHandSide (const ExplicitPtr_t &constraint, vectorOut_t rhs) const |
| Get the right hand side for a given explicit constraint. More...
|
|
void | rightHandSide (const size_type &i, vectorIn_t rhs) |
| Set the right hand side for a given explicit constraint. More...
|
|
vector_t | rightHandSide () const |
| Get the right hand sides. More...
|
|
size_type | rightHandSideSize () const |
| Get size of the right hand side. More...
|
|
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.