hpp-manipulation  4.9.0
Classes for manipulation planning.
Helpers to build the graph of constraints

Classes

struct  hpp::manipulation::graph::helper::NumericalConstraintsAndPassiveDofs
 
struct  hpp::manipulation::graph::helper::FoliatedManifold
 
struct  hpp::manipulation::graph::helper::Rule
 
struct  hpp::manipulation::graph::helper::ObjectDef_t
 

Typedefs

typedef std::vector< Rulehpp::manipulation::graph::helper::Rules_t
 
typedef boost::tuple< ImplicitPtr_t, ImplicitPtr_t, LockedJoints_thpp::manipulation::graph::helper::PlacementConstraint_t
 
typedef std::vector< HandlePtr_thpp::manipulation::graph::helper::Handles_t
 
typedef std::vector< GripperPtr_thpp::manipulation::graph::helper::Grippers_t
 
typedef boost::tuple< PlacementConstraint_t, Handles_t, std::size_t > hpp::manipulation::graph::helper::Object_t
 
typedef std::vector< Object_thpp::manipulation::graph::helper::Objects_t
 

Enumerations

enum  hpp::manipulation::graph::helper::GraspingCase { hpp::manipulation::graph::helper::NoGrasp = 1 << 0, hpp::manipulation::graph::helper::GraspOnly = 1 << 1, hpp::manipulation::graph::helper::WithPreGrasp = 1 << 2 }
 
enum  hpp::manipulation::graph::helper::PlacementCase { hpp::manipulation::graph::helper::NoPlace = 1 << 3, hpp::manipulation::graph::helper::PlaceOnly = 1 << 4, hpp::manipulation::graph::helper::WithPrePlace = 1 << 5 }
 

Functions

template<int gCase>
Edges_t hpp::manipulation::graph::helper::createEdges (const std::string &forwName, const std::string &backName, const StatePtr_t &from, const StatePtr_t &to, const size_type &wForw, const size_type &wBack, const FoliatedManifold &grasp, const FoliatedManifold &pregrasp, const FoliatedManifold &place, const FoliatedManifold &preplace, const bool levelSetGrasp, const bool levelSetPlace, const FoliatedManifold &submanifoldDef=FoliatedManifold())
 
EdgePtr_t hpp::manipulation::graph::helper::createLoopEdge (const std::string &loopName, const StatePtr_t &state, const size_type &w, const bool levelSet, const FoliatedManifold &submanifoldDef=FoliatedManifold())
 
void hpp::manipulation::graph::helper::graspManifold (const GripperPtr_t &gripper, const HandlePtr_t &handle, FoliatedManifold &grasp, FoliatedManifold &pregrasp)
 
void hpp::manipulation::graph::helper::strictPlacementManifold (const ImplicitPtr_t placement, const ImplicitPtr_t preplacement, const ImplicitPtr_t placementComplement, FoliatedManifold &place, FoliatedManifold &preplace)
 
void hpp::manipulation::graph::helper::relaxedPlacementManifold (const ImplicitPtr_t placement, const ImplicitPtr_t preplacement, const LockedJoints_t objectLocks, FoliatedManifold &place, FoliatedManifold &preplace)
 
void hpp::manipulation::graph::helper::graphBuilder (const ProblemSolverPtr_t &ps, const Objects_t &objects, const Grippers_t &grippers, GraphPtr_t graph, const Rules_t &rules=Rules_t())
 
GraphPtr_t hpp::manipulation::graph::helper::graphBuilder (const ProblemSolverPtr_t &ps, const std::string &graphName, const StringList_t &griNames, const std::list< ObjectDef_t > &objs, const StringList_t &envNames, const Rules_t &rules, const value_type &prePlaceWidth=0.05)
 

Detailed Description

Typedef Documentation

◆ Grippers_t

◆ Handles_t

◆ Object_t

Tuple representing an object as follows:

  • PlacementConstraint_t constraint to place the object
  • Handles_t list of handles of the object
  • std::size_t the index of this tuple in Objects_t.
    Note
    the index must be unique, as object equallity is checked using this index.

◆ Objects_t

◆ PlacementConstraint_t

◆ Rules_t

Enumeration Type Documentation

◆ GraspingCase

Enumerator
NoGrasp 
GraspOnly 
WithPreGrasp 

◆ PlacementCase

Enumerator
NoPlace 
PlaceOnly 
WithPrePlace 

Function Documentation

◆ createEdges()

template<int gCase>
Edges_t hpp::manipulation::graph::helper::createEdges ( const std::string &  forwName,
const std::string &  backName,
const StatePtr_t from,
const StatePtr_t to,
const size_type wForw,
const size_type wBack,
const FoliatedManifold grasp,
const FoliatedManifold pregrasp,
const FoliatedManifold place,
const FoliatedManifold preplace,
const bool  levelSetGrasp,
const bool  levelSetPlace,
const FoliatedManifold submanifoldDef = FoliatedManifold() 
)

Create edges according to the case. gCase is a logical OR combination of GraspingCase and PlacementCase

When an argument is not relevant, use the default constructor of FoliatedManifold

◆ createLoopEdge()

EdgePtr_t hpp::manipulation::graph::helper::createLoopEdge ( const std::string &  loopName,
const StatePtr_t state,
const size_type w,
const bool  levelSet,
const FoliatedManifold submanifoldDef = FoliatedManifold() 
)

◆ graphBuilder() [1/2]

void hpp::manipulation::graph::helper::graphBuilder ( const ProblemSolverPtr_t ps,
const Objects_t objects,
const Grippers_t grippers,
GraphPtr_t  graph,
const Rules_t rules = Rules_t() 
)

Fill a Graph

Note
It is assumed that a gripper can grasp only one handle and each handle cannot be grasped by several grippers at the same time.
Parameters
[in,out]graphmust be an initialized empty Graph.

◆ graphBuilder() [2/2]

GraphPtr_t hpp::manipulation::graph::helper::graphBuilder ( const ProblemSolverPtr_t ps,
const std::string &  graphName,
const StringList_t griNames,
const std::list< ObjectDef_t > &  objs,
const StringList_t envNames,
const Rules_t rules,
const value_type prePlaceWidth = 0.05 
)

◆ graspManifold()

void hpp::manipulation::graph::helper::graspManifold ( const GripperPtr_t gripper,
const HandlePtr_t handle,
FoliatedManifold grasp,
FoliatedManifold pregrasp 
)

Create a waypoint edge taking into account:

  • grasp
  • placement
  • preplacement Create a waypoint edge taking into account
  • grasp
  • pregrasp
  • placement
    Todo:
    when the handle is a free flying object, add the robot DOFs as passive dofs to the numerical constraints for paths

◆ relaxedPlacementManifold()

void hpp::manipulation::graph::helper::relaxedPlacementManifold ( const ImplicitPtr_t  placement,
const ImplicitPtr_t  preplacement,
const LockedJoints_t  objectLocks,
FoliatedManifold place,
FoliatedManifold preplace 
)

The placement foliation constraint is built locked joints It is faster than strictPlacementManifold but the foliation parametrisation is redundant.

◆ strictPlacementManifold()

void hpp::manipulation::graph::helper::strictPlacementManifold ( const ImplicitPtr_t  placement,
const ImplicitPtr_t  preplacement,
const ImplicitPtr_t  placementComplement,
FoliatedManifold place,
FoliatedManifold preplace 
)

The placement foliation constraint is built using hpp::constraints::ConvexShapeMatcherComplement