第二章:视觉引导系统基础

机器视觉系统组成

做Delta机器人抓取,视觉系统就是它的眼睛。没有这双眼睛,机器人就是个盲人。我刚开始接触这个领域时,总觉得视觉系统很神秘,拆开来看,其实就四个核心部件:相机、镜头、光源、图像采集卡。

相机——视觉系统的视网膜

相机负责把光信号转成电信号。说白了,就是把看到的画面变成数字信号,让电脑能处理。

我个人习惯用工业相机,不是手机摄像头那种。工业相机讲究的是稳定、低延迟、高帧率。你想想看,Delta机器人抓取一个工件,可能只需要0.3秒,相机如果反应慢半拍,整个产线就卡住了。

我的经验:选相机时,分辨率不是越高越好。我曾经在一个项目中用了500万像素的相机,结果处理时间太长,机器人跟不上。后来换成200万像素的,反而更合适。关键是匹配你的抓取精度和速度需求。

镜头——视觉系统的晶状体

镜头决定了相机能看到多大范围、多清晰的画面。常见的镜头参数有焦距、光圈、景深。

嗯,这里要注意:镜头和相机的接口要匹配。C接口和CS接口就差那么一点点螺纹长度,装不上就是装不上。我吃过这个亏,买回来才发现不匹配,耽误了两天工期。

镜头参数 对抓取的影响 我的建议
焦距 决定视野大小 短焦距视野大,但畸变也大
光圈 影响进光量和景深 抓取场景建议用小光圈,景深大
景深 工件高度变化时能否清晰成像 Delta抓取高度变化大,景深要留余量

光源——视觉系统的照明灯

光源经常被新手忽略。其实光源选得好,图像处理能省一半功夫。

我见过太多案例,算法调了半天,最后发现是光源没打好。环形光源、背光源、条形光源,各有各的用处。比如检测透明工件,用背光源效果最好;检测反光表面,用漫射光源能避免反光干扰。

避坑指南:我曾经在一个项目中用了白色LED光源,结果工件表面有反光,算法总是误判。后来换成蓝色光源,配合滤光片,问题就解决了。光源颜色和工件材质要匹配,这个很多人想不到。

图像采集卡——视觉系统的大脑皮层

图像采集卡负责把相机传来的数据快速传输到电脑内存里。现在很多相机用USB3.0或GigE接口,不需要单独的采集卡。但如果是高速抓取场景,我还是建议用Camera Link或CoaXPress接口的采集卡,延迟更低。

为什么?因为USB虽然方便,但CPU占用率高,容易丢帧。在高速产线上,丢一帧可能就漏抓一个工件。

视觉引导的核心流程

整个视觉引导流程,我总结为四步:采集、处理、定位、通信。这四步环环相扣,缺一不可。

采集 处理 定位 通信 触发拍照 图像增强 坐标计算 发送给机器人 获取原始图像 特征提取 姿态估计 协议解析

第一步:采集

采集就是让相机拍一张照片。但这里有个关键点:触发时机。

Delta机器人抓取时,工件是运动着的。什么时候拍照?早了晚了都不行。我一般用外部触发模式,让传感器检测到工件到位后,立即触发相机拍照。这样能保证拍到的工件位置是准确的。

核心要点:采集不是简单的拍照,而是要在正确的时间、用正确的参数、拍出高质量的图像。曝光时间、增益、白平衡这些参数,都要根据现场光线和工件材质来调。

第二步:处理

处理阶段,说白了就是让图像变得「好用」。原始图像可能有噪声、光照不均、对比度低等问题,需要预处理。

常用的处理步骤包括:

  • 灰度化——把彩色图转成灰度图,减少数据量
  • 滤波去噪——用高斯滤波或中值滤波去掉噪点
  • 二值化——把图像分成前景和背景,方便提取目标
  • 形态学操作——膨胀、腐蚀,让目标轮廓更清晰

我记得有个项目,工件表面有划痕,二值化后总把划痕当成边缘。后来我用了一个开运算,先腐蚀再膨胀,把细小的划痕去掉了,效果立竿见影。

第三步:定位

定位是视觉引导的核心。我们要从处理后的图像中,计算出工件的位置和角度。

常用的定位方法有:

  • 模板匹配——拿一个标准模板去图像里找相似区域
  • 边缘检测——找到工件的轮廓,计算中心点
  • 特征点匹配——提取工件的角点、圆点等特征

我个人偏爱边缘检测+最小二乘法拟合。为什么?因为稳定。模板匹配对光照变化敏感,特征点匹配计算量大。边缘检测加拟合,速度快、精度高,适合Delta机器人的高速抓取场景。

一个小技巧:定位时别忘了做相机标定。把像素坐标转换成实际物理坐标,才能告诉机器人该往哪抓。我见过有人没做标定,直接拿像素坐标发给机器人,结果抓了个寂寞。

第四步:通信

最后一步,把定位结果发给机器人控制器。常用的通信方式有:

  • TCP/IP——以太网通信,通用性强
  • 串口——RS232或RS485,简单可靠
  • 数字IO——直接通过IO口发送触发信号

我一般用TCP/IP,因为数据量大、速度快。但要注意通信协议要统一。比如我习惯用JSON格式传数据,机器人那边也要能解析JSON。曾经有个项目,我这边发了浮点数,机器人那边按整数解析,结果坐标全偏了。

// 一个简单的通信数据格式示例
{
  "x": 123.45,
  "y": 67.89,
  "angle": 30.5,
  "status": 1
}

嗯,到这里,视觉引导系统的基础就说完了。这四个部件、四个步骤,构成了整个视觉引导系统的骨架。后面我们会一步步深入,把每个环节都讲透。