|
| BySubstitution (const LiegroupSpacePtr_t &configSpace) |
|
| BySubstitution (const BySubstitution &other) |
|
virtual | ~BySubstitution () |
|
bool | add (const ImplicitPtr_t &numericalConstraint, const segments_t &passiveDofs=segments_t(0), const std::size_t priority=0) |
| Add a numerical constraints. More...
|
|
void | add (const DifferentiableFunctionPtr_t &f, const std::size_t &priority, const ComparisonTypes_t &comp) HPP_CONSTRAINTS_DEPRECATED |
| Add an implicit constraint. More...
|
|
const NumericalConstraints_t & | numericalConstraints () const |
| Get the numerical constraints implicit and explicit. More...
|
|
ExplicitConstraintSet & | explicitConstraintSet () |
| Get explicit constraint set. More...
|
|
const ExplicitConstraintSet & | explicitConstraintSet () const |
| Set explicit constraint set. More...
|
|
virtual bool | contains (const ImplicitPtr_t &numericalConstraint) const |
| Check whether a numerical constraint has been added. More...
|
|
size_type | numberFreeVariables () const |
| Return the number of free variables. More...
|
|
void | explicitConstraintSetHasChanged () |
| Should be called whenever explicit solver is modified. More...
|
|
template<typename LineSearchType > |
Status | solve (vectorOut_t arg, LineSearchType ls=LineSearchType()) const |
|
template<typename LineSearchType > |
Status | solve (vectorOut_t arg, bool optimize, LineSearchType ls=LineSearchType()) const |
|
void | projectVectorOnKernel (ConfigurationIn_t from, vectorIn_t velocity, ConfigurationOut_t result) const |
| Project velocity on constraint tangent space in "from". More...
|
|
virtual void | projectOnKernel (ConfigurationIn_t from, ConfigurationIn_t to, ConfigurationOut_t result) |
| Project configuration "to" on constraint tangent space in "from". More...
|
|
Status | solve (vectorOut_t arg) const |
|
bool | isSatisfied (vectorIn_t arg) const |
|
bool | isSatisfied (vectorIn_t arg, vectorOut_t error) const |
|
template<typename LineSearchType > |
bool | oneStep (vectorOut_t arg, LineSearchType &lineSearch) const |
|
void | updateJacobian (vectorIn_t arg) const |
| Computes the jacobian of the explicit functions and updates the jacobian of the problem using the chain rule. More...
|
|
void | errorThreshold (const value_type &threshold) |
| Set error threshold. More...
|
|
value_type | errorThreshold () const |
| Get error threshold. More...
|
|
segments_t | implicitDof () const |
| Return the indices in the input vector which are solved implicitely. More...
|
|
virtual std::ostream & | print (std::ostream &os) const |
|
bool | integrate (vectorIn_t from, vectorIn_t velocity, vectorOut_t result) const |
|
template<typename LineSearchType > |
HierarchicalIterative::Status | impl_solve (vectorOut_t arg, bool _optimize, LineSearchType lineSearch) const |
|
|
ExplicitConstraintSet & | explicitSolver () HPP_CONSTRAINTS_DEPRECATED |
|
const ExplicitConstraintSet & | explicitSolver () const HPP_CONSTRAINTS_DEPRECATED |
|
void | explicitSolverHasChanged () HPP_CONSTRAINTS_DEPRECATED |
|
|
vector_t | rightHandSideFromConfig (ConfigurationIn_t config) |
| Compute right hand side of equality constraints from a configuration. More...
|
|
bool | rightHandSideFromConfig (const ImplicitPtr_t &constraint, ConfigurationIn_t config) |
| Compute right hand side of a constraint from a configuration. More...
|
|
bool | rightHandSide (const ImplicitPtr_t &constraint, vectorIn_t rhs) |
| Set right hand side of a constraints. More...
|
|
bool | getRightHandSide (const ImplicitPtr_t &constraint, vectorOut_t rhs) const |
|
void | rightHandSide (vectorIn_t rhs) |
| Set the right hand side. More...
|
|
vector_t | rightHandSide () const |
| Get the right hand side. More...
|
|
size_type | rightHandSideSize () const |
| Get size of the right hand side. More...
|
|
| HierarchicalIterative (const LiegroupSpacePtr_t &configSpace) |
|
| HierarchicalIterative (const HierarchicalIterative &other) |
|
virtual | ~HierarchicalIterative () |
|
value_type | residualError () const |
| Returns the squared norm of the error vector. More...
|
|
void | residualError (vectorOut_t error) const |
| Returns the error vector. More...
|
|
template<typename LineSearchType > |
solver::HierarchicalIterative::Status | solve (vectorOut_t arg, LineSearchType lineSearch) const |
|
const LiegroupSpacePtr_t & | configSpace () const |
| Get configuration space on which constraints are defined. More...
|
|
void | add (const DifferentiableFunctionPtr_t &f, const std::size_t &priority) HPP_CONSTRAINTS_DEPRECATED |
| Add an implicit equality constraint. More...
|
|
void | add (const DifferentiableFunctionPtr_t &f, const std::size_t &priority, const ComparisonTypes_t &comp) HPP_CONSTRAINTS_DEPRECATED |
| Add an implicit constraint. More...
|
|
void | add (const ImplicitPtr_t &constraint, const std::size_t &priority) |
| Add an implicit constraint. More...
|
|
void | saturation (const Saturation_t &saturate) |
| Set the saturation function. More...
|
|
const Saturation_t & | saturation () const |
| Get the saturation function. More...
|
|
template<typename LineSearchType > |
Status | solve (vectorOut_t arg, LineSearchType ls=LineSearchType()) const |
| Solve the system of non linear equations. More...
|
|
Status | solve (vectorOut_t arg) const |
| Solve the system of non linear equations. More...
|
|
bool | isSatisfied (vectorIn_t arg) const |
|
const value_type & | sigma () const |
| Returns the lowest singular value. More...
|
|
void | freeVariables (const segments_t intervals) |
| Set free velocity variables. More...
|
|
void | freeVariables (const Indices_t &indices) |
| Set free velocity variables. More...
|
|
const Indices_t & | freeVariables () const |
| Get free velocity variables. More...
|
|
void | maxIterations (size_type iterations) |
| Set maximal number of iterations. More...
|
|
size_type | maxIterations () const |
| Get maximal number of iterations in config projector. 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...
|
|
value_type | inequalityThreshold () const |
| Get the inequality threshold. More...
|
|
void | inequalityThreshold (const value_type &it) |
| set the inequality threshold More...
|
|
void | lastIsOptional (bool optional) |
|
bool | lastIsOptional () const |
|
const ImplicitConstraintSet & | constraints (const std::size_t priority) |
| Get set of constraints for a give priority level. More...
|
|
std::size_t | numberStacks () const |
|
const size_type & | dimension () const |
|
const size_type & | reducedDimension () const |
| Dimension of the problem after removing the rows of the jacobian which do not influence the error (only zeros along those lines). More...
|
|
ArrayXb | activeParameters () const |
| Configuration parameters involved in the constraint resolution. More...
|
|
ArrayXb | activeDerivativeParameters () const |
| Velocity parameters involved in the constraint resolution. More...
|
|
vector_t | rightHandSideFromConfig (ConfigurationIn_t config) |
| Compute right hand side of equality constraints from a configuration. More...
|
|
void | rightHandSideAt (const value_type &s) |
| Set the right hand side at a given parameter. More...
|
|
vector_t | rightHandSide () const |
| Get the right hand side. More...
|
|
size_type | rightHandSideSize () const |
| Get size of the right hand side. More...
|
|
template<bool ComputeJac> |
void | computeValue (vectorIn_t arg) const |
| Compute the value of each level, and the jacobian if ComputeJac is true. More...
|
|
void | computeSaturation (vectorIn_t arg) const |
|
void | getValue (vectorOut_t v) const |
|
void | getReducedJacobian (matrixOut_t J) const |
|
void | computeError () const |
| If lastIsOptional() is true, then the last level is ignored. More...
|
|
const vector_t & | lastStep () const |
| Accessor to the last step done. More...
|
|
Solve a non-linear system equations with explicit and implicit constraints.
This solver is defined in paper https://hal.archives-ouvertes.fr/hal-01804774/file/paper.pdf. We give here only a brief description
The unknows (denoted by \(\mathbf{q}\)) of the system of equations is a Lie group. It is usually a robot configuration space or the Cartesian product of robot configuration spaces.
The solver stores a set of implicit numerical constraints: \(g_1 (\mathbf{q}) = 0, g_2 (\mathbf{q}) = 0, \cdots\). These implicit constraints are added using method HierarchicalIterative::add.
The solver also stores explicit numerical constraints (constraints where some configuration variables depend on others) in an instance of class ExplicitConstraintSet. This instance is accessible via method BySubstitution::explicitConstraintSet.
When an explicit constraint is added using method ExplicitConstraintSet::add, this method checks that the explicit constraint is compatible with the previously added ones. If so, the constraint is stored in the explicit constraint set. Otherwise, it has to be added as an implicit constraint.
See Section III of the above mentioned paper for the description of the constraint resolution.