# Definition

Quick Access Poses helps to develop Programs faster. Define custom poses to make them easily accessible through the Control Panel.

## Create Quick Access Poses¶

Quick Access Poses are defined in ~/.dnb/data/quick_access_poses. Each needs a separate directory (e.g. ~/.dnb/data/quick_access_poses/example) containing a YAML file with the pose definition.

## Structure¶

The following code shows the structure of a Quick Access Pose YAML file.

trajectory:   # list of poses
- position?:  # list entry has to contain either 1. position and/or orientation
x: float  #                                  2. joints
y: float
z: float
orientation?:
rz: float
ry: float
rx: float
- joints?: float[]
precondition?:   # has to contain either 1. a position and/or orientation
positon?:      #                       2. joints
x: float
y: float
z: float
position_tolerance?: float
orientation?:
rz: float
ry: float
rx: float
orientation_tolerance?: float
joints?: float[]
joints_tolerance?: float
tcp?:
translation:
x: float
y: float
z: float
rotation:
rz: float
ry: float
rx: float
tooltip?: string   # tooltip shown if precondition is not fullfilled
image?: string   # name of the image file contained in the same directory as the yaml file

Fields marked with a ? are optional. The mark ? is just informative, please don't write it in the YAML file.

### Trajectory¶

trajectory:   # list of poses
- position?:  # list entry has to contain either 1. position and/or orientation
x: float  #                                  2. joints
y: float
z: float
orientation?:
rz: float
ry: float
rx: float
- joints?: float[]

In some cases moving directly to the target pose is not possible and therefore Quick Access Poses allows trajectories with several waypoints. Each waypoint can consist of

1. position and/or orientation
2. joints

If only a position is provided the orientation will stay as it is and vice versa. When using joints, the joints array should have as many entries as the robot has joints. Orientation and joints need to be set in radians.

### Preconditions¶

precondition?:   # has to contain either a position or an orientation
positon?:
x: float
y: float
z: float
position_tolerance?: float
orientation?:
rz: float
ry: float
rx: float
orientation_tolerance?: float
joints?: float[]
joints_tolerance?: float

To ensure the robot is in a certain position before starting to move a precondition can be set. Preconditions need to have either

1. position, orientation or both or
2. joints

By default the robot needs to be inside a distance of 0.005 m for position and 0.005 rad for orientation/joints from the precondition pose. These values can be changed by setting the position_tolerance, the orientation_tolerance and the joints_tolerance fields. Orientation and joints need to be set in radians.

### TCP¶

tcp?:
translation:
x: float
y: float
z: float
rotation:
rz: float
ry: float
rx: float

To ensure the robot is using a certain tcp the transformation of the tcp can be set. TCP needs to have a translation and a rotation. Setting a TCP is optional. When TCP is omitted, flange will be used as default value. Rotation needs to be set in radians.

### Tool tip¶

tooltip?: string   # tool tip shown if precondition is not fulfilled

If preconditions are not fulfilled, a default tool tip is shown. To display a customized message the tool tip field can be set.

### Image¶

image?: string   # name of the image file contained in the same directory as the YAML file

Each Quick Access Pose can have an image, which will be shown in the Control Panel. This can be achieved by adding an image to the directory of the Quick Access Pose and adding the filename to the image field of the YAML definition.