OAK 4 上的帧同步 – 适用于depthai 3.4.0及以上版本
随着DepthAI 3.4.0的发布,我们将为OAK 4 系列设备提供完整的FSYNC(帧同步)支持,从而解锁多个设备之间的精确的多相机同步。
无论您是在构建多视图的感知系统、运动捕捉还是高速的追踪管线,FSYNC都能确保所有摄像头传感器在同一时刻捕捉帧。
为何FSYNC如此重要?
帧同步可确保多个摄像头同时捕捉图像,消除流之间的时间偏移。如果没有同步,即使是很小的时间差异也会导致:
- 对象位置错位
- 多视图重建效果不佳
- 深度或跟踪结果不准确
使用FSYNC,所有相机都在共享的定时信号上运行,使它们的输出可以逐帧直接比较。
FSYNC in Action
为了展示FSYNC的效果,我们直接扔了一个OAK 4 S 在6台垂直堆叠的OAK 4 D相机的前方通过。

我们记录了两次相同的测试:
- 同步开启状态
- 没有进行同步
同步拍摄

在同步录制中,对象在所有相机流中显示在相同的位置。
非同步拍摄

在非同步拍摄中,流明显没有对齐(以红色凸出显示),这表明了FSYNC的重要性。
注意:在以60FPS捕获六台相机时,相机流以黑白记录以减少带宽占用。
通过OAK设备实现FSYNC (Daisy-Chaining)
您可以使用我们的FSYNC Y 型适配器通过Daisy Chaining 同步多个OAK设备,包括OAK 4。

如何工作?
- 其中一台设备扮演 FSYNC主站
- 其他设备扮演 FSYNC 丛属
- 主站生成SYNC信号
- 从属跟随产生的信号
角色是自动确定的:
- IN端口上没有线缆的设备 → 主
- IN端口上有线缆的设备 → 从
当存在大于3台设备时, 信号完整性可能降低,您可以联络OAKChina 团队来寻求更多支持。
兼容性
- OAK-D-SR-POE : 在所有的DepthAI版本上被支持
- OAK 4系列设备:在DepthAI3.4.0以上的版本上支持
最小的FSYNC设置 (附代码)
# Get role (MASTER / SLAVE)
role = device.getExternalFrameSyncRole()
# Master defines FPS, slaves follow
cam = pipeline.create(dai.node.Camera).build(socket,
sensorFps=fps if role == dai.ExternalFrameSyncRole.MASTER else None)
# Create Sync node (runs on host)
sync = pipeline.create(dai.node.Sync)
sync.setRunOnHost(True)
sync.setSyncThreshold(datetime.timedelta(milliseconds=1000 / (2 * fps)))
# Link camera outputs into sync
cam.requestOutput(...).link(sync.inputs["cam"])
# IMPORTANT: start master first, then slaves
master_pipeline.start()
slave_pipeline.start()关键概念
- 使用
getExternalFrameSyncRole()来决定设备角色 - 仅 主设备设置 FPS
- Sync node 在主机上运行以对帧进行分组工作
- 所有的相机输出被连接到Sync node
- 开始顺序: 主先, 从后
我们的库中提供了完整的示例:
请查看文档中关于如何使用function generator从外部触发的指南
总结
使用DepthAI 3.4.0在OAK 4 上支持FSYNC, 可实现具有精确定时对准的强大、可拓展的多相机系统。
无论您是连接多个设备还是使用外部触发器,您现在都可以灵活地使用最少的设置构建出紧密同步的机器视觉系统。
如果您正在超越基础配置或需要帮助设计更大的规模化设置,您可以与我们取得联系,获得更多支持与帮助。首页 – OAKChina
Get started!
升级到DepthAI V3.4.0,立即开始构建同步的多摄像头管线配置:
