3. 3D相机与传感器接入

在HALCON 3D机器视觉系统中,第一步永远不是写算法,而是把“深度”稳定、正确地取进来。不同3D传感器获取深度的物理机制完全不同,这直接决定了点云的质量、盲区位置、对材质和光照的敏感程度,也决定了HALCON中应选择哪一类采集接口与参数。本节先厘清四类主流3D传感器的原理与适用边界,再落到HALCON的实际接入与参数配置。

一、四类3D传感器的成像原理与差异

激光三角测量是最经典的线结构光方案。传感器投射一条激光线到物体表面,相机从与激光平面成一定夹角的方向观察这条线;物体表面高度变化会使激光线在相机像面上发生横向位移,通过三角几何关系即可反算该剖面的深度。传感器沿一个方向扫描(或物体运动),逐条剖面拼接成完整3D点云。它的特点是Z向精度高(典型可达微米到几十微米级)、对表面颜色不敏感,但存在遮挡盲区——陡峭台阶或深槽后方激光线被挡住,会形成“阴影”缺失区。

结构光可看作三角测量的面阵扩展:投影仪投射编码条纹图案(相移+格雷码等),相机拍摄被物体表面调制后的变形条纹,通过相位解算获得整幅面的深度。它一次成像即可得到稠密点云,速度快、分辨率高,适合静态或准静态物体的高精度测量。缺点是强环境光会干扰条纹解码,高反光或纯黑表面也容易导致相位错误。

ToF(飞行时间)传感器主动发射调制光,测量光往返的相位差或直接计时,从而得到每个像素的距离。它整幅面同时成像、结构紧凑、对纹理不敏感,适合中远距离、动态场景,但绝对精度通常低于三角法(典型毫米级),且存在多路径干扰和近距非线性问题。

双目立体模仿人眼,用两个已标定的相机拍摄同一场景,通过匹配左右图像中的同名点、结合基线长度和焦距,由视差计算深度。它被动、成本低、适合室外大场景,但深度精度随距离平方衰减,且对无纹理表面匹配困难,常需投射随机散斑辅助。

四类3D传感器原理与HALCON接入对照 激光三角 激光线 相机斜视剖面 Z精度高·有遮挡盲区 逐线扫描拼接 结构光 编码条纹投影+相位解算 单次稠密点云·速度快 怕强光/高反光 ToF 飞行时间 调制光相位差测距 中远距·动态·毫米级 多路径干扰 双目立体 基线 视差→深度 被动·低成本·大场景 精度随距离衰减 HALCON 采集接口与参数配置路径 open_framegrabber 选接口/设备/分辨率 grab_image / grab_data 取强度图或深度图 set_framegrabber_param 曝光/增益/触发/量程 xyz_to_object_model_3d 深度图→3D对象模型 标定参数(内参/外参/手眼)决定深度图能否正确还原为物理坐标

二、HALCON采集接口的接入方式

HALCON通过统一的图像采集接口(Image Acquisition Interface)屏蔽底层差异。接入3D传感器时,核心算子链是:open_framegrabber 打开设备,set_framegrabber_param 配置参数,grab_image 或 grab_data 取图,最后用 xyz_to_object_model_3d 把深度图与标定参数转换为3D对象模型。

不同传感器的接口名不同:GigE Vision相机用 'GigEVision2',GenICam通用设备用 'GenICamTL',部分结构光/ToF厂商提供专用接口(如 'IDS'、'Photoneo' 等)。以一台GigE接口的激光轮廓传感器为例,典型接入代码如下:

open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive',
                   -1, 'default', -1, 'false', 'default',
                   '192.168.1.10', 0, -1, AcqHandle)

* 配置关键参数
set_framegrabber_param (AcqHandle, 'ExposureTime', 8000)   * 单位微秒
set_framegrabber_param (AcqHandle, 'Gain', 2.0)
set_framegrabber_param (AcqHandle, 'TriggerMode', 'On')
set_framegrabber_param (AcqHandle, 'TriggerSource', 'Line0')

grab_image (Image, AcqHandle)
close_framegrabber (AcqHandle)

这里 ExposureTime 是最关键的参数:曝光过短,激光线或条纹信噪比不足,深度图出现空洞;曝光过长,高反光区域饱和,相位或峰值定位偏移,深度值跳变。工程上通常先用 grab_image 取单帧,观察灰度直方图,把峰值控制在200~240之间,再固定曝光。

三、参数配置与深度图质量判断

3D采集的参数可分为三类:曝光类(ExposureTime、Gain)、触发类(TriggerMode、TriggerSource、TriggerDelay)、量程与输出类(测量范围、Z偏移、输出格式)。触发配置尤其重要——在产线运动中采集时,必须让传感器与编码器或PLC同步,否则点云在运动方向被拉伸或压缩。

判断深度图是否可用,可观察三个指标:一是有效点比例,用 threshold 分离有效深度区域后统计面积占比,低于90%说明遮挡或反光严重;二是深度噪声,对同一平面多次采集,计算Z向标准差,若明显大于传感器标称重复精度,说明曝光或环境光有问题;三是边缘完整性,检查台阶、孔洞边缘是否出现锯齿状缺失,这通常是三角法遮挡盲区的典型表现。

实操建议:接入新传感器时,先关闭触发、用连续采集模式观察实时深度图,逐项调整曝光和增益,待深度图稳定后再切换到触发模式并接入产线节拍。标定文件(相机内参、激光平面参数或双目外参)必须与当前传感器配置一致,否则 xyz_to_object_model_3d 输出的点云会出现系统性尺度或倾斜误差。

四、选型与接入的对应关系

传感器类型典型精度适用场景HALCON接入要点
激光三角微米~几十微米静态高精度轮廓、焊缝、台阶逐线采集,注意扫描方向与运动同步
结构光几十微米~亚毫米静态面阵高精度测量控制环境光,避免高反光表面
ToF毫米级中远距、动态、物流分拣注意多路径干扰与近距非线性校正
双目立体随距离衰减室外大场景、无高精度要求需高质量标定,无纹理时加散斑

实际工程中,选型不是追求最高精度,而是让传感器原理与工件材质、节拍、精度要求匹配。例如测量黑色橡胶密封圈的截面高度,结构光容易因吸光失败,激光三角反而更稳;而测量整块电路板的平面度,结构光一次成像的效率远高于逐线扫描。理解原理差异,才能在HALCON中选对接口、配好参数、拿到可信的深度数据。