2. VisionPro开发环境与计量工具链

VisionPro 提供两套互补的开发入口:一套是图形化的 QuickBuild,另一套是面向代码的 VisionPro SDK。理解这两者的分工,以及 ToolGroup、ToolBlock 这两级容器如何组织工具,是后续搭建精密测量方案的基础。本节围绕“在哪里搭、用什么装、装哪些工具、怎么调用”四个问题展开。

一、QuickBuild 与 VisionPro SDK:两条并行的开发路径

QuickBuild 是一个图形化作业编辑环境,核心操作是“拖工具、连输入输出、调参数、看结果”。它适合快速验证算法可行性、现场调试、以及把成熟方案固化成可重复运行的作业文件(.vpp)。在 QuickBuild 中,每个工具都有属性面板和结果面板,参数改动后立即重跑,图像上会叠加显示搜索区域、找到的特征点、测量标注等图形反馈,这种“所见即所得”的迭代方式在调光学参数和阈值时效率很高。

VisionPro SDK 则是 .NET 类库集合,把 QuickBuild 里同样的工具以对象形式暴露出来。典型用法是引用 Cognex.VisionPro 相关程序集,用 C# 或 VB.NET 创建工具对象、设置输入图像与参数、调用 Run() 执行、再从结果对象中读取数值。SDK 适合需要与运动控制、数据库、MES 集成,或需要批量处理、自定义界面、复杂逻辑判断的产线项目。

两者并非互斥。常见做法是先在 QuickBuild 中把工具链调通,保存为 .vpp,再在 SDK 中用 CogToolBlock 或 CogJob 加载该文件,通过修改输入、读取输出把它嵌入到应用程序里。这样既保留了图形化调试的效率,又获得了代码的灵活性。

二、ToolGroup 与 ToolBlock:两级容器

ToolGroup 是最基本的工具容器,它按顺序执行内部工具,工具之间通过“上一个工具的输出连到下一个工具的输入”形成数据流。ToolGroup 的输入输出端子由内部工具暴露出来,外部只需关注整组的输入图像和最终输出。它适合把一组固定顺序、逻辑简单的工具打包,例如“找圆—拟合—算直径”这样一条直线流程。

ToolBlock 是更强大的容器,除了顺序执行,还支持脚本(C# 脚本端子)、条件分支、循环和自定义输入输出端子。ToolBlock 内部可以嵌套 ToolGroup 或其他 ToolBlock,形成层级结构。在计量项目中,常把“标定”“定位”“测量”“判定”分别做成独立 ToolBlock,再在上层组合,这样每个模块可单独测试、单独替换。

两者的关键区别在于:ToolGroup 偏“顺序流水”,ToolBlock 偏“可编程模块”。当测量逻辑需要根据前一步结果决定是否继续、或需要做单位换算、坐标变换时,应优先用 ToolBlock 并在其中写脚本。

VisionPro 开发环境与工具链组织关系 QuickBuild(图形化) 拖拽工具 · 连线 · 调参 实时图形反馈 · 结果面板 保存为 .vpp 作业文件 适合:验证 · 调试 · 固化方案 VisionPro SDK(代码) CogFindCircleTool 等对象 设置输入 → Run() → 读结果 集成运动/数据库/MES 适合:产线集成 · 批量 · 自定义界面 .vpp 文件桥接 CogJob / CogToolBlock 加载 容器层级:ToolBlock 可嵌套 ToolGroup / ToolBlock ToolBlock(可编程 · 支持脚本/分支/循环) ToolGroup:标定 CogCalibCheckerboard CogCalibNPointToNPoint 输出:像素→毫米变换 ToolGroup:定位 CogPMAlignTool CogFixtureTool 输出:基准坐标系 ToolGroup:测量 CogFindCircleTool CogCaliperTool 输出:直径/间距/角度

三、计量相关工具分类

VisionPro 的计量工具可按功能分为四类,理解分类有助于在 QuickBuild 工具面板中快速定位。

  • 标定类:CogCalibCheckerboardTool(棋盘格标定)、CogCalibNPointToNPointTool(N 点映射)。前者用已知尺寸的棋盘格求像素当量,后者用多组对应点建立任意坐标映射。标定结果是后续所有尺寸测量的换算依据。
  • 定位类:CogPMAlignTool(模板匹配)、CogFixtureTool(建立基准坐标系)。定位解决“工件在哪、朝向如何”,把测量区域从图像坐标转换到工件坐标,是精密测量的前提。
  • 几何测量类:CogFindCircleTool、CogFindLineTool、CogCaliperTool(卡尺)、CogFindCornerTool。它们从图像中提取边缘点并拟合几何元素,输出圆心、半径、直线角度等。
  • 计量运算类:CogDistancePointPointTool、CogDistancePointLineTool、CogAngleLineLineTool、CogIntersectionLineLineTool。它们不直接处理图像,而是对前序工具输出的几何元素做距离、角度、交点运算,得到最终尺寸值。

四、调用方式与一个可复现的示例

在 QuickBuild 中调用工具是拖拽加连线;在 SDK 中则是“创建对象—设输入—Run—读结果”。下面以测量一个圆孔直径为例,给出 SDK 的关键代码骨架(示例参数为合理假设,非实测值)。

// 假设已完成标定,标定结果 calib 已获得
CogFindCircleTool findCircle = new CogFindCircleTool();
findCircle.InputImage = cogImage;              // 输入图像
findCircle.RunParams.NumCalipers = 12;         // 12 个卡尺
findCircle.RunParams.CaliperSearchLength = 40; // 搜索长度 40 像素
findCircle.RunParams.CaliperProjectionLength = 30;
findCircle.RunParams.CaliperSearchDirection = CogFindCircleSearchDirectionConstants.Outward;
findCircle.Run();                              // 执行

CogCircle circle = findCircle.Results.GetCircle();
double radiusPix = circle.Radius;
double diameterMm = radiusPix * 2 * calib.PixelSizeMm; // 换算为毫米
// 判定:假设规格为 10.00 ± 0.05 mm
bool pass = Math.Abs(diameterMm - 10.00) <= 0.05;

这段代码对应的操作闭环是:输入图像与标定参数 → 卡尺沿径向搜索边缘点 → 拟合圆得到像素半径 → 用标定当量换算为毫米 → 与规格上下限比较得出判定。在 QuickBuild 中,同样的过程表现为 CogFindCircleTool 的卡尺参数面板、结果面板中的 Radius 值,以及后续用表达式或脚本完成的换算与判定。

调试建议:先用 QuickBuild 把卡尺数量、搜索方向、边缘极性调稳,确认圆拟合的残差和重复性满足要求,再把参数固化到 .vpp 或写入 SDK 代码。直接写代码调参往往比图形化慢得多。
注意:标定当量(PixelSizeMm)必须与当前光学配置(镜头、工作距离、相机)一致。更换镜头或改变工作距离后,旧标定结果失效,必须重新标定,否则所有毫米尺寸都会系统性偏移。