Pally General - Zones

Pally General - Zones

Zones

Normally, the robot completes a layer before starting the next layer. However, the pallet can be split into different regions (the "zones" and the optional "altZones" structure), which override the regular layer completion rules. In general, a zone cannot be started until the previous zone is finished.

image-20250715-125141.png

Zones can divide the pallet along the X, Y, and Z-axis. For example, it is possible to complete all layers of the furthest (outer) half of the pallet before proceeding to the nearest (inner) half. The coordinate system, when palletizing starts at the corner of the pallet, is indicated with yellow stars in the picture below. The yellow star is positioned 0,0,0.

image-20250715-132426.png

 

The URCap allows inserting extra program code before starting and after completing a zone, in order to communicate with any optional external hardware or software or perform a custom operation when a specific part of the pallet is started and/or completed.

Each zone definition can contain a position transformation hint (the "posData" array), which the Pally URCap may use to control a lifting column. The posData value is optional, and the program will not control the lifting column unless the value is explicitly defined.

The example below shows how you can write the script when you include it in the pattern file.

{ [...]     "zones" : [         {             "z" : { "condition" : "<=", "value" : 730 },             "posData" : [0,0,0]         },         {             "z" : { "condition" : "<=", "value" : 980 },             "posData" : [0,0,466]         },         {             "x" : { "condition" : ">=", "value" : 200 },             "z" : { "condition" : "<=", "value" : 1220 },             "posData" : [0,0,466]         },         {             "x" : { "condition" : ">=", "value" : 500 },             "z" : { "condition" : ">=", "value" : 1220 },             "posData" : [0,0,466]         },         {             "x" : { "condition" : "<=", "value" : 200 },             "z" : { "condition" : "<=", "value" : 1220 },             "posData" : [0,0,466]         },         {             "x" : { "condition" : "<=", "value" : 500 },             "z" : { "condition" : ">=", "value" : 1220 },             "posData" : [0,0,466]         }     ]

If you create a separate zones file, you need to remove the “zones” line from the script, as you can see from the example below

[ { "z" : { "condition" : "<=", "value" : 1200 }, "posData" : [0,0,100] }, { "z" : { "condition" : ">=", "value" : 1201 }, "posData" : [0,0,500] } ]

Conditions

Zones are defined by using relational operators "<", "<=", ">", ">=" on the x, y, and z axis in the Cartesian coordinate system defined by the pallet edges with the origo in the lower left corner of the pallet. If multiple conditions are used, they have to be enclosed in an array:

"x" : [  {"condition" : ">", "value": 500} ,  {"condition" : "<=", "value" : 800} ] ...

Note: Zones are evaluated in the order they are defined. If two or more zones overlap, the program will choose the first one that matches the condition criteria. This might cause some zones to never be activated.

It is also necessary to disable dynamic positioning in Pally for the zones file to be able to control the movement of the lifting column.

Position transformations

Each zone can define a position transformation hint, which may be used by the Pally URCap to control a lifting column and/or a base slider. Before the robot starts palletizing the specified zone, the external hardware is controlled by the Pally program to put the robot into the desired mounting position.

The "posData" value has the following format: [x, y, z] in the robot base coordinate system (in millimeters). The default position is [0, 0, 0].

Location of the zone definitions

For compatibility reasons, it is possible to define the zones in 3 different locations, which are loaded as a pattern file in the following options:

  1. The "zones" and "altZones" structures are included in the pattern file.

  2. A separate file called pattern_name.zones.json - for a specific pattern file called pattern_name.json, where “pattern_name” is the name of the pattern.

  3. A file called zones.json - for when you want the zones logic to be valid for all patterns in the installation.

You upload the file in the pattern menu in Pally.

If none of the above exists, and a supported lifting column is installed and configured properly, the Pally URCap can automatically split the pallet into smaller regions by generating virtual zones internally, and control the lifting column between layers.