2. 视觉引导基础

视觉引导基础 学习卡片

视觉引导机器人定位的第一步,是让系统“看得清、看得准、看得稳”。在 Halcon 项目中,相机、镜头、光源与视野分辨率共同构成了成像链路,任何一环的偏差都会直接传导至机器人抓取或装配的最终精度。本章从物理成像原理出发,逐步拆解镜头与光源的选型逻辑,并给出视野与分辨率的可落地计算公式。

一、核心原理:从光线到像素的成像链路

相机成像的本质是将三维空间中的物体通过光学系统投影到二维传感器平面上。这一过程遵循薄透镜成像公式:

1/f = 1/u + 1/v
其中:
f —— 镜头焦距(mm)
u —— 物距(工作距离,mm)
v —— 像距(镜头光心到传感器距离,mm)

在实际视觉引导项目中,物距 u 通常远大于焦距 f,因此像距 v 近似等于 f,此时放大倍率 β 可简化为:

β = 传感器尺寸 / 视野尺寸 = v / u ≈ f / u

传感器将光信号转换为电信号,再经 ADC 量化为灰度值。Halcon 中通过 grab_image 采集到的图像,其每个像素的灰度值反映了该点接收到的光强。理解这一链路,有助于后续在 Halcon 中正确设置相机参数(如曝光时间、增益)以及进行标定。

需要特别注意的是,像素不是物理尺寸。单个像素对应的实际物理尺寸由传感器像元尺寸与放大倍率共同决定,这也是后续分辨率计算的基础。

二、镜头选型:焦距、接口与畸变控制

镜头是成像质量的核心。在视觉引导项目中,镜头选型需从以下四个维度综合评估:

选型维度 关键参数 对视觉引导的影响
焦距 6mm / 8mm / 12mm / 16mm / 25mm / 50mm 决定视野大小与工作距离;焦距越长,视野越小,但相同物距下分辨率越高
接口类型 C接口(后焦距17.526mm)、CS接口(12.5mm) 接口不匹配会导致无法合焦;C接口镜头配CS接口相机需加5mm接圈
畸变 TV畸变 < 0.1% 为佳 畸变直接影响标定精度;广角镜头畸变较大,需在Halcon中做畸变校正
光圈与景深 F1.4 ~ F16 光圈越大进光量越大,但景深变浅;机器人抓取场景通常需要较大景深

镜头选型的基本流程如下:

  1. 确定工作距离范围(机器人安装空间限制);
  2. 根据目标视野大小计算所需焦距:f = 工作距离 × 传感器长边 / 视野长边;
  3. 检查所选焦距下,目标物体的最小特征尺寸是否满足分辨率要求;
  4. 确认接口类型与相机匹配,并评估畸变是否在可接受范围内;
  5. 在 Halcon 中通过 calibrate_cameras 进行畸变标定,获取内参。
经验提示:对于机器人引导场景,优先选择 12mm 或 16mm 焦距的定焦工业镜头。这类镜头畸变较小,且工作距离适中(300~800mm),便于在 Halcon 中建立稳定的像素-毫米映射关系。

三、光源类型与打光方式

光源决定了图像中目标与背景的对比度。在视觉引导中,光源选型不当往往比相机分辨率不足更容易导致定位失败。常见光源类型包括:

  • 环形光源(Ring Light):环绕镜头安装,提供均匀照明,适合检测字符、划痕及平面特征;
  • 条形光源(Bar Light):从侧面照射,可突出物体边缘轮廓,适合定位矩形或异形工件;
  • 同轴光源(Coaxial Light):通过半透半反镜使光线垂直照射,适合高反光表面(如晶圆、镜面金属);
  • 背光源(Back Light):从物体背面照射,形成高对比度轮廓,适合测量外形尺寸或定位孔位;
  • 穹顶光源(Dome Light):漫反射均匀照明,适合球形或曲面物体。

打光方式的选择需结合物体表面特性:

高反光表面(金属、镜面) → 同轴光或低角度环形光
漫反射表面(塑料、陶瓷) → 环形光或条形光
透明或半透明物体       → 背光源
需要突出边缘轮廓       → 低角度条形光(掠射)

在 Halcon 项目中,光源通常通过数字 I/O 控制亮度,并在采集前进行白平衡与曝光调整。建议在项目调试阶段,使用 Halcon 的 live 窗口实时调整光源亮度,观察灰度直方图分布,确保目标区域灰度值处于 150~220 之间,背景低于 50,以获得最佳二值化效果。

四、视野与分辨率计算

视野(FOV)与分辨率是视觉引导系统设计中最关键的量化指标。分辨率决定了系统能够识别的最小特征尺寸,而视野决定了机器人工作范围。

计算步骤如下:

  1. 确定最小特征尺寸:例如需要定位直径 2mm 的圆孔,则最小特征尺寸为 2mm;
  2. 确定像素数要求:工程上通常要求最小特征在图像中至少占据 5~10 个像素,以保证稳定提取;
  3. 计算单像素物理尺寸:单像素尺寸 = 最小特征尺寸 / 最少像素数;
  4. 计算视野:视野 = 传感器尺寸 × 单像素物理尺寸对应的放大倍率,或直接由工作距离与焦距推算。

举例说明:

已知条件:
- 相机传感器:1/1.8" CMOS,像元尺寸 2.4μm,分辨率 2448×2048
- 工作距离:400mm
- 需要识别的最小特征:直径 1.5mm 的定位圆

计算过程:
1. 最小特征像素数要求:取 8 像素
2. 单像素物理尺寸 = 1.5mm / 8 = 0.1875mm
3. 传感器长边物理尺寸 = 2.4μm × 2448 = 5.875mm
4. 所需放大倍率 β = 0.1875mm / 2.4μm = 78.125(即1:78.125)
   但实际放大倍率由焦距决定:β = f / 工作距离
5. 所需焦距 f = β × 工作距离 = (2.4μm / 0.1875mm) × 400mm
   注意单位统一:2.4μm = 0.0024mm
   f = (0.0024 / 0.1875) × 400 = 5.12mm
6. 实际选型:选择 6mm 镜头,则实际视野为:
   视野长边 = 5.875mm / (6/400) = 391.7mm
   视野短边 = 4.915mm / (6/400) = 327.7mm
7. 验证:1.5mm 特征在图像中像素数 = 1.5 / (391.7/2448) ≈ 9.4 像素,满足要求

上述计算表明,在 400mm 工作距离下,6mm 镜头可覆盖约 392×328mm 的视野,且满足 1.5mm 特征的稳定识别需求。若需识别更小特征,则需缩短工作距离或更换更高分辨率相机。

五、案例:3C 装配中的螺丝孔定位

某 3C 装配线需要机器人抓取螺丝并锁入手机中框的定位孔。要求定位精度 ±0.1mm,孔直径 2.0mm,工作距离 300mm。

系统选型如下:

  • 相机:500 万像素面阵相机,像元 3.45μm,分辨率 2448×2048;
  • 镜头:16mm 定焦,C接口,TV畸变 < 0.05%;
  • 光源:低角度环形白光,亮度可调;
  • 打光方式:环形光 45° 掠射,突出孔边缘轮廓。

实际视野计算:

β = 16 / 300 = 0.0533
传感器长边 = 3.45μm × 2448 = 8.45mm
视野长边 = 8.45 / 0.0533 = 158.5mm
单像素物理尺寸 = 3.45μm / 0.0533 = 64.7μm ≈ 0.065mm

定位精度验证:
- 孔直径 2.0mm 在图像中像素数 = 2.0 / 0.065 ≈ 30.8 像素
- Halcon 亚像素边缘提取精度可达 0.1 像素
- 理论定位精度 = 0.065mm × 0.1 = 0.0065mm,远优于 ±0.1mm 要求

在 Halcon 中,通过 edges_sub_pix 提取孔边缘,使用 fit_circle_contour_xld 拟合圆并获取圆心坐标,再经手眼标定矩阵转换至机器人坐标系,最终实现稳定抓取。

六、常见误区与复盘

误区一:盲目追求高分辨率相机。高分辨率意味着更大的数据量,处理时间增加,且对镜头和光源的要求更高。在视野不变的前提下,提高分辨率确实能提升精度,但若镜头分辨率不足,图像边缘会模糊,实际有效分辨率反而下降。正确做法是先计算所需单像素物理尺寸,再反推相机与镜头组合。
误区二:忽略畸变对定位精度的影响。广角镜头(焦距小于 8mm)的畸变可达 1%~3%,在视野边缘处误差可达数毫米。若未在 Halcon 中进行畸变校正,手眼标定结果将严重失真。建议所有视觉引导项目均执行 calibrate_cameras 标定流程,获取畸变系数并在运行时通过 change_radial_distortion_image 校正。
误区三:光源亮度越高越好。过亮的光源会导致传感器饱和,灰度值溢出至 255,丢失边缘细节;同时产生镜面反射光斑,干扰特征提取。正确做法是通过灰度直方图监控,将目标区域灰度控制在 150~220 之间,并优先调整光源角度而非单纯增加亮度。

复盘一个实际失败案例:某项目使用 8mm 广角镜头,工作距离 500mm,视野 600×450mm,未做畸变校正。在视野中心区域定位精度 ±0.05mm,但在视野边缘(距离中心 250mm 处)定位误差达到 ±0.8mm,导致机器人抓取偏移。经排查,原因是镜头径向畸变在边缘处达到 2.3%。解决方案:更换为 12mm 镜头,缩小视野至 400×300mm,并执行 Halcon 畸变标定,最终全视野定位精度稳定在 ±0.08mm 以内。

本章所涉及的成像原理、镜头与光源选型、视野分辨率计算,是后续 Halcon 标定、图像处理与机器人坐标变换的基础。在实际项目中,建议先完成理论计算,再通过 Halcon 的实时采集与测量功能进行验证,形成“计算-验证-修正”的闭环调试流程。