在工业自动化产线上,圆形零件的尺寸检测是个高频需求。比如轴承内外径的精度直接影响设备寿命,垫圈的直径偏差可能导致密封失效。传统人工抽检效率低且容易漏检,而VisionPro提供的PMAlign+FindCircle组合方案,能实现每分钟数百个零件的全自动测量。
这套方案的核心思路很直观:先用PMAlign工具快速定位所有零件的位置,再把坐标信息传递给FindCircle工具逐个测量半径。我经手过的汽车零部件项目中,用这个方法将检测效率提升了8倍,不良品漏检率从3%降到了0.1%以下。
创建PMAlign模板时,建议选择对比度最高的零件作为样本。实测发现,当零件表面有油污时,用边缘梯度特征比灰度特征更稳定。有个容易忽略的参数是"弹性匹配度",对于轻微变形的垫圈,建议设为70-80,既能容忍变形又不会误匹配。
训练时记得打开"多结果输出"选项,这个开关直接影响能否检测重叠零件。有次客户反映总是漏检,最后发现就是这个参数没配置。建议把最小匹配分数设为0.7,相邻结果抑制设为10像素,可以有效过滤假阳性匹配。
PMAlign结果需要正确传递给FindCircle工具,这里有个坑我踩过三次:必须在FindCircle的属性面板里手动添加输入终端。具体操作是右键工具→添加输入→选择"ExpectedCircularArc.CenterX/Y"。
调试时建议用这个代码片段实时观察坐标传递:
csharp复制CogGraphicLabel coordLabel = new CogGraphicLabel();
coordLabel.SetXYText(item.GetPose().TranslationX,
item.GetPose().TranslationY,
"Target Position");
mToolBlock.AddGraphicToRunRecord(coordLabel, 0);
投影长度要根据零件尺寸动态计算,我的经验公式是:半径×1.5+2px。比如5mm半径的垫圈,设9-10px最合适。对比度阈值建议从30开始调试,对于电镀件要提高到50以上。
边缘模式选择有讲究:
一定要勾选"最佳拟合圆"选项,这个功能对边缘缺损的零件特别有用。有次检测冲压件,由于毛刺影响,未拟合时误差达0.3mm,拟合后稳定在0.05mm内。
调试时建议分步验证:
这个增强版代码增加了异常处理和性能统计:
csharp复制CogGraphicCollection gc = new CogGraphicCollection();
Stopwatch sw = new Stopwatch();
sw.Start();
try {
foreach(CogPMAlignResult item in pmaTool.Results) {
circleTool.RunParams.ExpectedCircularArc.CenterX = item.GetPose().TranslationX;
circleTool.RunParams.ExpectedCircularArc.CenterY = item.GetPose().TranslationY;
if(!circleTool.Run()) continue;
CogCircle c = circleTool.Results.GetCircle();
c.Color = CogColorConstants.Green;
gc.Add(c);
CogGraphicLabel label = new CogGraphicLabel();
label.SetXYText(c.CenterX, c.CenterY,
$"R:{c.Radius.ToString("F3")}\nS:{item.Score.ToString("F2")}");
gc.Add(label);
}
} catch(Exception ex) {
AddErrorRecord($"Measurement failed: {ex.Message}");
}
sw.Stop();
AddMetricRecord($"Processed {pmaTool.Results.Count} parts in {sw.ElapsedMilliseconds}ms");
在汽车零部件项目中,我们改进了显示方式:
这种可视化方案使得操作员在5米外就能快速判断产线状态,异常响应时间缩短了70%。