1. 项目背景与核心价值
在工业自动化领域,焊接质量直接关系到产品结构强度和使用寿命。传统人工焊接存在效率低、一致性差的问题,而普通机器人焊接又难以应对复杂焊缝轨迹。这个项目正是为了解决这一行业痛点——通过ABB机器人二次开发结合Halcon机器视觉,实现高精度焊缝自动跟踪系统。
我曾在汽车零部件生产线亲眼见过这样的场景:工人需要不断调整焊接夹具位置,机器人只能按预设路径作业,遇到工件偏差就会出现漏焊或焊偏。这套系统的价值在于:
- 实时视觉定位补偿工件装配误差(±5mm内自动修正)
- 支持多种焊缝类型(直线、曲线、不规则轮廓)
- 焊接速度提升40%的同时降低返工率
- 一套系统适配不同规格工件(通过参数配置切换)
2. 系统架构设计解析
2.1 技术栈选型依据
选择ABB机器人+RAPID语言作为执行端,主要考虑:
- 工业现场80%的焊接工作站采用ABB机械臂
- RAPID语言支持外部信号实时交互
- 通过PC SDK可实现C#与控制器高速通信(<2ms延迟)
Halcon的选用则因其在工业视觉领域的三大优势:
- 亚像素级边缘检测算法(精度0.1像素)
- 强大的形态学处理工具(应对飞溅、氧化等干扰)
- 支持GPU加速(处理周期<50ms)
2.2 通信链路设计
系统采用三层架构:
code复制[视觉层] Halcon图像处理 → [控制层] C#逻辑运算 → [执行层] ABB机器人
关键通信参数:
- 相机与工控机:GigE接口(1000Mbps)
- C#与Halcon:HDevEngine联编模式
- 工控机与机器人:Cross Connection(512字节/周期)
3. 核心功能实现细节
3.1 焊缝特征提取算法
csharp复制// Halcon算子组合示例
HOperatorSet.GenRectangle1(out ho_ROI, 100, 100, 500, 500);
HOperatorSet.ReduceDomain(ho_Image, ho_ROI, out ho_ImageReduced);
HOperatorSet.EdgesSubPix(ho_ImageReduced, out ho_Edges, "canny", 1.5, 20, 40);
HOperatorSet.SelectShape(ho_Edges, out ho_SelectedEdges, "contlength", "and", 50, 999);
这段代码实现了:
- 设定300×400像素的ROI区域(减少计算量)
- Canny算子边缘检测(σ=1.5,低阈值20,高阈值40)
- 筛选长度>50像素的有效边缘
关键参数经验值:
激光条纹宽度建议占图像高度1/8-1/6
高斯滤波σ值取激光线宽的1/3
3.2 机器人轨迹修正逻辑
csharp复制// 坐标转换核心代码
HTuple hv_HomMat2D;
HOperatorSet.VectorAngleToRigid(hv_Row1, hv_Column1, hv_Angle1,
hv_Row2, hv_Column2, hv_Angle2,
out hv_HomMat2D);
HOperatorSet.AffineTransPoint2d(hv_HomMat2D, hv_X, hv_Y, out hv_Qx, out hv_Qy);
这里完成的是:
- 计算当前焊缝与标准位置的刚体变换矩阵
- 将偏差量转换到机器人基坐标系
- 通过PC SDK发送修正指令:
rapid复制MoveL Offs(pWeldPos, dx, dy, 0), v100, fine, tool0;
4. 工程化实施要点
4.1 标定流程标准化
采用九点标定法时需注意:
- 标定板倾斜角度应>30°(提高矩阵计算精度)
- 机器人TCP重复定位误差需<0.02mm
- 相机曝光时间固定为2000μs(避免亮度波动)
标定误差验证方法:
halcon复制dev_display (Image)
dev_display (Cross)
* 检查十字线中心与物理标记重合度
4.2 抗干扰设计
应对焊接现场的典型干扰:
- 弧光干扰:采用850nm波段激光+窄带滤光片
- 烟尘影响:图像预处理加入CLAHE算法
- 金属反光:偏振镜+30°斜角打光
5. 调试问题全记录
5.1 典型故障排查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 机器人抖动 | 通信周期不匹配 | 调整PC SDK采样周期为4ms |
| 边缘断裂 | 激光功率不足 | 增大至80%并重新标定 |
| 坐标偏移 | 手眼标定误差 | 使用TCP固定法重新标定 |
5.2 性能优化实录
项目中期遇到处理延迟问题,通过以下改进将周期从120ms降至65ms:
- 将Halcon的HDevEngine改为预编译模式
- 优化ROI区域动态调整算法
- 启用CUDA加速(GTX1660显卡)
csharp复制// 性能优化关键代码
HOperatorSet.SetComputeDevice("cuda");
HOperatorSet.QueryAvailableComputeDevices(out hv_DeviceIdentifiers);
HOperatorSet.ActivateComputeDevice(hv_DeviceIdentifiers[0]);
6. 项目扩展方向
当前系统已稳定运行于某新能源汽车电池托盘焊接线,后续可扩展:
- 多机器人协同焊接(需升级至MultiMove选项)
- 焊接质量在线检测(增加熔池监控相机)
- 数字孪生对接(通过RobotStudio二次开发)
实际部署中发现一个有趣现象:当环境温度超过32℃时,需要将激光功率补偿系数调整为1.03倍。这个经验参数后来被写入了我们的标准化文档