fanuc 机器人位置比较

99ANYc3cd6 机器人 8
  1. 精确位置比较
  2. 容差位置比较

下面我们分别进行详细说明。

fanuc 机器人位置比较-第1张图片-广州国自机器人
(图片来源网络,侵删)

精确位置比较

概念

精确位置比较,顾名思义,就是将当前机器人的 TCP(工具中心点)位置与程序中记录的某个目标位置进行完全一致的比较,它比较的是六个轴的角度值(关节坐标),而不是笛卡尔空间中的 X, Y, Z, U, V, W 坐标。

核心指令:POS_CMP

这是实现精确位置比较的主要指令。

语法

POS_CMP 期望位置变量, 当前位置变量, 结果变量
  • 期望位置变量:一个已经记录好的位置数据,通常是 [位置数据][位置寄存器]
  • 当前位置变量:通常是 CR[当前机器人位置],代表机器人当前的实际位置。
  • 结果变量:一个整数型信号或寄存器,用于存储比较结果。
    • 结果 = 1:当前位置与期望位置完全匹配。
    • 结果 = 0:当前位置与期望位置不匹配。

工作原理

POS_CMP 指令会比较两个位置数据中所有六个关节的角度值,只有在所有角度值都完全相同时,结果才为 1。即使机器人在笛卡尔空间中到达了同一个点,但如果关节角度不同(从不同方向接近),比较结果也会是 0。

示例

假设我们有一个已示教的位置 P1,我们想检查机器人是否回到了 P1 的位置。

fanuc 机器人位置比较-第2张图片-广州国自机器人
(图片来源网络,侵删)
// 程序开始
J P1 100% FINE    // 移动到位置 P1
L P1 100mm/sec FINE // 直线移动到 P1,更新位置数据
// 比较当前位置是否与 P1 匹配
POS_CMP P1, CR[1], R[1]
// 根据结果进行判断
IF R[1] = 1 THEN
    // 如果匹配,执行此操作
    TP "Robot is at exact position P1!"
    DO[1] := ON  // 打开某个输出信号
ELSE
    // 如果不匹配,执行此操作
    TP "Robot is NOT at position P1!"
    DO[1] := OFF
ENDIF

应用场景

  • 安全门确认:确认机器人已经完全回到“安全位置”后,才能打开安全门。
  • 特定工位的确认:确保机器人执行某个动作前,其姿态是预设的、唯一的。
  • 调试:检查程序是否按预期执行,机器人是否精确地回到了某个点。

容差位置比较

概念

在现实世界的自动化应用中,由于工件定位误差、机器人重复定位精度、抓取误差等因素,机器人几乎不可能精确地回到理论上的点,我们需要一种方法来判断机器人是否“足够接近”一个目标点,这就是容差位置比较。

容差比较可以在关节空间笛卡尔空间中进行。

核心指令:POS_CMP_TOL

这是实现容差位置比较的主要指令。

语法

POS_CMP_TOL 期望位置变量, 当前位置变量, 容差变量, 结果变量
  • 期望位置变量:目标位置数据,如 [位置数据][位置寄存器]
  • 当前位置变量:通常是 CR[当前机器人位置]
  • 容差变量:一个包含容差数据的变量,用于定义在各个轴上的允许偏差范围。
  • 结果变量:存储比较结果。
    • 结果 = 1:当前位置在容差范围内。
    • 结果 = 0:当前位置超出容差范围。

容差变量的定义

容差变量通常是一个 [位置数据] 类型的变量,你可以手动创建并编辑它,定义六个轴(关节或笛卡尔)的容差值。

fanuc 机器人位置比较-第3张图片-广州国自机器人
(图片来源网络,侵删)

关节空间容差 (Joint Tolerance): 定义每个关节轴允许的角度偏差。

笛卡尔空间容差 (Cartesian Tolerance): 定义在工具坐标系或用户坐标系下的平移和旋转偏差。

  • 平移容差:单位通常是毫米,允许在 X, Y, Z 方向上的偏差。
  • 旋转容差:单位通常是度,允许在 U, V, W(绕 X, Y, Z 轴旋转)上的偏差。

示例

假设我们要检查机器人是否在 P2 点的 10mm 范围内。

  1. 定义一个容差变量,在示教器上,你可以创建一个新的位置数据,TOL_10MM,并将其值设置为 [10, 10, 10, 0, 0, 0],这代表在 X, Y, Z 三个方向上的平移容差都是 10mm,旋转容差为 0。

  2. 编写程序

    // 示教目标位置 P2
    J P2 100% FINE
    // 定义容差变量 (也可以在程序外预先示教好)
    L P2 100mm/sec FINE
    ! 创建一个名为 TOL_10MM 的位置数据,并编辑为 [10, 10, 10, 0, 0, 0]
    // 进行容差比较
    POS_CMP_TOL P2, CR[1], TOL_10MM, R[2]
    // 根据结果进行判断
    IF R[2] = 1 THEN
        // 如果在容差范围内,执行抓取等操作
        TP "Robot is within tolerance of P2. Ready to grab!"
        // 执行抓取动作...
    ELSE
        // 如果超出容差范围,报警或重试
        TP "Error: Robot is out of tolerance at P2!"
        ALARM[101]  // 触发一个自定义报警
    ENDIF

应用场景

  • 物料抓取:检查机器人是否已经到达抓取点附近,即使工件有轻微偏移。
  • 放置/装配:确认机器人是否将零件放置到了正确的区域,无需分毫不差。
  • 视觉引导:视觉系统给出一个目标坐标后,机器人移动到该坐标附近,然后通过容差比较确认到位。
  • 焊接/涂胶路径的起点/终点确认:确认焊枪或胶枪已经到达了工艺路径的起始或结束区域。

总结与对比

特性 精确位置比较 (POS_CMP) 容差位置比较 (POS_CMP_TOL)
比较方式 精确比较六个关节角度值 比较在指定容差范围内的位置
容差设置 无容差,必须完全一致 需要定义一个容差变量(关节或笛卡尔)
比较空间 仅关节空间 关节空间 或 笛卡尔空间(更常用)
结果 1 (完全匹配) 或 0 (不匹配) 1 (在容差内) 或 0 (超差)
适用场景 安全位置确认、姿态唯一性确认 物料抓取、放置、视觉引导等有误差容忍的应用
指令 POS_CMP POS_CMP_TOL

最佳实践与注意事项

  1. 理解关节 vs 笛卡尔POS_CMP 是基于关节的,而 POS_CMP_TOL 默认是基于笛卡尔空间的,在大多数应用中,你关心的是工具在空间中的位置,而不是关节角度,POS_CMP_TOL 更常用。
  2. 容差要合理:设置的容差值不能小于机器人的重复定位精度,否则机器人会因为自身的微小抖动而频繁“超差”,也不能过大,以免导致位置错误但未被检测到。
  3. 位置寄存器 CR 的使用CR[当前机器人位置] 是一个非常强大的工具,它代表了机器人任何时刻的实时位置,在进行位置比较时,通常会先读取 CR 的值到一个临时变量或直接使用。
  4. 位置数据 [ ] 的更新:当你移动机器人到一个新位置并用 L 指令时,该位置数据会更新,确保你比较的是“期望”的原始位置,而不是被更新后的位置。

希望这份详细的解释能帮助你更好地理解和使用 FANUC 机器人的位置比较功能!

抱歉,评论功能暂时关闭!