1. 课程导入与VisionPro概览
在工业自动化产线上,机器人要完成抓取、装配、码垛或涂胶,第一步往往不是“动”,而是“看”。机器人本身只知道自己的关节角度和末端法兰在机器人坐标系中的位置,它并不知道目标工件此刻在哪里、以什么角度摆放。VisionPro 的价值,正是把相机看到的像素世界,转换成机器人能够理解并执行的三维位姿,从而让机器人从“盲抓”变成“按位置精确作业”。
举个典型场景:一条装配线上,工件由输送带随机送入,位置偏差可达 ±30 mm,角度偏差可达 ±15°。若采用机械挡块定位,需要为每种工件定制夹具,换型成本高;若采用视觉引导,相机拍摄工件后由 VisionPro 计算其位姿,再通过标定关系换算到机器人坐标系,机器人即可动态修正抓取点。这里的核心链路是:相机成像 → 图像处理与特征提取 → 位姿求解 → 手眼标定转换 → 机器人坐标修正 → 运动执行。这条链路中任何一环的精度或稳定性不足,都会直接反映为抓取失败或放置偏差。
VisionPro 软件架构
VisionPro 采用“QuickBuild 交互式开发 + VisionPro SDK 二次开发”的双层架构。QuickBuild 是图形化作业编辑器,工程师通过拖拽工具、连接输入输出、设置参数来搭建视觉作业;SDK 则面向需要集成到上位机、PLC 或机器人控制器的场景,用 C# 或 VB.NET 调用 VisionPro 的 API,把作业嵌入到产线软件中。
在运行层面,VisionPro 的作业以 Job 为单位组织。一个 Job 包含若干 Tool,Tool 之间通过终端(Terminal)传递图像、区域、坐标、数值等数据。图像采集由 CogAcqFifoTool 或相机专用采集工具完成,处理结果由 CogBlobTool、CogPMAlignTool、CogFindLineTool 等工具输出,最终由 CogCalibNPointToNPointTool 或手眼标定工具完成坐标转换。整个数据流是单向的、可追溯的,每个 Tool 的输入输出都可以在 QuickBuild 中实时查看。
核心工具链与开发流程
VisionPro 的工具链可以按功能分为四类。第一类是采集类,包括 CogAcqFifoTool 和各类相机专用工具,负责从 GigE、USB3、Camera Link 等接口获取图像。第二类是定位与测量类,CogPMAlignTool 用于基于模板的图案匹配,适合有稳定纹理或轮廓的工件;CogBlobTool 用于斑点分析,适合高对比度、背景干净的场景;CogFindLineTool 和 CogFindCircleTool 用于边缘和几何特征提取。第三类是标定类,CogCalibNPointToNPointTool 完成平面九点标定,手眼标定工具完成相机与机器人坐标系的映射。第四类是通信与集成类,通过 Cognex 的通信工具或 SDK 把结果发送给机器人控制器。
开发流程通常按以下顺序推进。首先明确任务:工件是什么、偏差范围多大、节拍要求多少、精度要求多少。然后选型:根据视野和精度要求计算所需分辨率。例如视野 200 mm × 150 mm,要求定位精度 0.1 mm,则相机单方向至少需要 200/0.1 = 2000 像素,考虑亚像素和余量,通常选择 500 万像素(2448 × 2048)相机。接着搭建光学系统:选择合适焦距的镜头,使视野覆盖工件运动范围;选择光源和打光方式,使目标特征与背景形成稳定对比。之后在 QuickBuild 中搭建 Job:先采集图像,再依次添加定位工具、标定工具和输出工具,逐个工具调试参数并观察结果。最后进行手眼标定和精度验证:用标定板或标准件在多个位置采集,计算标定误差,确认重复性和绝对精度满足要求后,再接入机器人进行联调。
一个可执行的教学示例
假设某装配工位需要引导机器人抓取一个方形工件,工件在输送带上随机摆放。示例参数如下:相机为 500 万像素 GigE 相机,镜头焦距 16 mm,工作距离约 400 mm,视野约 220 mm × 165 mm;光源为环形白光,从正上方照射;标定采用九点标定,标定点覆盖视野的 80% 区域。在 QuickBuild 中,CogPMAlignTool 的模板从标准件图像中提取,角度搜索范围设为 ±20°,尺度搜索范围设为 ±5%,接受阈值设为 0.7。运行后观察 Score 值:若 Score 稳定在 0.85 以上,说明匹配可靠;若低于 0.7,需要检查光照一致性或模板质量。标定完成后,用标准件在视野内取 9 个位置,记录机器人实际抓取坐标与视觉计算坐标的偏差,若最大偏差小于 0.3 mm,则认为标定满足示例要求。这些数值均为教学示例,实际项目需根据工件和精度要求重新计算和验证。
掌握这条从“看到”到“做到”的完整链路,是后续学习 VisionPro 各工具参数、标定方法和机器人通信的基础。本章后续内容将围绕这条链路逐层展开,先建立整体认知,再深入每个环节的具体实现。