2. VisionPro开发环境搭建
VisionPro 的工程化落地并不是“装好软件就能跑”,而是要把三件事在同一个工程里对齐:视觉工具链(QuickBuild)、脚本与运行环境(.NET / 脚本语言)、以及相机与机器人的通信接口。本节围绕这三条主线,给出可直接照做的搭建过程,并在最后固化成一个可复用的项目模板。
一、QuickBuild 工程与工具链配置
QuickBuild 是 VisionPro 的可视化作业编辑器,一个 .vpp 文件就是一个 Job(作业)。典型引导作业的结构是:图像采集 → 标定/定位 → 测量/识别 → 结果输出。搭建时建议按“先单工具、后串联”的顺序推进,避免一次性堆叠导致排障困难。
以常见的“定位 + 抓取引导”为例,作业内至少包含以下工具节点:
- CogAcqFifoTool:负责取像,配置相机、曝光、增益、触发模式;
- CogCalibCheckerboardTool / CogCalibNPointToNPointTool:建立像素坐标到机器人坐标的映射;
- CogPMAlignTool:模板匹配,输出目标位姿(X、Y、角度);
- CogBlobTool / CogCaliperTool:按需做缺陷或尺寸校验;
- CogResultsAnalysisTool:汇总结果并做 Pass/Fail 判定。
工具之间的数据传递靠“链接”完成。例如把 PMAlign 的 Results.Item[0].GetPose() 链接到标定工具的输入,再把标定输出链接到结果分析工具。链接时要注意坐标系约定:VisionPro 默认图像坐标系 X 向右、Y 向下,角度逆时针为正;而多数六轴机器人工具坐标系 Z 朝外、绕 Z 旋转正方向为逆时针。两者若不一致,必须在标定或输出环节显式做符号与顺序转换,并在整份工程中保持一致。
Acq_Cam01、PM_Align、Calib_Robot),脚本中通过名称访问比默认编号更稳定,也便于后期维护。二、脚本环境配置
VisionPro 支持在作业中嵌入脚本(C# 或 VB.NET),用于做工具无法直接表达的坐标变换、通信打包和逻辑判断。脚本环境的关键是引用程序集与运行框架版本要对齐:
// 脚本中常用引用(C#)
using Cognex.VisionPro;
using Cognex.VisionPro.ToolGroup;
using Cognex.VisionPro.PMAlign;
using System.Net.Sockets;
using System.Text;
在 QuickBuild 的 Script 编辑器中,需确认目标框架与现场运行环境一致(例如 .NET Framework 4.7.2 或 4.8),否则在部署机上会出现“找不到程序集”的加载失败。脚本访问工具结果的典型写法如下:
// 读取 PMAlign 结果并做单位换算(示例)
CogPMAlignTool pm = (CogPMAlignTool)mToolGroup.Tools["PM_Align"];
double xPix = pm.Results[0].GetPose().TranslationX;
double yPix = pm.Results[0].GetPose().TranslationY;
double angDeg = pm.Results[0].GetPose().Rotation * 180.0 / Math.PI;
// 假设标定比例 0.05 mm/pixel(示例值,需以实际标定结果为准)
double xMm = xPix * 0.05;
double yMm = yPix * 0.05;
脚本调试建议先在 QuickBuild 内用“单步 + 输出窗口”验证变量,再接入通信。若脚本中要发起 TCP 连接,务必设置连接超时与异常捕获,避免通信中断导致整个作业卡死。
三、相机与机器人通信接口准备
引导系统的通信通常分两条链路:相机/视觉侧与机器人侧。常见组合是:相机通过 GigE/USB3 接入工控机,VisionPro 作为服务端或客户端,通过 TCP/IP 或现场总线(如 EtherNet/IP、PROFINET)与机器人控制器交换数据。
以 TCP 文本协议为例,视觉侧发送的典型报文包含:触发序号、目标数量、每个目标的 X/Y/角度、以及判定结果。机器人侧返回 ACK 或心跳。搭建时要明确三件事:
- 角色与端口:谁做 Server、谁做 Client,端口号(如 5000)与 IP 规划;
- 报文格式:定长还是分隔符,单位是 mm 还是 m,角度是度还是弧度;
- 触发方式:硬触发(光电/PLC 信号)还是软触发(机器人发指令)。
下面这张图给出本节三条主线的整体关系:QuickBuild 作业、脚本环境、通信接口如何汇聚到同一个可运行工程。
四、项目模板创建
当单工位调试通过后,应立刻把工程固化为模板,避免每个新工位重复踩坑。模板至少包含四类内容:
| 模板组成 | 内容 | 命名示例 |
|---|---|---|
| 作业文件 | 已链接好的 .vpp,含取像、定位、标定、结果分析 | Job_Guide_Template.vpp |
| 脚本文件 | 坐标变换、通信打包、异常处理 | Script_Comm.cs |
| 通信配置 | IP、端口、报文格式、触发方式 | CommConfig.xml |
| 标定文件 | 像素→机器人映射参数与标定点记录 | Calib_Robot.cal |
模板创建后,建议做一次“空跑验证”:用一张标准测试图或静态工件,确认取像、定位、标定、通信输出全链路可通,并记录下关键参数(曝光、增益、匹配分数阈值、通信超时)。这些记录就是后续新工位复制的基线。