- Introduction
This package implements a solver for manipulation planning problems. A manipulation planning problem is defined by:
- Device: a collection of several Device with grippers and handles,
- Graph: A graph of constraints defining the rules of a manipulation problem.
ManipulationPlanner implements a RRT-based algorithm to solve manipulation planning problems.
- Constraint graph
- The graph of constraint, also referred to as constraint graph, represents the rules of a manipulation problem. The component of the graph are:
graph::State 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 graph::State are ordered in a graph::StateSelector. The method graph::StateSelector::getState(ConfigurationIn_t) const returns a pointer to the first graph::State for which graph::State::contains(ConfigurationIn_t) const returns true. For optimization only, another set of Constraint is used for StraightPath lying in this graph::State.
graph::Edge has methods graph::Edge::state() to tell in which graph::State a corresponding path lyes graph::Edge also contains two sets of Constraint:
- Note
- For implementation details, see graph::Graph. For more information about parametric and non-parametric constraints, see DifferentiableFunction and ConfigProjector
- Manipulation planner
ManipulationPlanner class implements an algorithm based on RRT. See this master thesis for details about the algorithm.