第二章:视觉引导系统基础
机器视觉系统组成
做Delta机器人抓取,视觉系统就是它的眼睛。没有这双眼睛,机器人就是个盲人。我刚开始接触这个领域时,总觉得视觉系统很神秘,拆开来看,其实就四个核心部件:相机、镜头、光源、图像采集卡。
相机——视觉系统的视网膜
相机负责把光信号转成电信号。说白了,就是把看到的画面变成数字信号,让电脑能处理。
我个人习惯用工业相机,不是手机摄像头那种。工业相机讲究的是稳定、低延迟、高帧率。你想想看,Delta机器人抓取一个工件,可能只需要0.3秒,相机如果反应慢半拍,整个产线就卡住了。
镜头——视觉系统的晶状体
镜头决定了相机能看到多大范围、多清晰的画面。常见的镜头参数有焦距、光圈、景深。
嗯,这里要注意:镜头和相机的接口要匹配。C接口和CS接口就差那么一点点螺纹长度,装不上就是装不上。我吃过这个亏,买回来才发现不匹配,耽误了两天工期。
| 镜头参数 | 对抓取的影响 | 我的建议 |
|---|---|---|
| 焦距 | 决定视野大小 | 短焦距视野大,但畸变也大 |
| 光圈 | 影响进光量和景深 | 抓取场景建议用小光圈,景深大 |
| 景深 | 工件高度变化时能否清晰成像 | Delta抓取高度变化大,景深要留余量 |
光源——视觉系统的照明灯
光源经常被新手忽略。其实光源选得好,图像处理能省一半功夫。
我见过太多案例,算法调了半天,最后发现是光源没打好。环形光源、背光源、条形光源,各有各的用处。比如检测透明工件,用背光源效果最好;检测反光表面,用漫射光源能避免反光干扰。
图像采集卡——视觉系统的大脑皮层
图像采集卡负责把相机传来的数据快速传输到电脑内存里。现在很多相机用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
}
嗯,到这里,视觉引导系统的基础就说完了。这四个部件、四个步骤,构成了整个视觉引导系统的骨架。后面我们会一步步深入,把每个环节都讲透。