3. 相机触发与同步机制

在机器视觉系统中,相机何时曝光、以什么节奏曝光,直接决定了图像与运动物体之间的对应关系。如果相机自由运行,采集时刻与产线位置之间没有确定关系,测量结果就会随速度波动而漂移。触发机制的本质,是把“相机自己决定何时拍”变成“由外部事件决定何时拍”,从而让图像与物理世界建立可重复的时间锚点。

硬触发与软触发:两种时间基准

软触发由上位机通过 SDK 或 GenICam 接口下发 TriggerSoftware 命令,相机收到命令后启动一次曝光。它的时间基准是主机软件,优点是灵活、无需额外接线,适合静态检测或对时序要求不高的场合;缺点是受操作系统调度、网络传输和驱动缓冲影响,触发时刻存在毫秒级甚至更大的不确定性。

硬触发则由外部电信号直接驱动相机的触发输入引脚。常见来源包括光电传感器、编码器、PLC 的 PNP/NPN 输出或专用触发卡。信号经光耦隔离后进入相机的触发电路,时间基准是硬件时钟,抖动通常在微秒级。硬触发是高速产线、运动测量和多相机同步的首选。

以 Basler ace 系列为例,触发输入通常为 3.3V~24V 的 GPIO,可配置为上升沿或下降沿有效。配置硬触发时,关键参数包括触发源(Line1)、触发沿(RisingEdge)、触发模式(On)以及去抖时间(Debouncer)。去抖时间过短会误触发,过长则会引入额外延迟,需要根据传感器信号质量权衡。

触发延迟与抖动:两个必须区分的指标

触发延迟(Trigger Latency)指从触发信号有效沿到达相机引脚,到传感器实际开始曝光之间的时间。它包含信号隔离、内部逻辑处理和曝光启动等环节,是一个相对固定的偏移量。抖动(Jitter)则是这个延迟的波动范围,反映的是重复性。

延迟可以补偿,抖动只能减小。例如某相机标称触发延迟为 20μs、抖动为 ±2μs,意味着每次曝光都比触发晚约 20μs,但波动不超过 2μs。如果产线速度是 1m/s,2μs 抖动对应 2μm 的位置误差,通常可以接受;若抖动达到 200μs,位置误差就是 200μm,对精密测量不可忽略。

延迟决定“拍晚了多少”,抖动决定“每次晚得是否一致”。前者可通过提前触发或坐标补偿修正,后者只能通过硬件触发、缩短线缆、提高信号质量来抑制。

多相机同步方案

多相机同步的目标是让多台相机在同一时刻或固定相位差下曝光,常见方案有三类。

  • 主从硬触发:一台相机或 PLC 作为主设备输出触发信号,同时接入多台相机的触发输入。所有相机收到同一沿,曝光时刻一致。这是最常用、抖动最低的方案。
  • 编码器同步:编码器 A/B 相输出接入分频器或 PLC,按固定位移间隔产生触发脉冲。相机与产线位置绑定,适合传送带上的等间距采集。
  • PTP 网络同步:支持 IEEE 1588 PTP 的 GigE 相机通过交换机同步时钟,由软件在统一时间轴上安排曝光。它省去了触发线,但同步精度受网络交换机和协议栈影响,通常在亚微秒到微秒级。

选择方案时,先看同步精度要求,再看布线条件。精度要求高、相机数量少,优先主从硬触发;相机分散、布线困难,可考虑 PTP;需要与运动位置严格对应,则用编码器触发。

多相机硬触发同步拓扑与信号时序 触发源 PLC / 光电传感器 触发分线器 1 入 3 出 相机 A Line1 触发输入 相机 B Line1 触发输入 相机 C Line1 触发输入 信号时序(同一触发沿,三相机同步曝光) 触发脉冲 相机 A 曝光 相机 B 曝光 相机 C 曝光 触发延迟

实战配置:以 Basler pylon 为例

下面给出一段典型的硬触发配置流程,使用 pylon 的 GenICam 参数接口。假设相机通过 Line1 接收 5V 上升沿触发,曝光时间 200μs,连续采集 100 帧。

// 1. 关闭自由运行,启用触发模式
camera.TriggerMode.SetValue("On");
camera.TriggerSelector.SetValue("FrameStart");
camera.TriggerSource.SetValue("Line1");
camera.TriggerActivation.SetValue("RisingEdge");

// 2. 配置触发输入引脚
camera.LineSelector.SetValue("Line1");
camera.LineMode.SetValue("Input");
camera.LineDebouncerTime.SetValue(10.0);   // 单位 μs,抑制抖动

// 3. 设置曝光与采集
camera.ExposureTime.SetValue(200.0);       // 单位 μs
camera.AcquisitionMode.SetValue("Continuous");
camera.AcquisitionFrameCount.SetValue(100);

// 4. 开始采集,等待外部触发
camera.StartGrabbing(GrabStrategy.OneByOne);

配置完成后,用示波器同时观察触发信号和相机的 Strobe 输出(曝光有效信号),可以直观看到触发延迟和抖动。若 Strobe 相对触发沿的偏移稳定,说明抖动小;若偏移忽大忽小,应检查触发线是否与电机线并行、屏蔽层是否接地、去抖时间是否合适。

同步效果的判断与常见问题

多相机同步是否成功,不能只看“都能出图”。可以用一个简单方法验证:让所有相机同时拍摄一个快速闪烁的 LED 或旋转的编码盘,比较各相机图像中光斑或标记的位置。如果位置一致,说明曝光时刻同步;如果存在固定偏移,说明触发延迟不同;如果偏移随机变化,说明抖动过大。

现象可能原因处理方向
相机完全不触发触发源、触发沿或引脚模式配置错误检查 TriggerSource、LineMode 和电平匹配
偶尔丢帧或多拍信号抖动、去抖时间过短、线缆干扰增大 Debouncer、使用屏蔽双绞线、远离动力线
多相机图像位置不一致各相机触发延迟不同或走线长度差异大统一线长、测量并补偿固定延迟
高速下图像模糊或错位曝光时间过长或触发相位与运动不匹配缩短曝光、用编码器按位移触发
硬触发信号的电平必须与相机 GPIO 规格匹配。Basler 相机通常支持 3.3V~24V,但若使用 24V 直接接入而未确认输入耐压,可能损坏输入电路。建议先用万用表确认电平,再接入相机。

触发与同步不是一次配置就一劳永逸的工作。产线速度、传感器更换、线缆布局变化都会影响时序。把触发延迟和抖动纳入日常点检,用示波器和同步测试板定期验证,才能保证图像与物理世界始终对齐。