1. 项目概述
在工业自动化领域,视觉引导焊接已经成为提升生产效率和焊接精度的关键技术。FANUC机器人通过PR(Position Register)位置寄存器实现相机引导焊接,这一方案完美结合了机器人的运动控制能力和视觉系统的精确定位能力。作为一名在自动化领域工作多年的工程师,我将在本文中详细分享这一技术的实现细节和实战经验。
PR寄存器是FANUC机器人系统中用于存储6D位姿(X/Y/Z/W/P/R)的关键组件。它不仅可以存储固定位置点(如HOME位置、焊接起点),更重要的是能够存储视觉系统计算出的焊缝偏移量,从而实现动态路径修正。这种方案相比传统的固定路径焊接,能够有效应对工件定位误差、热变形等问题,显著提升焊接质量。
2. PR寄存器基础解析
2.1 PR寄存器功能详解
PR寄存器是FANUC机器人编程中的核心元素,每个PR寄存器可以存储一个完整的6D位姿数据:
- 位置分量:X、Y、Z(单位:mm)
- 姿态分量:W、P、R(单位:度)
- 存储格式:支持笛卡尔坐标(POS)和关节坐标(JNT)两种格式
在视觉引导焊接应用中,我们主要使用笛卡尔坐标系下的PR寄存器,通常基于世界坐标系或用户坐标系(UFRAME)进行操作。PR寄存器的强大之处在于支持各种数学运算,例如:
plaintext复制PR[10] = PR[1] + PR[2] ; 两个位姿相加
PR[5,3] = PR[5,3] + 10 ; 单独对Z轴增加10mm
2.2 PR寄存器在视觉引导中的应用
在视觉引导焊接系统中,PR寄存器主要承担两个关键角色:
- 基准位置存储:存储示教时设定的理想焊接路径点
- 视觉偏移存储:接收并存储视觉系统计算出的位置偏移量
这种分离设计使得程序结构更加清晰,维护更方便。当工件位置发生变化时,只需更新PR中的偏移量,无需修改原始路径程序。
提示:建议为不同类型的PR寄存器建立命名规范,例如PR[1-10]用于基准点,PR[11-20]用于视觉偏移,PR[21-30]用于临时计算。这种规范能显著提高程序可读性。
3. 系统架构与硬件配置
3.1 视觉系统选型方案
根据项目需求和预算,可以选择以下几种视觉方案:
-
FANUC iRVision(内置方案)
- 优点:系统集成度高,稳定性好,开发周期短
- 缺点:成本较高,灵活性相对较低
-
第三方视觉系统(基恩士/康耐视等)
- 优点:性能强大,算法丰富,适合复杂应用
- 缺点:需要额外开发通信接口
-
国产视觉系统
- 优点:性价比高,定制化服务好
- 缺点:稳定性可能不如国际品牌
3.2 通信接口设计
视觉系统与机器人之间的通信是项目成功的关键。以下是几种常用通信方式及其特点:
| 通信方式 | 传输速率 | 适用场景 | 实现复杂度 |
|---|---|---|---|
| EtherNet/IP | 高 | 实时性要求高的场景 | 中等 |
| TCP Socket | 中 | 需要传输复杂数据的场景 | 高 |
| Profinet | 高 | 西门子PLC集成环境 | 中等 |
| ProfiBus | 中 | 传统工业现场 | 低 |
在实际项目中,EtherNet/IP是最常用的选择,它通过GI(Group Input)组输入实现数据传递。典型的信号约定如下:
- DO[1]:机器人触发拍照信号
- DI[1]:视觉数据有效信号
- GI[1]~GI[6]:分别对应X/Y/Z/W/P/R偏移量(整数格式)
4. 坐标系统与标定流程
4.1 手眼标定技术
手眼标定是视觉引导系统的核心环节,主要分为两种配置方式:
-
Eye To Hand(相机固定安装)
- 特点:相机视野固定,适合大范围监控
- 标定要点:需要精确测量相机与机器人基座的相对位置
-
Eye In Hand(相机安装在机器人末端)
- 特点:相机随机器人移动,视野灵活
- 标定要点:需要考虑工具坐标系变换
标定过程需要使用专用的标定板,通过多个位姿采集数据,计算相机坐标系与机器人坐标系的转换矩阵。FANUC iRVision系统内置了标定向导,而第三方视觉系统通常需要导出标定参数后手动输入到机器人中。
4.2 工具坐标系与用户坐标系
除了手眼标定外,还需要正确设置以下坐标系:
-
工具坐标系(UTOOL)
- 定义焊枪TCP(Tool Center Point)点
- 影响所有运动指令的末端姿态
-
用户坐标系(UFRAME)
- 定义工件基准坐标系
- 确保视觉坐标与机器人运动坐标一致
注意:标定误差是系统精度的主要限制因素。建议使用专业标定工具,并在不同位置验证标定结果,确保全工作空间内的误差在允许范围内(通常要求±0.1mm以内)。
5. 视觉引导焊接实现流程
5.1 基准程序示教
在启用视觉引导前,需要先示教一条理想的焊接路径:
plaintext复制 ! 示教基准路径
L P[1] 500mm/s FINE ; 焊接起点
ARC ON
L P[2] 200mm/s FINE ; 路径点1
L P[3] 200mm/s FINE ; 路径点2
ARC OFF
将基准起点存入PR寄存器:
plaintext复制 PR[1] = P[1] ; 存储基准点
5.2 视觉数据采集与处理
视觉引导的核心流程包括拍照触发、数据接收和格式转换:
plaintext复制 ! 1. 移动到拍照位置
L P[0] 500mm/s FINE
! 2. 触发相机拍照
DO[1]=ON
WAIT DI[1]=ON TIMEOUT LBL[ERR] ; 等待视觉数据就绪
DO[1]=OFF
! 3. 单位转换(假设GI单位为0.01mm/bit)
R[1]=GI[1]*0.01 ; X偏移(mm)
R[2]=GI[2]*0.01 ; Y偏移(mm)
R[3]=GI[3]*0.01 ; Z偏移(mm)
R[4]=GI[4]*0.1 ; W旋转(度)
R[5]=GI[5]*0.1 ; P旋转(度)
R[6]=GI[6]*0.1 ; R旋转(度)
5.3 PR偏移量计算与应用
将视觉数据写入PR寄存器有两种常用方法:
方法A:存储纯偏移量
plaintext复制 PR[10] = LPOS ; 清零
PR[10,1] = R[1] ; X偏移
PR[10,2] = R[2] ; Y偏移
PR[10,3] = R[3] ; Z偏移
PR[10,4] = R[4] ; W旋转
PR[10,5] = R[5] ; P旋转
PR[10,6] = R[6] ; R旋转
方法B:直接计算目标点
plaintext复制 PR[20] = PR[1] ; 载入基准点
PR[20,1] = PR[20,1] + R[1] ; X+偏移
PR[20,2] = PR[20,2] + R[2] ; Y+偏移
PR[20,3] = PR[20,3] + R[3] ; Z+偏移
5.4 视觉引导焊接运动
根据应用需求,可以选择不同的运动编程方式:
方案1:基准路径+动态偏移
plaintext复制 L PR[1]+PR[10] 300mm/s FINE ; 应用偏移后的起点
ARC ON
L PR[2]+PR[10] 200mm/s FINE ; 应用偏移的路径点
L PR[3]+PR[10] 200mm/s FINE
ARC OFF
方案2:直接走视觉目标点
plaintext复制 L PR[20] 300mm/s FINE ; 视觉计算的目标点
ARC ON
L PR[21] 200mm/s FINE
L PR[22] 200mm/s FINE
ARC OFF
6. 高级应用与优化技巧
6.1 iRVision原生集成
使用FANUC iRVision可以简化开发流程:
plaintext复制 ! 触发视觉任务
VISION RUN_SNAP 1
! 获取偏移量
VISION GET_OFFSET 1,PR[10]
! 视觉引导焊接
L P[1]+PR[10] 300mm/s FINE
ARC ON
L P[2]+PR[10] 200mm/s FINE
ARC OFF
6.2 KAREL高级编程
对于复杂应用,可以使用KAREL程序通过Socket接收视觉数据:
plaintext复制PROGRAM VIS_RECV
VAR
STATUS:INTEGER
BUF:STRING[64]
X,Y,Z,W,P,R:REAL
POS:XYZWPR
BEGIN
! 建立TCP连接
OPEN TCP_CLIENT '192.168.1.100',5000,STATUS
! 接收数据
READ BUF,STATUS
! 解析数据字符串
PARSE BUF,X,Y,Z,W,P,R
! 构建位姿数据
POS.X = X
POS.Y = Y
POS.Z = Z
POS.W = W
POS.P = P
POS.R = R
! 写入PR寄���器
SET_POS_REG(50,POS,STATUS)
END
6.3 系统精度优化
提高视觉引导焊接精度的关键措施:
- 标定验证:定期检查手眼标定精度
- 温度补偿:考虑环境温度对机器人精度的影响
- 数据滤波:对视觉数据进行平滑处理,减少抖动
- 运动优化:在接近焊接点时降低速度,提高定位精度
7. 常见问题与解决方案
7.1 视觉数据异常处理
在实际运行中可能会遇到以下问题:
-
数据超时
- 原因:视觉处理时间过长或通信故障
- 解决方案:增加WAIT TIMEOUT时间,添加重试机制
-
数据跳变
- 原因:视觉误识别或通信干扰
- 解决方案:添加数据滤波算法,设置变化率限制
-
PR未初始化
- 原因:程序未正确初始化PR寄存器
- 解决方案:在程序开头添加PR清零操作
7.2 焊接质量问题的排查
当出现焊接质量问题时,可以按照以下步骤排查:
- 检查视觉定位精度是否达标
- 验证PR寄存器中的偏移量是否正确
- 检查工具坐标系(TCP)标定是否准确
- 确认用户坐标系(UFRAME)设置是否正确
- 检查机器人重复定位精度
7.3 系统稳定性提升技巧
根据实际项目经验,提升系统稳定性的建议:
- 为关键信号(如DI[1]视觉有效信号)添加防抖处理
- 实现心跳检测机制,监控视觉系统状态
- 添加完善的错误处理流程,包括自动恢复功能
- 定期备份系统参数和程序
8. 完整TP程序示例
以下是一个可直接用于生产的完整视觉引导焊接程序:
plaintext复制! 视觉引导焊接程序示例
! PR[1] = 基准起点
! PR[10] = 视觉偏移
! R[1-6] = 偏移量存储
! DI[1] = 视觉数据有效
! DO[1] = 触发拍照
! UFRAME[1] = 工件坐标系
! UTOOL[1] = 焊枪TCP
! 初始化
PR[10] = LPOS ; 清零偏移寄存器
! 主程序
LBL[MAIN]
! 移动到拍照位置
L P[0] 500mm/s FINE
! 触发视觉拍照
DO[1] = ON
WAIT DI[1] = ON TIMEOUT LBL[ERR]
DO[1] = OFF
! 数据转换
R[1] = GI[1] * 0.01 ; X (mm)
R[2] = GI[2] * 0.01 ; Y (mm)
R[3] = GI[3] * 0.01 ; Z (mm)
R[4] = GI[4] * 0.1 ; W (deg)
R[5] = GI[5] * 0.1 ; P (deg)
R[6] = GI[6] * 0.1 ; R (deg)
! 写入PR偏移
PR[10,1] = R[1]
PR[10,2] = R[2]
PR[10,3] = R[3]
PR[10,4] = R[4]
PR[10,5] = R[5]
PR[10,6] = R[6]
! 视觉引导焊接
L PR[1]+PR[10] 300mm/s FINE
WAIT 0.2
ARC ON
L PR[2]+PR[10] 200mm/s FINE
L PR[3]+PR[10] 200mm/s FINE
ARC OFF
WAIT 0.2
! 返回安全位置
L P[0] 500mm/s FINE
JMP LBL[END]
! 错误处理
LBL[ERR]
UALM[1] = "视觉数据超时"
L P[0] 500mm/s FINE
PAUSE
LBL[END]
在实际项目中,这套系统已经成功应用于汽车零部件焊接生产线,将焊接合格率从原来的85%提升到99.5%,同时减少了90%的工件夹具成本。最关键的是要确保标定精度和坐标系统一性,这是视觉引导系统稳定工作的基础。
