hpp-manipulation-corba  4.14.0
Corba server for manipulation planning
manipulation.security_margins.SecurityMargins Class Reference

Public Member Functions

def __init__ (self, problemSolver, factory, robotsAndObjects)
 
def computeJoints (self)
 
def computeGrippers (self)
 
def computePossibleContacts (self)
 
def setSecurityMarginBetween (self, obj1, obj2, margin)
 
def getSecurityMarginBetween (self, obj1, obj2)
 
def getActiveConstraintsAlongEdge (self, edge)
 
def apply (self)
 

Public Attributes

 ps
 
 robot
 
 factory
 
 robotsAndObjects
 
 marginMatrix
 
 robotToJoints
 
 jointToRobot
 
 gripperToRobot
 
 gripperToJoints
 
 contactSurfaces
 
 possibleContacts
 

Static Public Attributes

int defaultMargin = 0
 

Detailed Description

Handles security margins between robots and objects in collision checking

This class sets the requested security margins in \\link
hpp::core::PathValidation PathValidation\\endlink instances of
constraints graph \\link hpp::manipulation::graph::Edges
edges\\endlink.

\\sa hpp::core::ObstacleUserInterface::setSecurityMargins

By default the security margin between objects or robots is set to 0
It can be modified by changing the value of the class member
\\c defaultMargin.

A given security margin can be set for a pair of robots or objects by calling
method \\link SecurityMargins.setSecurityMarginBetween
\\c setSecurityMarginBetween \\endlink.

Once appropriate margins have been set by the user, method
\\link SecurityMargins.apply \\c apply \\endlink computes and sets for each edge
and each pair of bodies security margins as required. However, along edges
where two objects are requested to be close to each other, the security
margin is set to 0. For instance
\\li between a pregrasp and grasp configuration the security margin is set to
    0 between the gripper and the object to be grasped,
\\li along an edge where an object lies in a stable position the security
    margin between this object and any object holding a surface over which
    it could be put is set to 0.

Constructor & Destructor Documentation

◆ __init__()

def manipulation.security_margins.SecurityMargins.__init__ (   self,
  problemSolver,
  factory,
  robotsAndObjects 
)
Constructor
\\param robotsAndObjects list of robots and objects. It is assumed that
       joints names are prefixed by these name followed by "/"

Member Function Documentation

◆ apply()

def manipulation.security_margins.SecurityMargins.apply (   self)
Set security margins between
\\li robot bodies and objects,
\\li robot bodies and environment,
\\li objects and environment,

For each edge, do the following:
\\li set requested security margin between each pair of robots or
    objects,
\\li detect grasp and placement constraints that are active sometime along
    the edge,
\\li for each active grasp constraint, set security margin to 0 between
    joints of the gripper and object,
\\li for each active placement constraint, set security margin to 0
    between the placed object and any object or robot that holds a
    contact surface.
\\todo take into account environment.

◆ computeGrippers()

def manipulation.security_margins.SecurityMargins.computeGrippers (   self)

◆ computeJoints()

def manipulation.security_margins.SecurityMargins.computeJoints (   self)

◆ computePossibleContacts()

def manipulation.security_margins.SecurityMargins.computePossibleContacts (   self)

◆ getActiveConstraintsAlongEdge()

def manipulation.security_margins.SecurityMargins.getActiveConstraintsAlongEdge (   self,
  edge 
)
Get list of constraints that are active somewhere along the edge

The result is a dictionary with
 - key "place" and value a list of objects,
 - key "grasp" and value a list of pairs (gripper, object).

◆ getSecurityMarginBetween()

def manipulation.security_margins.SecurityMargins.getSecurityMarginBetween (   self,
  obj1,
  obj2 
)
Get security margin between two robots or objects
\\param obj1 name of first robot or object,
\\param obj2 name of second robot or object.

◆ setSecurityMarginBetween()

def manipulation.security_margins.SecurityMargins.setSecurityMarginBetween (   self,
  obj1,
  obj2,
  margin 
)
Set security margin between two robots or objects
\\param obj1 name of first robot or object,
\\param obj2 name of second robot or object.
\\param margin margin to set between those robots or objects.

Member Data Documentation

◆ contactSurfaces

manipulation.security_margins.SecurityMargins.contactSurfaces

◆ defaultMargin

int manipulation.security_margins.SecurityMargins.defaultMargin = 0
static

◆ factory

manipulation.security_margins.SecurityMargins.factory

◆ gripperToJoints

manipulation.security_margins.SecurityMargins.gripperToJoints

◆ gripperToRobot

manipulation.security_margins.SecurityMargins.gripperToRobot

◆ jointToRobot

manipulation.security_margins.SecurityMargins.jointToRobot

◆ marginMatrix

manipulation.security_margins.SecurityMargins.marginMatrix

◆ possibleContacts

manipulation.security_margins.SecurityMargins.possibleContacts

◆ ps

manipulation.security_margins.SecurityMargins.ps

◆ robot

manipulation.security_margins.SecurityMargins.robot

◆ robotsAndObjects

manipulation.security_margins.SecurityMargins.robotsAndObjects

◆ robotToJoints

manipulation.security_margins.SecurityMargins.robotToJoints

The documentation for this class was generated from the following file: