一、视觉系统概述:相机成像原理、镜头选型、光源选型、视觉系统与机械臂的通讯方式

大家好,我是老张。干机器人这行十几年了,今天咱们聊聊视觉系统与机械臂协同调试的第一课——视觉系统的基础。

说实话,很多刚入行的朋友一上来就急着调算法、跑模型,结果相机拍出来的图像糊成一团,或者光源一打全是反光。嗯,这些坑我都踩过。所以这一章,咱们把地基打牢。

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. 循环

注意:通讯协议一定要定义清楚。比如坐标的单位是毫米还是像素?角度是弧度还是度?我曾经因为单位没统一,机械臂直接抓到了工件旁边的夹具上,差点撞坏。从那以后,我每个项目都会写一份「通讯协议文档」,双方签字确认。

知识体系总览

下面这张图,是我自己画的,把这一章的核心逻辑串起来了。你看一遍,心里就有谱了。

视觉系统与机械臂协同调试 · 知识体系 相机成像原理 小孔成像 → 镜头+芯片 CCD vs CMOS 分辨率 / 像元 / 靶面 像素当量计算 镜头选型 焦距 / 光圈 / 畸变 接口匹配(C/CS/F) 靶面匹配 焦距计算公式 光源选型 环形 / 背光 / 条形 / 同轴 颜色选择(红/蓝/白) 打光角度 突出特征 vs 抑制干扰 通讯方式 TCP/IP / 串口 / I/O Profinet / EtherCAT 通讯协议定义 触发与反馈流程 视觉系统与机械臂协同 图像采集与处理 坐标发送与抓取执行 四个基础模块 → 协同工作 → 完成抓取任务

好了,这一章的内容就到这儿。视觉系统的基础,说白了就是相机、镜头、光源、通讯这四个东西。每个环节都选对了,后面的调试才能顺风顺水。下一章咱们聊相机标定——怎么让相机看到的坐标和机械臂的坐标对上号。


公众号:蓝海资料掘金营,微信deep3321