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
      • 调用 Place_TS
      • c = c+1
    • r = r+1

请注意,你还需要在While循环内使用SetBase语句来移动基座。
以下是我之前编写的一个码垛程序的主要部分。它也包括了z维度,但原理是相同的:
- 在最内层循环中,将基座沿X方向移动
- 在上层循环中,将基座相对于Y方向移动并且沿负X方向移动5 * pitch_x,这样基座的x坐标就不会持续增加。

1个赞

是的,谢谢,我最终解决了。你知道为什么基座从位置2开始而不是位置1,以及为什么第一个循环迭代中没有包含组件1吗?

目前这个序列循环处理的是奇数行。我还想为偶数行实现相同的逻辑。在这种情况下,你会建议为偏移位置定义一个新的基座吗?

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