Skip to end of banner
Go to start of banner

Import from gripper.json

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

The vacuum zone manipulator

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

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

  • weight: weight of the gripper including mounting bracket and screws

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

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

tcp: the tool center point (TCP) of the gripper as [x, y, z, rx, ry, rz]

cog: the center of gravity (COG) of the empty gripper as [x, y, z]

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 relative to the gripper center

    • width, length: size of the bounding rectangle

    • 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: true if high level signal means no vacuum

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

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

Lengths are specified in millimeters, weight in kilograms.

The gripper.json file

{
  "name": "4-channel gripper",
  "description": "test gripper for multiple product sizes",
  "dimensions": {
    "width": 100,
    "length": 200,
    "height": 100,
    "weight": 1.85,
    "foamHeight": 15
  },
  "properties": {
    "coveragePercent": 40,
    "edgeAlignment": false
  },
  "tcp": [0, 0, 100, 0, 0, 0],
  "cog": [0, 0, 0],
  "zones": [
    {
      "id": 1,
      "x": 0,
      "y": -50,
      "width": 100,
      "length": 100,
      "grip": {
        "type": "standard",
        "channel": 0,
        "inverse": false
      },
      "release": {
        "type": "standard",
        "channel": 1
      }
    },
    {
      "id": 2,
      "x": 0,
      "y": 50,
      "width": 100,
      "length": 100,
      "grip": {
        "type": "standard",
        "channel": 2
      },
      "release": {
        "type": "standard",
        "channel": 3
      }
    }
  ],
  "configurations": [ 
    [1,2], [1], [2] 
  ]
}

NOTE: Name the created json file “gripper.json“

Upload to the robot

Move the gripper.json file to a USB-stick and put it into the teach pendant of the robot. Copy the file from the USB-stick and paste it in the home folder of the UR robot.

Select All Files for the filter to show the file.

As the file is now uploaded to the robot, you can then head over to the gripper tab under Installation and select “Import from gripper.json“

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.

 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] 
  ]
}

Copy the above code and use as a template. Name the created file “gripper.json“

Note: TCP settings are optional and may not be included in older gripper.json files. If your gripper is mounted with a position/rotation offset, make sure that the offset is properly set according to the specification in 5.1.3 - Attach the gripper properly


  • No labels