/
Gripper JSON file format

Gripper JSON file format

After uploading a Gripper JSON file to Pally you can use the Gripper layout visualizer feature (Pally URcap 3.2 or newer) This will help you get the gripper settings correct.

Gripper layout visualizer

You can also use the Gripper and tcp check in the PAlly URcap to test if the Gripper is correct.

Gripper and TCP check

The vacuum zone manipulator

The gripper.json feature let you customize a gripper with one or more vacuum channels.

A gripper with 4 individual vacuum zones

 

How it works

In order to have this functionality working, the position and the dimensions of the bounding rectangle should be defined for each vacuum zone as well as the digital output channels that control the vacuum valves and optionally the compressed air used at release.

See complete example further down

The file structure:

name: name of the gripper

description: a short description of the gripper

picture: an optional picture in PNG format, encoded as a base64 string

dimensions:

  • width, length, height: total dimensions of the entire gripper (mm)

  • weight: weight of the gripper including mounting bracket and screws (kg)

  • foamHeight: the height of the foam / suction cups that can be pressed down (mm)

properties:

  • edgeAlignment: if true, the box edges will be aligned to the gripper zone edges, otherwise the gripper zone(s) will be centered above the box center

  • coveragePercent: defines how many percents of the vacuum zone (bounding rectangle) area must be covered in order to use a specific zone (0…100)

tcp: the tool center point (TCP) of the gripper as [x, y, z, rx, ry, rz] where x, y, z are given in mm, rx, ry, ry in degrees, measured relative to the robot tool flange*

cog: the center of gravity (COG) of the empty gripper as [x, y, z] where x, y, z are in mm, measured relative to the robot tool flange*

zones: definition of each individually controllable vacuum area

  • id: unique identifier (number) of the vacuum area, starting from 1

  • x, y: center point of the bounding rectangle of the zone, relative to the gripper center** (mm)

  • width, length: size of the bounding rectangle of the zone (mm)

  • grip: digital IO signal that controls the vacuum

    • type: standard, configurable, tool (robot IO type)

    • channel: the digital output channel (0-1 for tool 0-7 otherwise)

    • inverse: optional, true if high level signal means no vacuum

  • release: digital signal that controls the compressed air blow (optional)

    • type: standard, configurable, tool (robot IO type)

    • channel: the digital output channel (0-1 for tool 0-7 otherwise)

    • inverse: optional, true if high level signal means no blow

configurations: list of valid combinations of vacuum areas that can be used together 

*Please note: tcp and cog should be defined relative to the robot tool flange. i.e. exactly as you would enter the values in Polyscope.

 

Every time you make changes in the gripper json file, make sure to:

  •  verify the correct syntax in a online tool like Best JSON Formatter and JSON Validator: Online JSON Formatter

  • upload the file again with the same name (must be gripper.json)

  • select another gripper type e.g. custom gripper, and then

  • select “import from gripper.json” again

  • check the timestamp of last import has changed under the drop-down menu

  • make sure there is no other (probably older) gripper.json file in the “patterns” folder.

    The current Pally URCap reads both locations for compatibility reasons:

    1. /programs/patterns

    2. /programs

 

Example

The following diagram is an example of a 4-channel suction-cup gripper with its corresponding gripper.json file. The different colors indicate different groups of suction cups that can be controlled together.

 

 Example gripper.json file

{ "name": "4-channel gripper", "description": "test gripper for multiple product sizes", "dimensions": { "width": 400, "length": 200, "height": 150, "weight": 1.9, "foamHeight": 15 }, "properties": { "coveragePercent": 51, "edgeAlignment": false }, "tcp": [0, 0, 150, 0, 0, 0], "cog": [0, 0, 0], "zones": [ { "id": 1, "x": 0, "y": 0, "width": 110, "length": 180, "grip": { "type": "standard", "channel": 0, "inverse": false }, "release": { "type": "standard", "channel": 1 } }, { "id": 2, "x": -110, "y": 0, "width": 50, "length": 180, "grip": { "type": "standard", "channel": 2 }, "release": { "type": "standard", "channel": 3 } }, { "id": 3, "x": 110, "y": 0, "width": 50, "length": 180, "grip": { "type": "standard", "channel": 4 }, "release": { "type": "standard", "channel": 5 } }, { "id": 4, "x": 0, "y": 0, "width": 380, "length": 50, "grip": { "type": "standard", "channel": 6 }, "release": { "type": "standard", "channel": 7 } } ], "configurations": [ [1,2,3,4], [4], [1,2,3], [1,2], [2,3], [1], [2], [3] ] }

 

 

Read more about how to import a gripper.json file.

 

Related content

Gripper variables
Gripper variables
More like this
Gripper - Type
Gripper - Type
More like this
Gripper layout visualizer
Gripper layout visualizer
More like this
Setting up Pally
Setting up Pally
Read with this
Import from gripper.json
Import from gripper.json
More like this
Attaching the gripper
Attaching the gripper
Read with this