4. 硬件同步方案

聊完了软件对齐的那些坑,咱们得面对一个现实:纯软件方案,精度是有天花板的。你想想看,网络延迟、CPU调度、USB传输抖动……这些不确定因素堆在一起,想做到微秒级对齐,太难了。

所以,真正要求高的项目——比如自动驾驶、高精度3D重建——硬件同步是绕不开的路。今天我就把三种主流方案掰开揉碎了讲清楚。

4.1 外部触发线(GPIO)——最朴素,也最可靠

这方法说白了就是:用一根物理线缆,把同步信号从主控直接送到每个相机。

我最早做多相机系统时,用的就是这招。一根BNC线,一个信号发生器,搞定。原理很简单:主控拉高GPIO电平,所有相机同时开始曝光。

核心优势:延迟固定,抖动极小(通常<1μs)。不受网络负载影响。

具体怎么接?看下面这张图:

GPIO 外部触发同步结构 主控 / 信号发生器 Camera 1 Camera 2 Camera 3 ⚠ 注意:触发线需等长,或使用菊花链拓扑 信号上升沿时间 < 相机最小曝光时间

实际项目中,有几点要注意:

  • 线缆等长——信号传播速度是有限的,线差1米,延迟差约5ns。短距离无所谓,长距离(>10米)就得算一算了。
  • 信号电平匹配——3.3V还是5V?TTL还是LVDS?接错了会烧接口。我吃过这个亏,烧过一个工业相机,心疼了好几天。
  • 抖动控制——GPIO触发本身抖动很小,但如果中间加了光耦隔离,延迟会变大,抖动也会增加。
我的经验:如果相机数量≤6台,且距离≤15米,GPIO触发是最省心、最稳定的方案。别迷信高大上的PTP,简单的东西往往最可靠。

4.2 PTP网络同步——IEEE 1588的威力

GPIO虽好,但有个硬伤:需要物理线缆。相机多了,布线就是噩梦。而且有些场景——比如无人机、机器人——根本没法拉线。

这时候,PTP(Precision Time Protocol)就派上用场了。它走的是网络,精度却能到亚微秒级。

PTP的原理,说白了就是:网络里选一个主时钟,其他设备都跟它对表。通过连续的消息交换,测量并补偿网络延迟,最终让所有设备的时钟同步。

特性 GPIO触发 PTP网络同步
同步精度 <1μs 1-10μs(千兆网)
布线复杂度 高(需独立线缆) 低(复用数据网线)
相机数量扩展 受限(需分线器) 容易(交换机级联)
抗干扰能力 强(物理隔离) 中(依赖网络质量)
成本 低 中(需PTP交换机)

PTP有几个版本:

  • IEEE 1588v1——精度一般,1ms级别,基本没人用了。
  • IEEE 1588v2——主流方案,精度可达100ns以内。但需要网络设备支持。
  • IEEE 802.1AS——针对音视频的简化版,也叫。车载以太网常用。
注意:普通交换机不支持PTP,它们会引入随机延迟,破坏同步精度。必须用PTP透明时钟交换机或边界时钟交换机。别想着省这个钱,我见过有人用普通交换机跑PTP,结果精度还不如NTP。

PTP的部署流程,大致是这样:

  1. 选主时钟——通常用GPS驯服时钟或原子钟作为Grandmaster。
  2. 配置交换机——开启PTP透明时钟模式,测量报文驻留时间。
  3. 配置从时钟——每个相机作为PTP从设备,同步到主时钟。
  4. 验证精度——用示波器或专用工具测量同步误差。

我个人习惯,在部署PTP时,会先做一次网络拓扑评估。跳数越少越好,最好不超过3跳。每多一跳,抖动就会累积。

4.3 多相机同步盒——专业的事交给专业的设备

GPIO和PTP各有短板。GPIO布线麻烦,PTP依赖网络。那有没有一种方案,既简单又精准?

有,就是多相机同步盒。这东西,说白了就是一个专用的硬件同步控制器。你把它往中间一放,所有相机都连到它上面,它负责统一发触发信号。

市面上常见的同步盒,比如:

  • Basler的同步盒——支持多路触发输出,可编程延迟。
  • FLIR的GPIO扩展盒——配合GigE相机使用。
  • 自研方案——用FPGA或MCU自己做,成本低,灵活性高。

同步盒的核心能力:

功能 说明
多路独立触发 每路可单独设置延迟,补偿相机差异
可编程脉冲宽度 适配不同相机的曝光触发需求
外部PPS输入 可级联到GPS或PTP主时钟
状态反馈 实时监测每路触发状态
什么时候用同步盒?相机数量多(>8台)、分布距离远、或者需要与其他传感器(如LiDAR、IMU)联合触发时。同步盒是性价比最高的选择。

我曾经在一个项目里,用同步盒同时触发12台相机和1台激光雷达。那套系统跑了两年,没出过一次同步问题。嗯,硬件方案就是这样,前期投入大一点,后期省心很多。

4.4 三种方案怎么选?

我列个决策树,帮你快速判断:

  • 相机≤4台,距离近,精度要求极高 → GPIO触发。简单、可靠、成本低。
  • 相机4-16台,已有千兆网络,不想额外布线 → PTP网络同步。灵活、可扩展。
  • 相机>16台,或需要与其他传感器联合触发 → 多相机同步盒。专业、稳定、易维护。

当然,实际项目中往往不是非此即彼。我见过不少系统是混合方案:PTP做时钟同步,GPIO做曝光触发。两者结合,取长补短。

一个小建议:不管选哪种方案,都留好测试接口。比如在同步盒上留一个示波器探头点,或者在PTP交换机上开一个监控端口。出了问题,能快速定位是同步问题还是其他问题。

硬件同步这块,说难不难,说简单也不简单。关键是把原理吃透,然后根据实际场景灵活选型。别盲目追求高精度,也别为了省钱牺牲可靠性。平衡,才是工程的真谛。