Info |
---|
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. You can also use the Gripper and tcp check in the PAlly URcap to test if the Gripper is correct. |
Table of Contents |
---|
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
...
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]
...
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: 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
Lengths are specified in millimeters, weight in kilograms.
Info |
---|
Currently we do not support the vacuum lost signal in gripper.json. |
Every time you make changes in the gripper json file, make sure to:
verify the correct syntax in a online tool like https://jsonformatter.org/
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:
/programs/patterns
/programs
The gripper.json file
Code Block |
---|
{ "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 name of the created json file “gripperMUST BE gripper.json“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.
...
...
Example gripper.json file
Code Block |
---|
{
"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]
]
}
|
...
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 TCP offset is properly set.
Read more about how to import a gripper.json file.