This package implements a solver for manipulation planning problems. A manipulation planning problem is defined by:
To build a Device, have a look at the package hpp-manipulation-urdf. ManipulationPlanner implements a RRT-based algorithm to solve manipulation planning problems.
The graph of constraint, also referred to as constraint graph, represents the rules of a manipulation problem. The component of the graph are:
Node contains a set of Constraint that a configuration of the Robot should satisfy to be in the represented state. To ensure that a configuration is in only one state, the Node are ordered in a NodeSelector. The method NodeSelector::getNode(ConfigurationIn_t) const returns a pointer to the first Node for which Node::contains(ConfigurationIn_t) const returns true. For optimization only, another set of Constraint is used for StraightPath lying in this Node.
Edge has methods Edge::isInNodeFrom, to tell if a corresponding path lyes in Edge::from() or Edge::to(), and Edge::node(), to retrive this Node. Edge also contains two sets of Constraint:
ManipulationPlanner class implements an algorithm based on RRT. See this master thesis for details about the algorithm.