4. 多相机同步方案选型

多相机同步采集系统的核心问题不是“能不能同时触发”,而是“多路图像在时间轴上能否被约束到可接受误差范围内”。选型时通常先看三个指标:同步精度、系统规模与布线复杂度、以及是否允许相机之间保持固定相位关系。围绕这三个指标,工程上形成三类主流方案:硬件同步、软件同步和混合同步。

一、硬件同步:用物理信号统一时间基准

硬件同步的本质是让所有相机共享同一个触发源或时钟源。常见实现有两种:一是主从触发,由一台主相机或PLC/FPGA发出周期脉冲,其余相机作为从设备接收外触发;二是外部时钟+触发组合,例如用信号发生器同时输出一路高频时钟给所有相机做曝光时钟,另一路低频脉冲做帧触发。以Basler ace系列为例,相机可通过GPIO接口接收外部触发信号,触发模式设为TriggerMode=On,触发源设为Line1,并配置TriggerActivation为上升沿或下降沿。若需要曝光时间一致,还需将ExposureTime设为固定值,避免自动曝光导致各相机曝光窗口漂移。

硬件同步的精度取决于触发信号到达各相机的时延差。假设使用等长线缆和同一驱动器,典型抖动可控制在微秒级;若线缆长度差异为1米,电信号传播延迟约5ns,对多数工业检测可忽略。但若相机分布在不同机柜、走线长度差异大,或经过多级转接,时延差可能上升到数十微秒,此时需要测量并补偿。硬件同步的优点是精度高、确定性好,适合高速运动抓拍、多视角三维重建、以及需要严格同时曝光的场景。缺点是布线复杂,相机数量多时触发扇出和线缆管理成本高,且一旦某台相机掉线,可能影响整条触发链。

二、软件同步:用主机指令协调采集

软件同步不依赖外部触发线,而是由主机程序依次或广播式地向各相机发送采集命令。常见做法是使用Basler pylon SDK,先打开所有相机,设置相同的曝光和增益,然后调用StartGrabbing()启动各相机流,再通过时间戳对齐。软件同步的精度受操作系统调度、网络协议栈和相机内部缓冲影响,通常只能做到毫秒级,甚至几十毫秒。若使用GigE Vision协议,网络抖动和交换机排队会进一步放大误差。

软件同步的优点是布线简单、扩展灵活,适合相机数量少、运动速度慢、对同步精度要求不高的场景,例如静态或准静态的多角度拍摄、外观检测中的多工位拍照。缺点是精度低、确定性差,不适合高速运动目标。若必须用软件同步,应尽量使用同一台主机、同一网卡、关闭节能模式,并采用PTP(IEEE 1588)或相机自带的时间戳功能做后对齐。但要注意,PTP本身属于网络时钟同步,若相机支持硬件时间戳,可将其视为硬件同步的延伸,而非纯软件同步。

三、混合同步:分层解决精度与规模矛盾

混合同步通常将系统分成若干同步组,组内用硬件触发保证高精度,组间用软件命令或网络时间协议做粗同步。例如8台相机分成两组,每组4台共用一路外部触发,两组之间由主机通过软件命令启动,并利用PTP将两组的时间基准对齐到同一时钟。这样既避免了单路触发扇出过多导致的信号劣化,又比纯软件同步精度高。混合同步的关键是明确“组内精度”和“组间精度”两个指标:组内由硬件保证,组间由PTP或主机时间戳保证。若组间误差要求低于1ms,建议使用支持硬件时间戳的网卡和交换机,并在软件中做时间戳对齐。

多相机同步方案对比与适用条件 硬件同步 触发源 相机1 相机2 相机N 精度:μs级 · 布线:复杂 软件同步 主机 相机1 相机2 相机N 精度:ms级 · 布线:简单 混合同步 主机/PTP 组1 组2 组N 组内μs · 组间ms · 折中 选型决策参考 对比维度 硬件同步 软件同步 混合同步 同步精度 μs级 ms级 组内μs/组间ms 布线复杂度 高 低 中 适用规模 中小规模 小规模 大规模 典型场景 高速抓拍/3D 静态多角度 多工位/大阵列

四、选型判断:从精度需求反推方案

实际选型时,建议先明确允许的同步误差。若误差要求小于100μs,优先硬件同步;若误差允许在1ms以上,可考虑软件同步;若系统规模超过8台且误差要求介于两者之间,混合同步更合适。另一个关键因素是相机是否支持硬件触发和PTP。Basler ace、dart、boost等系列多数支持GPIO触发,部分GigE相机支持PTP。若相机不支持PTP,混合同步的组间对齐只能依赖主机时间戳,精度会下降。

还需要注意触发信号的扇出能力。普通GPIO驱动能力有限,直接并联多台相机可能导致信号边沿变缓。若相机数量超过4台,建议使用触发分配器或FPGA多路输出。线缆方面,触发线应远离电机和变频器,必要时使用屏蔽双绞线。软件同步则要关注网卡和交换机:多台GigE相机同时传输时,若交换机背板带宽不足,会出现丢包和延迟抖动,建议使用支持巨帧和QoS的工业交换机。

若系统需要同时满足高精度和大规模,可先按“组内硬件、组间PTP”设计,再通过时间戳对齐验证组间误差。验证时可用同一运动目标同时出现在两组相机视野中,比较同一时刻图像中目标位置差,若位置差对应的时差小于允许误差,则方案成立。

五、配置示例:硬件同步触发参数

以下为Basler pylon SDK中设置外部触发的基本参数示例,适用于ace系列GigE相机。假设使用Line1接收外部触发信号,上升沿有效,曝光时间固定为5000μs。

// 设置触发模式
camera.TriggerMode.SetValue(TriggerMode_On);
// 选择触发源
camera.TriggerSource.SetValue(TriggerSource_Line1);
// 设置触发沿
camera.TriggerActivation.SetValue(TriggerActivation_RisingEdge);
// 固定曝光时间,避免自动曝光漂移
camera.ExposureAuto.SetValue(ExposureAuto_Off);
camera.ExposureTime.SetValue(5000.0);
// 启动采集
camera.StartGrabbing(GrabStrategy_LatestImageOnly);

若使用多台相机,需对每台相机重复上述设置,并确保所有相机使用同一触发源。若触发源来自PLC,还需在PLC侧设置脉冲宽度,一般建议大于相机最小触发脉宽(通常为几微秒),并留出余量。触发频率应与相机帧率匹配,避免触发过密导致相机丢帧。

六、常见误区与排障

硬件同步并非“接上线就同步”。若各相机曝光时间不同,即使触发同时到达,曝光窗口也不一致,运动目标仍会产生模糊差异。因此硬件同步必须同时统一曝光和增益。软件同步也并非“完全不能用”,在低速场景下配合时间戳对齐,可达到亚毫秒级精度。混合同步的难点在于组间对齐,若PTP未启用或交换机不支持,组间误差可能达到数十毫秒,此时应改用硬件触发分配器统一所有相机。

排障时可按以下顺序检查:触发信号是否到达相机(用示波器测GPIO)、相机是否处于触发模式、曝光时间是否一致、网络是否丢包、时间戳是否对齐。若发现某台相机总是晚几毫秒,优先检查该相机的网络路径和触发线长度。若所有相机都晚,检查触发源本身是否稳定。

综上,硬件同步、软件同步和混合同步没有绝对优劣,只有是否匹配当前精度、规模和成本约束。选型时先定误差上限,再定相机数量和布线条件,最后选择触发方式和时间对齐机制。对于大多数工业多相机系统,若精度要求高于100μs且相机数量不超过8台,硬件同步是首选;若数量更多且精度要求可放宽,混合同步更务实;软件同步则适合低速、低成本、小规模的辅助采集场景。