Benji January 21, 2026, 6:51am1
Hi all,
“我正在 Visual Components Premium 4.10 中构建一个分拣单元,并使用机器人程序编辑器(首选不使用 Python)。
我当前的分拣机器人程序可以处理托盘上的一个 TS 零件(机器人实际并未夹持零件),但托盘上总共有 50 个 TS 零件,呈 5×10 的网格布局。我希望有一种可扩展的方法,这样就不必针对 50 个不同的抓取点/子程序分别进行示教和维护。
下面附上了我的项目以及一张图片。
先行感谢。”
Phase 1.vcmx(11.3 MB)
KustiH January 21, 2026, 6:57am2
你可以定义一个抓取程序,该程序的所有运动点都基于一个基准坐标系(base frame),然后创建一个带有 While 语句的循环,在每次抓取操作之间相对地移动这个基准坐标系。在本教程中,机器人的编程方式与此类似,通过仅移动基准坐标,以相同的动作序列在托盘上按网格放置箱子。
Palletizing robot programming | Visual Components Academy
2 Likes
谢谢。然而我在实现这一点上遇到了困难,希望能得到一些帮助。我的想法如下:
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)
mkittell 2026年1月21日,晚上8:17
6
你也可以通过过程建模来实现这一点。你需要创建一个装配体,然后就可以自动执行拾取操作。这个视频会引导你完成设置:
如何完成装配或拆卸任务 | Visual Components Academy
1 个赞
IF 语句的值6
1 Like