3. UR焊接工件坐标系标定与多工件偏移
为什么焊接程序需要工件坐标系
焊枪TCP标定解决的是“焊丝尖端在哪里”,而工件坐标系解决的是“焊缝在哪里”。如果所有示教点都直接记录在UR基坐标系下,一旦工件被重新装夹、更换夹具或放到另一台变位机上,原程序就会整体偏移,必须重新示教。工件坐标系的作用是把焊接轨迹表达在“工件自己的坐标”里,装夹位置变化时只需更新工件坐标系,程序即可复用。
UR本身没有独立的“工件坐标系”寄存器,工程上通常用特征坐标系(Feature)+ 偏移量来实现:先在一个基准装夹位置标定一个工件坐标系,把焊缝示教点全部记录在该坐标系下;再为每个装夹位置测量一个偏移量,运行时把偏移量叠加到基准坐标系上,得到当前工件的实际坐标系。
三点法标定工件坐标系
三点法是最常用的工件坐标系标定方式,需要工件上三个可稳定触碰的特征点:
- 原点 O:工件坐标系的原点,通常选在工件角点或定位销中心。
- X方向点 Px:沿工件一条主边(如焊缝方向)取一点,O→Px 定义 X 轴。
- Y方向点 Py:在工件平面内、与X轴大致垂直的方向取一点,用于确定 XY 平面和 Y 轴。
标定时用已标定好的焊枪TCP(或专用尖针)依次触碰这三点,记录各点在UR基坐标系下的位置,然后按以下关系计算工件坐标系:
X轴单位向量: ex = normalize(Px - O)
临时向量: t = Py - O
Z轴单位向量: ez = normalize(cross(ex, t))
Y轴单位向量: ey = cross(ez, ex)
工件坐标系姿态 R = [ex, ey, ez] (3x3)
工件坐标系原点 = O
注意:三点不能共线,且 O、Px、Py 应尽量分散,距离越远、夹角越接近90°,标定出的坐标系越稳定。若工件特征点无法直接触碰,可用尖针替代焊枪,但必须保证尖针TCP已标定。
多工件偏移量的建立
多工件偏移的核心思想是:只标定一次基准工件坐标系,其余装夹位置只测量偏移量。偏移量是当前工件坐标系相对基准工件坐标系的位姿差,通常用4个参数描述平面装夹场景:
| 参数 | 含义 | 典型来源 |
|---|---|---|
| Δx | 沿基准X方向的平移 | 定位销/挡块位置差 |
| Δy | 沿基准Y方向的平移 | 夹具槽位差 |
| Δz | 沿基准Z方向的平移 | 工件厚度/垫片差 |
| Δθz | 绕Z轴的旋转 | 工件摆放角度差 |
偏移量的获取方式有两种:一是用焊枪TCP触碰当前工件的三个特征点,与基准坐标系的理论特征点比较,反算出偏移量;二是对于重复定位精度高的夹具,直接使用夹具设计的名义偏移量,再用验证点确认。
偏移量叠加与程序复用
设基准工件坐标系为 F_base,当前工件的偏移量为 D = (Δx, Δy, Δz, Δθz),则当前工件坐标系为:
F_current = F_base * Trans(Δx, Δy, Δz) * RotZ(Δθz)
焊接程序中所有示教点都记录在 F_base 下。运行时,UR控制器把每个点先转换到基坐标系,再叠加偏移量,实际执行位置为:
P_base = F_base * P_teach
P_exec = F_current * P_teach = F_base * D * P_teach
这样同一套焊接程序只需切换偏移量 D,就能适配不同装夹位置。下面这张图展示了基准坐标系、偏移量、当前坐标系与程序点之间的数据流关系。
实操:标定与偏移量建立流程
- 准备:确认焊枪TCP已标定并验证;在工件上标记 O、Px、Py 三个特征点,并记录它们在工件图纸上的理论坐标。
- 标定基准坐标系:手动移动UR,用焊枪尖端依次触碰 O、Px、Py,记录三个基坐标系位置。按前述公式计算
F_base。 - 记录示教点:在基准装夹位置示教焊缝关键点,全部记录在
F_base下。 - 测量偏移量:把工件装到第二个装夹位置,再次触碰 O、Px、Py,得到
O'、Px'、Py'。计算D = F_base⁻¹ × F_current,提取 Δx、Δy、Δz、Δθz。 - 验证:在第二个装夹位置取一个未参与标定的验证点,用
F_current反算其理论位置,与实际触碰位置比较,偏差应≤0.5 mm。 - 批量建立:对每个装夹位置重复第4~5步,形成偏移量表。
偏移量表(可直接填写)
| 装夹位号 | Δx (mm) | Δy (mm) | Δz (mm) | Δθz (°) | 验证点偏差 (mm) | 是否可用 |
|---|---|---|---|---|---|---|
| 基准位 A | 0 | 0 | 0 | 0 | — | 是 |
| 位 B | +120.0 | 0 | 0 | 0 | 0.3 | 是 |
| 位 C | +240.0 | 0 | 0 | 0 | 0.4 | 是 |
| 位 D | 0 | +150.0 | 0 | 0 | 0.2 | 是 |
| 位 E | +120.0 | +150.0 | 0 | 0 | 0.5 | 是 |
表中数值为示例,实际应以现场触碰测量结果为准。若某位验证点偏差超过工艺允许值,应检查夹具重复定位精度、工件来料一致性或标定触碰点是否准确。
程序中的偏移量切换
在UR Polyscope中,可用一个整数变量 fixture_id 选择当前装夹位,再用 Switch 或赋值语句把对应的偏移量写入位姿变量。例如:
# 伪代码示意:根据装夹位号选择偏移量
if fixture_id == 1:
offset = p[0, 0, 0, 0, 0, 0] # 基准位
elif fixture_id == 2:
offset = p[0.120, 0, 0, 0, 0, 0] # 位B,单位m
elif fixture_id == 3:
offset = p[0.240, 0, 0, 0, 0, 0] # 位C
# 实际执行点 = 基准坐标系下的示教点 叠加 offset
target = pose_trans(F_base, pose_trans(offset, P_teach))
注意UR中位姿平移单位是米,表中mm需除以1000。旋转分量若不为零,应使用 pose_trans 或旋转向量正确合成,不要简单相加欧拉角。
常见问题与判断
- 验证点偏差大:优先检查三点是否共线、触碰点是否在同一工件表面、TCP是否松动。
- 换位后焊缝整体偏移:检查偏移量符号方向是否与基准坐标系一致,Δx/Δy 是否用错轴。
- 焊缝角度不对:检查 Δθz 是否遗漏或旋转中心是否选在工件原点。
- 不同工件之间差异大:说明来料一致性差,应增加来料定位或改用视觉/激光寻位。