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.

To build a Device, have a look at the package hpp-manipulation-urdf. 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:

  • Node represents a state of the Robot with constraints,
  • Edge represents a transition between two Node with parametric constraints.

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:

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.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends