Skip to main content

Advanced Palletizing

General

The Advanced Palletizing Node helps process items arranged on a pallet with an arbitrary layout with a single Node.
With the repeated execution of this Node, it will move the Robot to every item on the defined pallet.
The items have to all be of the same size and shape.

Palletizing setup

By clicking the Configure Pallet button you start the configuration process. Complete and validate all required sections of the configuration. The following sections exist in the configuration:

  1. Pallet Size: Set your pallet's size. Choose from predefined sizes based on geography or set a custom pallet size.
  2. Box Dimensions: Specify the dimensions of the box (height, width, length).
  3. Grasping Pose: Specify the grasping pose, meaning the relative Position of the TCP to the box coordinate system. You can also rotate the Pose to visualize the direction in which the gripper opens, in case you are using a clamping gripper. The orientation is not used in the computations and is merely a helpful visualization.
  4. Pallet Position: Teach the corners of the pallet (Pose A, Pose B, Pose D). This allows the Robot to compute the Pose of the pallet relative to the base coordinate system. Note that you should teach Pose A with the same TCP position relative to the box as specified in the Grasping Pose step. It is recommended to first grasp the box as specified, then move it to Pose A, Pose B, and Pose D. If your pallet is aligned with the base coordinate system of the Robot, it is sufficient to teach Pose A and manually type in the direction of Pose B and Pose D. Note that Pose B is always along the long side of the pallet and Pose D along the short side.

palletizing instructions

  1. Layout & Sequence: Design your layouts by clicking anywhere on the pallet. You can create multiple layouts. It is also possible to mirror or copy existing layouts to create new ones. Within each layout you can:
    • Specify the palletizing order in which items shall be placed on or removed from the pallet. Make sure the palletizing order will not cause collisions between boxes.
    • Create Box Groups to organize boxes that share similar approach behavior.
    • Define Item Approach Trajectories for each group, specifying how the Robot shall move to place boxes on the pallet.
  2. Layer Stack: Specify the number of layers for your pallet and assign each layer a layout. If you have two or more layouts, you can check the Alternating box to automatically cycle through layouts for all layers. Note that Layer 1 is the bottommost layer in the pallet, regardless of whether you palletize or depalletize.
  3. Speed: Specify the velocity and acceleration for all palletizing operations. Reduce accelerations if you want smoother movements.
  4. Optional - Pallet Approach Pose: Define a Joint Pose that the Robot will move to before every item and after every item. Use this Pose if you want to make sure that collisions and singularities are avoided during palletizing operations.
  5. Pallet Variables: Configure Variables to track the palletizing process, including Next Item, Current Layer, and Current Pallet Height.

Palletizing processing

  • First the Approach Movement brings the Robot to the Approach Pose, a secure Pose above the Pallet, before the Before Item Approach output is triggered.
  • After that the Robot moves in Cartesian space to the Item (Movement to Item).
  • At the Pallet position, the At Item output is triggered, which can be used, for example, to pick the item.
    Note: only Relative Movements should be done at this output.
  • Afterward the Robot moves again to the Approach Pose and triggers the Process Item output.
    This output might be useful to place the previously picked item somewhere else.

These steps are repeated for every Item on the Pallet.
Additionally, the Every N Iterations output is triggered every N iterations if specified.
If all Pallet positions are processed, the After Completion output is triggered to continue the Flow.

pallet execution

Approach Pose

The Approach Pose defines an optional Joint Movement to a secure Position above the Pallet. The movement will be executed before approaching and processing the item.

Movement to Item

If the Pallet Approach Pose is defined, the movement starts from the Approach Pose, otherwise from the current Robot Pose. The Robot moves along the Item Approach Trajectory (if defined for the box group) to the item Position on the pallet.

Item Approach Trajectory

Each Box Group can have its own Item Approach Trajectory, defined by relative movements toward the item Position. This allows different boxes to be approached in different ways depending on their group. Boxes in the Default Group are approached directly without a custom trajectory.

  • Movement 1: x,y,z = 0,100,0
  • Movement 2: x,y,z = 100,0,0

The relative movements are used to calculate the Cartesian waypoints (cyan 1, 2). The blending radii defined by the movements act on the computed waypoint accordingly. For example, the Blending Radius of the first movement acts on the first computed waypoint, i.e. the movement from the Approach Pose to 1 and the movement from 1 to 2 is blended with that Blending Radius.

Pallet Offsets

A start and end offset of the Pallet can be defined to only execute a section of it. The offset can be defined by providing the Start and End Box indices at Selected Boxes section in the Node. The black colored items are executed whereas the white ones are ignored. A Full Pallet or Current Layer scope can additionally be chosen to palletize all boxes or only the currently selected layer reflected by the layer slider.

palletizing offset

Palletize Top to Bottom

With this switch you can define whether you want to process your pallet from bottom to top (palletizing) or from top to bottom (depalletizing).

Reverse Item Approach Trajectory

This option will make the Robot execute the Item Approach Trajectory in reverse after each item. Note that the reversed Item Approach Trajectory will be executed after the At Item branch and before the Process Item branch.

Trigger externally

trigger externally

If Trigger externally is turned on, the Node will not trigger itself again after an item is processed. In this case, it waits until it gets triggered by the Node that comes right before.

This is helpful if you want to e.g. use a Stack Node to grab items, and then use another Stack/Grid/Palletizing Node behind (on the Process Item output) to put those items on another Stack/Grid/Pallet.

trigger externally

Every N Iterations

branch every

If Branch every is turned on, the Node activates the <Every N iterations> output, where you can run some extra Nodes after a number of iterations.

For example, if you have a soldering application and after every 10th item you need to get some fresh soldering tin, then you can just enable the Branch every toggle and specify 10 as iterations. Then you build the Flow to get more soldering tin on the now available Every 10 Iterations output.

note

The iterations reset after the Node is finished.

Pallet Variables

In the Pallet Variables panel you can specify different Variables that will be helpful for you to better control the palletizing process. Currently, there are three Variables that you can access: Next Item, Current Layer, and Current Pallet Height.

Next item

You can optionally set a Next item Variable. The Node will then always process the item with the number that matches the current value of the Variable. You will have to alter the Variable in every iteration manually, e.g. with a Variable Node.

To finish the Node, you can simply set the Variable to a value that is outside the defined offsets.
It will then execute the After Completion branch.

next item

Current Layer

The Current Layer Variable is an integer that tells you in which layer the palletizing process is currently in. Setting this Variable is optional. Note that the value of this Variable is computed by the Advanced Palletizing Node, so you should only use it, but do not overwrite the Variable manually. The Node will compute the current layer for you and write the value into the Current Layer Variable. You can then use that Variable in your Flow, for example, in a Condition Node.

Current Pallet Height

The Current Pallet Height Variable is a Float Variable that tells you the height of the current layer. Setting this Variable is optional. Note that the value of this Variable is computed by the Advanced Palletizing Node, so you should only use it, but do not overwrite the Variable manually. The Node will compute the current height for you and write the value into the Current Pallet Height Variable. For example, the Current Pallet Height can be used in a Pose Variable Expression in order to construct a Pose that you can then use in a Cartesian Movement Node in order to place an Interlayer.