Definition Setup
Pick-and-place routines are simple opterations with a few key parts which are built into a standard motion trajectory.
Parts of a pick-and-place routine
A pick and place task has 5 main components:
- Set up move
- Grasp
- Manipulate
- Release
- Move to end
Settings
Settings consist of several options related to hardware and action configuration.
- type (
str
): The type of pick and place action.- Options are single or grid.
- use_arm (
bool
): Decide whether or not the arm is used in this trajectory - use_hand (
bool
): Decide whether or not the hand is used in this trajectory - reset_object (
bool
): Reset the object after the pick-and-place task is complete. Essentially just a reversal of the resulting trajectory
Example
settings:
boomerang: true
reset_object: true
type: grid # options: single, grid
use_arm: True
use_hand: True
Arm
Define specific important poses, how the object is picked up, and define a grid over which to make permutations
- orientation_type (
str
): How orientations are defined in poses. All orientations in the config file must be defined in the same units.- Options are quaternions, radians, or degrees.
- initial_pose (
dict
): The pose to start at - grasp_pose (
dict
orlist
): The pose or list of poses to use during the grasp portion of the task- If a single pose is provided, the arm moves stright from the initial pose to the grasping pose.
- release_pose (
dict
orlist
): The pose or list of poses where the object is released. - final_pose (
dict
): The ending pose. - pickup:
- type (
str
): The type of pickup action to perform. Options are square, triangle, and to_pose. - args (
dict
): Arguments to give to the pickup builder. These depend on the type (as described later).
- type (
- grid:
- num_pts (
list
): List of number of grid points to make in all cartesian dimensions. - dims (
list
): Dimensions of the grid of grasping poses in all cartesian dimensions. - release_dims (
list
): Dimensions of the grid of release poses in all cartesian dimensions. - affects_release_pose (
bool
): Choose if the grid should affect the release pose.
- num_pts (
Optional addons:
- manip_pose_before (
list
): A list of poses to execute between the grasp and manipulate steps - manip_pose_after (
list
): A list of poses to execute between the manipulate and release steps - manip_sequence (
list
): Add a long list of poses to the manipulate step.- type (
str
): The type of sequence. Currently trajectory is the only option. - args: Arguments to give to the manipu sequence builder
- trajectory (
str
): Filename where the trajectory is stored. - sequence (
list
): Sequence of moves (as defined in the trajectory file).
- trajectory (
- type (
Example
arm:
orientation_type: 'degrees' # options: 'quaterions', 'radians, 'degrees'
initial_pose:
position: [0.55, 0.30, 0.20]
orientation: [0,90,0]
grasp_pose:
- position: [0.55, 0.30, 0.20]
orientation: [0,90,0]
- position: [0.55, 0.30, 0.065]
orientation: [0,90,0]
... # Define all other poses similarly to this.
pickup:
type: to_pose # square, triangle, to_pose
args:
before: 'manip_pose_before'
after: 'manip_pose_after'
manip_sequence:
type: 'trajectory'
args:
trajectory: 'manip/armando_simple.yaml'
sequence: [path0, path1, path2, path3, path4, path5, path6, path7, path8, path9, path10, path11, path12, path13]
grid:
num_pts: [1,1,1] # Number of points on each side [number] in (x, y, z) order
dims: [0,0,0] # Dimension of each grid side [meters] in (x, y, z) order
release_dims: [0,0,0]
affects_release_pose: True
Hand
Define specific hand pressures and skills
- num_channels (
int
): Number of control channels in the hand - max_pressure (
float
): Maximum pressure the hand should be commanded to - min_pressure (
float
): Minimum pressure the hand should be commanded to - idle_pressure (
list
): A vector of pressures that the hand should be set to when idle
Grasp options
- grasp_sequence (
dict
): Define the grasping sequence- type (
str
): The type of grasping sequence. Options are trajectory or skill. - sequence (
list
): The pressure trajectory or list of skills to use.
- type (
- grasp_sequence, (legacy definition) (
list
): A pressure trajectory to use. Just use the list directly.
Manipulation options
- manip_sequence (
dict
): Define the in-hand manipulation sequence- type (
str
): The type of manipulation sequence. Options are trajectory or skill. - sequence (
list
): The pressure trajectory or list of skills to use.
- type (
- manip_sequence, (legacy definition) (
list
): A pressure trajectory to use. Just use the list directly.
manip_sequence
may be ommited if not needed
Release options
- release_sequence (
dict
): Define the release sequence- type (
str
): The type of release sequence. Options are trajectory or skill. - sequence (
list
): The pressure trajectory or list of skills to use.
- type (
- release_sequence, (legacy definition) (
list
): A pressure trajectory to use. Just use the list directly.
Example
Pick and place setup files should be located in “traj_setup”.