一、视觉系统概述:相机成像原理、镜头选型、光源选型、视觉系统与机械臂的通讯方式
大家好,我是老张。干机器人这行十几年了,今天咱们聊聊视觉系统与机械臂协同调试的第一课——视觉系统的基础。
说实话,很多刚入行的朋友一上来就急着调算法、跑模型,结果相机拍出来的图像糊成一团,或者光源一打全是反光。嗯,这些坑我都踩过。所以这一章,咱们把地基打牢。
1.1 相机成像原理——说白了就是小孔成像的升级版
相机成像,核心原理其实不复杂。你想想看,初中物理就学过的小孔成像——光线穿过一个小孔,在后面的屏幕上形成倒像。现在的工业相机,本质上还是这个逻辑,只不过把「小孔」换成了「镜头」,把「屏幕」换成了「感光芯片」。
感光芯片有两种主流类型:CCD 和 CMOS。我个人习惯在精度要求高的场景用 CCD,比如测量类项目;而 CMOS 成本低、帧率高,适合做定位和抓取。
关键参数:分辨率、像元尺寸、靶面尺寸
- 分辨率:比如 500 万像素,决定了你能看清多小的细节
- 像元尺寸:越小,分辨率越高,但进光量也越少
- 靶面尺寸:就是感光芯片的物理大小,常见的有 1/3 英寸、1/2 英寸、2/3 英寸
我在项目中遇到过一件事:一个客户非要拿 200 万像素的相机去测 0.01mm 的精度,结果怎么调都不行。后来换了 500 万像素加高倍镜头,一次搞定。说白了,选相机先算清楚「一个像素对应多少毫米」,这个值叫像素当量。
经验公式:像素当量 = 视野范围(mm) ÷ 分辨率(像素)
比如视野 100mm,相机 500 万像素(约 2500×2000),那一个像素对应 0.04mm。想测 0.1mm 的精度?够用了。
1.2 镜头选型——别让好相机配了个烂镜头
镜头这东西,我刚开始做的时候觉得随便买个能拧上去的就行。后来吃了大亏——一个 500 万像素的相机,配了个 200 万像素的镜头,拍出来的图像边缘全是模糊的。为什么?因为镜头的分辨率跟不上相机。
选镜头,主要看这几个参数:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 焦距 | 决定视野大小和工作距离 | 先定工作距离,再算焦距 |
| 光圈 | 控制进光量和景深 | 一般用 F8-F11,画质最好 |
| 畸变 | 镜头带来的图像变形 | 测量项目必须用低畸变镜头 |
| 接口 | C 口、CS 口、F 口等 | 工业相机主流是 C 口 |
举个例子:你要在 500mm 外拍一个 200mm 宽的工件。用公式算一下:焦距 = 工作距离 × 靶面宽度 ÷ 视野宽度。假设靶面宽 6.4mm(1/2 英寸),那焦距 ≈ 500 × 6.4 ÷ 200 = 16mm。选个 16mm 的镜头就对了。
注意:镜头和相机的靶面尺寸要匹配。大靶面相机配小靶面镜头,画面四周会暗掉,这叫「暗角」。我曾经因为这个返工过三次,血的教训。
1.3 光源选型——打光打得好,算法下班早
这句话不是我说的,是圈子里流传的老话。但确实如此——一个好的光源方案,能让图像处理简单一半。
光源的作用说白了就两件事:突出特征和抑制干扰。比如你要检测一个金属表面的划痕,用环形光从侧面打,划痕会变成亮线;用背光从下面打,划痕就看不见了。选哪种?看你的需求。
常见的光源类型:
- 环形光源:装在镜头周围,适合检测字符、划痕
- 背光源:从工件背面打光,适合测外形、轮廓
- 条形光源:从侧面打,适合检测反光表面的缺陷
- 同轴光源:光线和镜头同轴,适合高反光表面
颜色也很关键。红色光穿透性强,适合深色物体;蓝色光波长短,适合高精度测量。我习惯用白色 LED 加滤光片,灵活度高。
一个小技巧:打光的时候,让光源和相机成一定角度。比如检测 PCB 焊点,用 30-45 度的环形光,焊点会发亮,背景是暗的,对比度特别好。
1.4 视觉系统与机械臂的通讯方式——让眼睛和手连起来
视觉系统看到了工件,怎么告诉机械臂去抓?这就涉及到通讯了。
常用的方式有这么几种:
| 方式 | 速度 | 适用场景 |
|---|---|---|
| TCP/IP(以太网) | 中等 | 通用场景,跨平台 |
| 串口(RS232/485) | 慢 | 老旧设备,简单指令 |
| 数字 I/O | 极快 | 触发信号,简单到位 |
| Profinet/EtherCAT | 快 | 工业现场总线,实时性高 |
我个人最常用的是 TCP/IP 加数字 I/O 的组合。视觉系统算好坐标,通过 TCP 发给机械臂;机械臂到位后,通过 I/O 给视觉一个触发信号,告诉它「可以拍了」。这样既保证了数据量大的时候不丢包,又保证了实时性。
举个例子,我用过的一个典型通讯流程:
1. 机械臂运动到拍照位,输出「到位」信号
2. 视觉系统收到信号,触发相机拍照
3. 视觉系统处理图像,计算出工件坐标 (X, Y, R)
4. 通过 TCP 发送数据: "PICK 123.45 67.89 12.3"
5. 机械臂收到指令,执行抓取
6. 抓取完成后,输出「完成」信号
7. 循环
注意:通讯协议一定要定义清楚。比如坐标的单位是毫米还是像素?角度是弧度还是度?我曾经因为单位没统一,机械臂直接抓到了工件旁边的夹具上,差点撞坏。从那以后,我每个项目都会写一份「通讯协议文档」,双方签字确认。
知识体系总览
下面这张图,是我自己画的,把这一章的核心逻辑串起来了。你看一遍,心里就有谱了。
好了,这一章的内容就到这儿。视觉系统的基础,说白了就是相机、镜头、光源、通讯这四个东西。每个环节都选对了,后面的调试才能顺风顺水。下一章咱们聊相机标定——怎么让相机看到的坐标和机械臂的坐标对上号。
公众号:蓝海资料掘金营,微信deep3321