- 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:
- State represents a state of the Robot with constraints,
- Edge represents a transition between two State with parametric constraints.
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 State are ordered in a StateSelector. The method StateSelector::getState(ConfigurationIn_t) const returns a pointer to the first State for which State::contains(ConfigurationIn_t) const returns true. For optimization only, another set of Constraint is used for StraightPath lying in this State.
Edge has methods Edge::state() to tell in which State a corresponding path lyes 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.