hpp-manipulation documentation

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.