1. 项目概述:机器人视觉窄带线激光缝隙检测系统
在工业质检领域,毫米级缝隙的精确检测一直是个技术难点。传统人工检测方式效率低下且容易漏检,而普通机器视觉方案又难以应对反光表面、复杂背景等干扰。我们开发的这套系统创新性地结合了窄带线激光与目标检测算法,实现了0.1mm级缝隙的自动化识别与跟踪。
这个系统最核心的价值在于解决了三个行业痛点:首先,通过532nm窄带激光的主动照明方案,有效克服了环境光干扰;其次,基于YOLOv5改进的小目标检测网络,使检测精度达到±0.05mm;最后,整合了卡尔曼滤波的跟踪算法,确保在机器人移动过程中仍能稳定锁定缝隙位置。目前该系统已成功应用于新能源汽车电池盖板焊接检测,误检率低于0.3%。
2. 系统架构设计
2.1 硬件组成方案
系统的硬件配置经过多次迭代验证,最终确定的方案包含:
- 激光模块:532nm波长线激光器(功率80mW,线宽0.2mm)
- 成像系统:2000万像素工业相机(IMX535传感器)+ 650nm带通滤光片
- 运动机构:六轴协作机器人(重复定位精度±0.02mm)
- 处理单元:NVIDIA Jetson AGX Orin(32TOPS算力)
关键提示:激光波长选择532nm而非常见的650nm,主要考虑金属表面反射特性。实测数据显示,532nm激光在铝合金表面的信噪比比650nm高出47%。
2.2 软件算法框架
算法流程采用多阶段处理架构:
mermaid复制graph TD
A[图像采集] --> B[激光条纹提取]
B --> C[缝隙特征检测]
C --> D[三维坐标转换]
D --> E[机器人路径规划]
(注:实际实现时用OpenCV的线特征检测替代了传统Hough变换,速度提升3倍)
3. 核心算法实现细节
3.1 改进的YOLOv5s检测网络
针对缝隙检测的特殊需求,我们对YOLOv5做了三点关键改进:
-
输入层调整:
- 将原640x640输入改为1920x256长条状输入
- 增加激光强度直方图均衡化层
-
网络结构优化:
python复制# 新增的微小目标检测头 class MicroHead(nn.Module): def __init__(self, ch=256): super().__init__() self.conv1 = Conv(ch, ch//2, 3) self.conv2 = Conv(ch//2, ch//4, 3) self.detect = nn.Conv2d(ch//4, 3*(5+1), 1) # 3 anchors def forward(self, x): return self.detect(self.conv2(self.conv1(x))) -
损失函数改进:
- 引入Focal Loss解决正负样本不平衡
- 增加角度回归分支(用于判断缝隙走向)
3.2 基于卡尔曼滤波的跟踪算法
针对机器人运动带来的图像抖动问题,我们设计了双状态卡尔曼滤波器:
状态方程:
code复制x_k = [px, py, vx, vy, w, h]^T
z_k = H*x_k + v_k
其中创新点在于:
- 将检测框宽高(w,h)作为状态量参与预测
- 根据机器人运动学模型动态调整Q矩阵
- 采用马氏距离进行数据关联
实测表明,这种改进使跟踪成功率在1m/s运动速度下仍保持92%以上。
4. 工程实现中的关键问题
4.1 激光条纹中心线提取
传统Steger算法在金属表面表现不佳,我们改进的方案包括:
- 高斯加权法向估计
- 基于Radon变换的初始方向检测
- 亚像素级脊线定位
对比测试结果:
| 方法 | 精度(pixel) | 耗时(ms) |
|---|---|---|
| Steger | 0.15 | 12.3 |
| 我们的 | 0.08 | 8.7 |
4.2 机器人手眼标定
采用改进的Tsai-Lenz方法,具体步骤:
- 制作特殊标定板(带激光十字线)
- 机器人完成15组位姿运动
- 引入李代数优化求解AX=XB
- 现场微调时的快速收敛算法
标定后重复定位精度达到0.03mm,满足绝大多数工业场景需求。
5. 实际应用效果
在某新能源汽车电池生产线上的测试数据:
- 检测速度:3秒/件(含机器人运动时间)
- 检测精度:纵向±0.05mm,横向±0.1mm
- 漏检率:<0.1%
- 误检率:<0.3%
典型问题处理经验:
- 遇到高反光表面时,适当降低激光功率并增加偏振片
- 对于弧形缝隙,启用多段检测模式
- 系统预热15分钟后再进行高精度检测
这套系统目前已经部署在7条产线上,累计检测超过200万件产品,帮助企业将质检成本降低62%。从技术角度看,最大的收获是认识到工业场景中"鲁棒性比绝对精度更重要"这一原则,很多算法需要在理论性能和工程可实现性之间找到平衡点。
