Package openravepy :: Package databases :: Module grasping

Module grasping

source code

把持を探索する手法と接触点による安定性の計算

../../images/databases_grasping.jpg

Running the Generator

openrave.py --database grasping

Usage

Dynamically generate/load the grasping set for a robot manipulator and target object:

robot.SetActiveManipulator(...)
gmodel = openravepy.databases.grasping.GraspingModel(robot,target)
if not gmodel.load():
    gmodel.autogenerate()

Description

コメントです

OpenRAVE can simulate grasps for any type of robotic hand, evaluate the quality of the grasps, and use those grasps in a more complex grasp planning framework. This tutorial is meant to introduce you to the grasper plugin and the scripts provided to manage the testing and simulation. At the end, you should be able to create grasp tables and use them effectively in OpenRAVE.

A grasp is simulated by giving the end-effector an initial pose and initial joint angles (preshape). Then the end effector moves along a direction (usually along the normal of the palm) until it hits the target object. Once hit, the 'fingers' of the end-effector slowly close around the object until they cannot close further. The contacts between the end-effector and target object are extracted, and force closure is calculated. The grasper plugin is responsible for this simulation, the scripts just pass in the correct parameters to it.

Grasp set creation first tries to uniformly sample the surface of the object to determine where to the approach directions should be. Sampling the actual geometric surface of the object can lead to unwanted results due to possible concavities like the handle of a cup. A simpler approach is to take the bounding box of the object and sample its surface uniformly (see GraspingModel.computeBoxApproachRays).

../../images/grasping_box_sampling.jpg

Once the surface of the box is sampled, the intersection of the object and a ray originating from each point going inward is taken. The normal of the object's surface from each of these intersection points is taken to be the approaching direction of the end-effector. The red lines in the above image indicate the rays along which the end-effector will approach the cup.

../../images/grasping_surface_sampling.jpg

Once the initial pose, preshape, and approach direction are chosen, the grasper planner is called, which queries the contact points of the grasp and analyzes them for force closure.

../../images/barrett_grasp_strategy.jpg

Render the final configuration of the end-effector closing down on the target object along with the friction cones at each contact point (red transparent cones).

../../images/grasping_barrett_mug1.jpg ../../images/grasping_barrett_mug3.jpg

Calling GraspingModel.generate generates tables for a ketchup bottle.

../../images/grasping_barrett_ketchup1.jpg ../../images/grasping_barrett_ketchup2.jpg

Features

Here's a short list of features of the grasper planner and problem interfaces:


Author: Rosen Diankov

Copyright: Copyright (C) 2009-2010 Rosen Diankov (rosen.diankov@gmail.com)

License: Apache License, Version 2.0

Classes
  GraspingModel
Holds all functions/data related to a grasp between a robot hand and a target
Functions
 
run(*args, **kwargs)
Executes the grasping database generation, args specifies a list of the arguments to the script.
source code
Variables
  __package__ = 'openravepy.databases'
Function Details

run(*args, **kwargs)

source code 

Executes the grasping database generation, args specifies a list of the arguments to the script.

Help

Usage: openrave.py --database grasping [options]

Grasp set generation example for any robot/body pair.

Options:
  -h, --help            show this help message and exit
  --plannername=PLANNERNAME
                        The grasper planner to use for this model
                        (default=none)
  --target=TARGET       The filename of the target body whose grasp set to be
                        generated (default=data/mug1.kinbody.xml)
  --noviewer            If specified, will generate the tables without
                        launching a viewer
  --boxdelta=BOXDELTA   Step size of of box surface sampling
  --spheredelta=SPHEREDELTA
                        Delta angle between directions on the sphere
  --normalanglerange=NORMALANGLERANGE
                        The range of angles around the surface normal to
                        approach from (default=0.0)
  --directiondelta=DIRECTIONDELTA
                        The average distance of approach directions for each
                        surface point in radians (default=0.4)
  --standoff=STANDOFFS  Add a standoff distance
  --roll=ROLLS          Add a roll angle
  --preshape=PRESHAPES  Add a preshape for the manipulator gripper joints
  --avoidlink=AVOIDLINKS
                        Add a link name to avoid at all costs (like sensor
                        links)
  --friction=FRICTION   Friction between robot and target object (default=0.4)
  --graspingnoise=GRASPINGNOISE
                        Random undeterministic noise to add to the target
                        object, represents the max possible displacement of
                        any point on the object. Noise is added after global
                        direction and start have been determined (default=0)
  --graspindex=GRASPINDEX
                        If set, then will only show this grasp index

  OpenRAVE Environment Options:
    --collision=COLLISION
                        Default collision checker to use
    --physics=PHYSICS   Default physics engine to use
    -d DEBUG, --debug=DEBUG
                        Debug level

  OpenRAVE Database Generator General Options:
    --show              Graphically shows the built model
    --getfilename       If set, will return the final database filename where
                        all data is stored
    --gethas            If set, will exit with 0 if datafile is generated and
                        up to date, otherwise will return a 1. This will
                        require loading the model and checking versions, so
                        might be a little slow.
    --robot=ROBOT       OpenRAVE robot to load
                        (default=robots/barrettsegway.robot.xml)
    --manipname=MANIPNAME
                        The name of the manipulator on the robot to use