应用笔记08-Vzense NYX系列ToF相机如何实现多机共存

编辑:Sophia.feng 时间: 2024-10-14

背景介绍

Vzense 3D深度相机采用基于ToF(Time-of-Flight)飞行时间的方式进行距离测量。在工作中,相机会发出红外光,光遇到物体后反射回传感器,相机通过计算光发射与返回的时间差计算物体的距离。

因为测量过程中需要主动发送红外光,所以多台相机在同一场景下(FoV有交叠)工作时,可能发生相互干扰的情况。多相机的干扰导致深度测量产生大量误差,深度质量严重下降,这极大限制了ToF相机的应用。基于以上问题我们提供了多机共存的方法。

相机工作时序

相机每个工作周期都会进行红外光发射与采集,并计算每个像素点的距离值。每秒钟可进行测量的次数,称之为帧率。细分每个工作周期,又可以分为曝光(激光发射与采集)、传输两个阶段。当多台相机同时工作时,假如曝光阶段正好发生重叠,A相机接收到了B相机发射出来的激光,就会发生相互干扰的现象,效果如下图所示:

通过触发模式实现多机共存

我们生产的ToF产品支持从触发模式(硬件触发模式和软件触发模式)。在该模式下,相机会等待收到触发信号,再开始一帧的曝光和传输。每一次信号仅触发一次曝光和传输。
触发方式分为硬触发和软触发两种。硬触发是通过外部触发源驱动,当相机收到有效信号后立刻开始图像的曝光。软触发不同于硬触发,不需要外部触发源,通过调用API即可进行一次图像触发。详情请参考《应用笔记07-Vzense 3D ToF相机触发功能介绍》。
Vzense ToF 产品系列基于 ToF 原理和 Vzense 提供的从触发模式,通过协同控制实现多相机共存。协同控制方式是将多台相机全部设置为触发模式,由主控平台分别控制不同相机的曝光开始时间,保证不同相机之间不会相互干扰。相机进入触发模式后,当接收到一次触发信号后,只会工作一个周期,从而可以根据需求,灵活的控制不同相机的出图时间以及帧率。但需要注意,此方式需要平衡帧率与相机数量。

适应场景:对相机的工作帧率没有过高的要求,多台相机可以被一个主机或者硬件触发信号源协同控制。

如何使用硬/软触发实现

1、硬触发模式
根据您选择的摄像机型号,参考规格以找到Ext_Trigger信号引脚。将对应的触发信号分别连接到摄像头 A、B 和 C 的触发引脚。

2、软触发模式
设置所有相机 A、B、C 为软件触发模式。等待 trigger 信号触发。
例程参考:
BaseSDK/Windows/Samples/Base/NYX650/DeviceSWTriggerMode。
API 接口为:

//设置相机工作模式为软触发模式
ScStatus scSetWorkMode(ScDeviceHandle device, ScWorkMode mode);

//获取当前相机工作模式
ScStatus scGetWorkMode(ScDeviceHandle device, ScWorkMode* pMode);
/**
 * @brief        相机工作模式
  */
typedef enum
{
    SC_ACTIVE_MODE           = 0x00,   //自动模式
    SC_HARDWARE_TRIGGER_MODE = 0x01,   //硬触发模式
    SC_SOFTWARE_TRIGGER_MODE = 0x02,   //软触发模式
} ScWorkMode;                          

由于每台摄像机的曝光时间可能不同,建议相邻摄像机的触发信号间隔大于或等于一个工作周期。例如,以 15fps 为例,摄像头 A 的触发信号发出后,摄像头 B 的触发信号会延迟超过 66.7ms。

NYX系列独有的自适应多机共存

对于某些场景,多台ToF相机分别连接到不同主机,彼此没有同步机制,就不具备协同控制的条件。典型场景如AGV/AMR,ToF相机被安装在不同的AGV上,且随AGV随机移动,彼此没有同步的时钟源,这时就无法通过触发模式实现多台ToF相机的多机共存。
Vzense NYX系列ToF相机具有独特的多机共存特性,可在彼此没有任何连接的情况下,通过内置算法自动感知并规避周边的NYX系列ToF相机激光信号,从而实现最多十几台产品的多机共存。

这种方式非常灵活,不需要用户做任何的配置,但需要注意的是NYX系列产品只可以识别NYX系列产品的激光信号,无法规避周边其他光源的影响。

相关文章

How can we support you?

We will be happy to advise you on product selection and find the right solution for your application.

联系我们