1. 项目概述
在工业自动化领域,焊接机器人正逐步取代传统人工焊接。然而,传统示教再现型焊接机器人存在一个致命缺陷:无法应对加工误差、装夹偏差及热变形等动态扰动。这直接导致焊缝轨迹偏移,严重影响焊接质量。作为一名从事工业视觉系统开发多年的工程师,我深知这个问题的严重性。
基于视觉引导的焊缝实时跟踪技术正是解决这一痛点的最佳方案。今天我要分享的,是一个基于ABB机器人和Halcon视觉系统的完整焊缝跟踪解决方案。这个系统采用C#+Halcon联合编程,实现了从图像采集到机器人运动控制的全闭环流程。
这个项目源自沈阳工业大学陈东旭硕士的研究成果,经过我们团队的二次开发和工业现场验证,已经成功应用于多个汽车零部件焊接产线。
2. 系统架构设计
2.1 整体架构
系统采用经典的C/S架构,主要包含以下组件:
- 上位机:Windows Forms界面,C#逻辑控制
- 视觉处理引擎:Halcon 18.05
- 机器人控制器:ABB IRB120
- 工业相机:Basler ace acA2000-50gm
- 线激光器:Laserline LDM 300-100
通信方面,系统通过TCP/IP协议与机器人控制柜建立连接,图像采集则通过GigE接口实现。这种架构既保证了实时性,又便于后期功能扩展。
2.2 核心模块划分
系统主要包含六大功能模块:
- 通讯模块:负责与机器人控制柜建立稳定连接
- 示教模块:支持关节/直角坐标系下的点位控制
- 相机标定模块:完成相机内参、外参和手眼标定
- 图像采集模块:实时显示和处理工业相机画面
- 数据处理模块:执行焊缝特征识别和三维位姿计算
- 焊缝跟踪模块:支持离线扫描和实时跟踪两种模式
3. 视觉系统标定详解
3.1 相机标定
我们采用经典的张正友标定法,具体步骤如下:
- 使用Halcon标定助手采集12张不同角度的标定板图像
- 自动检测标定板上的特征点
- 计算相机内参矩阵:
code复制[fx, 0, cx] [0, fy, cy] [0, 0, 1] - 估计每幅图像对应的外参(旋转矩阵R和平移向量t)
- 计算镜头畸变系数(k1,k2,p1,p2,k3)
实测表明,使用12张图像时,重投影误差可控制在0.1像素以内。
3.2 结构光标定
线激光平面标定是关键步骤,直接影响三维重建精度:
- 将线激光投射到标定板上
- 移动标定板到5个不同位置
- 在每个位置提取激光线与标定网格的交点
- 使用最小二乘法拟合激光平面方程:
code复制aX + bY + cZ + d = 0
3.3 手眼标定
我们采用"眼在手"(Eye-in-Hand)配置,标定流程如下:
- 控制机器人移动到9个不同姿态
- 在每个姿态下采集标定板图像
- 求解AX=XB方程,得到相机到工具坐标系的变换矩阵
- 验证标定精度,确保误差在0.5mm以内
4. 焊缝特征识别技术
4.1 图像预处理
针对焊接现场的复杂环境,我们设计了专门的预处理流程:
- 均值滤波:9×9窗口有效抑制高频噪声
- 灰度强调:增强激光条纹对比度
halcon复制emphasize(Image, ImageEmphasize, 9, 9, 1.0) - ROI动态选取:首帧使用固定矩形ROI,后续帧以历史特征点为中心生成圆形ROI,处理效率提升60%
4.2 激光中心线提取
这是整个系统的核心算法,我们采用亚像素级提取方案:
- 阈值分割:使用Otsu自动阈值
halcon复制binary_threshold(Image, Region, 'max_separability', 'dark', UsedThreshold) - 形态学处理:闭运算填充孔洞
halcon复制closing_circle(Region, RegionClosing, 3.5) - 亚像素边缘提取:高斯拟合获得亚像素精度
halcon复制lines_gauss(Image, Lines, 0.8, 1, 5, 'dark', 'true', 'gaussian', 'true')
4.3 特征点定位
对于V型焊缝,我们采用以下算法:
- 对两侧边缘分别进行直线拟合
halcon复制fit_line_contour_xld(Contours, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) - 计算两直线交点作为焊缝特征点
- 通过最小外接矩形修正横坐标
5. 三维位姿计算
5.1 坐标转换流程
- 图像坐标 → 相机坐标
code复制u = fx * X/Z + cx v = fy * Y/Z + cy - 相机坐标 → 工具坐标(通过手眼矩阵)
- 工具坐标 → 基坐标(通过机器人正向运动学)
5.2 角度计算方法
- 构建焊缝两侧向量AB和AC
- 计算V型夹角θ₁ = arccos(AB·AC/|AB||AC|)
- 计算焊缝与水平面夹角θ₂
- 推导焊枪旋转角度γ = θ₁/2 + θ₂ - 90°
- 通过欧拉角转旋转矩阵得到完整姿态
6. 焊缝跟踪策略实现
6.1 离线跟踪模式
- 机器人沿焊缝匀速移动,采集30个等间距点
- 全局二次多项式拟合:
code复制y = a0 + a1x + a2x² z = b0 + b1x + b2x² - 实测Y/Z方向最大误差≤0.28mm
6.2 实时跟踪模式
- 采用滑动窗口拟合(窗口大小5-8点)
- 引入转弯半径实现平滑过渡:
code复制其中v为速度,a为加速度,θ为转向角R = v²/(a*tan(θ)) - 实测跟踪误差≤0.3324mm
7. 系统实现细节
7.1 通信协议设计
我们设计了简洁高效的字符串协议:
- 直角坐标运动:
code复制X,Y,Z,Ez,Ey,Ex,Speed,"X" - 关节坐标运动:
code复制J1,J2,J3,J4,J5,J6,Speed,"J"
7.2 上位机界面
主要功能区域包括:
- Halcon图像显示窗口
- 机器人示教面板
- 数据表格视图
- 通讯控制区
- 功能按钮组
8. 实战经验分享
8.1 常见问题排查
-
图像采集不稳定:
- 检查GigE网线连接
- 调整相机曝光时间(建议1-3ms)
- 确保环境光干扰最小化
-
标定误差过大:
- 增加标定板位姿数量(至少9个)
- 检查标定板平整度
- 重新校准镜头焦距
-
跟踪延迟明显:
- 优化图像处理算法耗时
- 减小滑动窗口大小
- 提升上位机硬件配置
8.2 性能优化技巧
-
算法加速:
- 使用Halcon的HDevEngine编译执行
- 开启多线程处理
csharp复制Parallel.For(0, n, i => { // 并行处理代码 }); -
内存管理:
- 及时释放Halcon对象
halcon复制clear_obj(Image)- 使用对象池复用资源
-
通信优化:
- 采用二进制协议替代字符串
- 增加心跳包检测连接状态
9. 扩展与改进方向
基于实际项目经验,我认为系统还可以在以下方面进行优化:
-
深度学习应用:
- 使用CNN网络识别复杂焊缝类型
- 训练模型适应不同焊接工况
-
弧光抑制算法:
- 开发专用光学滤光片
- 设计时域/空域滤波算法
-
热变形补偿:
- 建立热力学模型
- 实时监测温度变化
- 动态调整轨迹补偿量
在实际部署中,我们还需要考虑工业现场的EMC问题,确保系统在强电磁干扰环境下稳定运行。同时,开发完善的日志系统和异常处理机制,也是保证系统可靠性的关键。