Efficient way to pick 50 parts from a 5×10 pallet without teaching 50 targets (Robot Program)

Hi all,
I’m building a sorting cell in Visual Components Premium 4.10 and using the Robot Program editor (no Python preferred).

My sorting robot program currently works for one TS part on a pallet (robot not actually gripping the part), but the pallet contains 50 TS total in a 5×10 grid. I want a scalable method so I don’t have to teach and maintain 50 separate pick targets/subprograms. I have attached my project below as well as a picture.

Thank you in advance.

Phase 1.vcmx (11.3 MB)

You can define one pick program that uses a base frame for all motion points, and then create a loop with While statement where the base frame is shifted relatively between the pick operations. In this tutorial a robot is programmed in a similar way to place boxes on a pallet in a grid: the same sequence for placing the boxes is used several times by just shifting the base coordinate.
Palletizing robot programming | Visual Components Academy

2 Likes

Thank you. I am however struggling with the implementation of this and would appreciate some help with the implementation. My idea is the following:

Set up Base:

  • Set the pallet as the Base and set it so that:
    • Base_1 origin start at first component (either corner)
    • Base X-axis for columns (c = 5)
    • Base Y-axis for rows (r = 5)
    • Base Z-axis is up

Re-teach Positions for Base_1:

  • P1 = approach above component 1
  • P2 = pick/down at component 1
  • P3 = retract up from component
  • INPUTS/OUTPUTS stay the same

Pseudo Variables:

  • pitch_x = spacing in x between components
  • pitch_y = spacing in y between components
  • r = row counter
  • c = column counter

Pseudo:

  • SetBase to Base1
  • r = 0
  • while r < 5
    • c = 0
    • while c < 5
      • offset base
      • Call Pick_TS
      • Call Place_TS
      • c = c+1
    • r = r+1

Note that you also need to shift the bases inside the While loops using a SetBase statement.
Here’s the Main of a palletization routine I’ve made previously. It also has the z dimension, but the principle is the same:
-in innermost loop, shift base to X direction
-in the upper-level loop, shift base relatively to Y-direction and to negative X-direction by 5 * pitch_x, so that the base’s x-coordinate doesn’t keep increasing and increasing.

1 Like

Yes, thank you, I actually managed in the end. Do you know why the base starts at position 2 instead of position 1, and why component 1 is not being included in the first iteration of the loop?

This sequence currently loops through the odd-numbered rows. I also want to implement the same logic for the even-numbered rows. Would you recommend defining a new base in this case for the offset positions

Phase 1 v1.2.zip (33.9 MB)

You can also achieve this using process modeling. You would need to create an assembly and then you could automate the pick operation. This video walks you through the setup:
How to complete an Assembly or Disassembly Task | Visual Components Academy

1 Like