DCAM系列多机共存
Last updated
Last updated
Vzense 3D深度相机采用基于ToF(Time-of-Flight)飞行时间的方式进行距离测量。在工作中,相机会发出红外光,光遇到物体后反射回传感器,相机通过计算光发射与返回的时间差计算物体的距离。
因为测量过程中需要主动发送红外光,所以多台相机在同一场景下(FOV有交叠)工作时,可能发生相互干扰的情况。多相机的干扰导致深度测量产生大量误差,深度质量严重下降,这极大限制了ToF相机的应用。基于以上问题我们提供了多机共存的方法。
相机每个工作周期都会进行红外光发射与采集,并计算每个像素点的距离值。每秒钟可进行测量的次数,称之为帧率。
DCAM系列相机的典型帧率为30fps,即每秒可产生 30 帧的深度图像信息,所以其工作周期时间为1s / 30 = 33.33ms,则每个工作周期的时间即为33.33 毫秒。
细分每个工作周期,又可以分为曝光(激光发射与采集)、传输两个阶段,如下图:
当多台相机同时工作时,假如曝光阶段正好发生重叠,A相机接收到了B相机发射出来的激光,就会发生相互干扰的现象。
我司生产的ToF产品支持从触发模式。在该模式下,相机会等待收到触发信号,再开始一帧的曝光和传输。每一次信号仅触发一次曝光和传输。
您可以通过GUI工具或API函数切换相机到从触发模式,具体可以查看GUI工具手册和API文档。
您可以查看相关产品的产品规格书,在“产品接口”部分找到“硬件触发功能”对应的内容,以及相关硬件接口来实现从触发模式。
可以通过调用API函数完成对相机的触发,具体可以查看Gitee或GitHub上对应平台Samples文件夹下的例程DeviceSWTriggerMode。
SDK链接:
基于ToF的原理和Vzense提供的从触发模式,Vzense多机共存可通过三种不同方式来实现,用户可根据场景需求,选择更合适的方法使用。这三种方式分别为:开启相机的Random Pattern功能、不同波长组合方式、时序控制方式。
DCAM系列相机可以通过VzenseConfigTool,开启深度相机的random_pattern功能,开启后相机可以支持多机共存。
VzenseConfigTool链接:
Vzense系列相机的VCSEL红外激光波长分为 850nm、940nm两种,并且其镜头中有对应波长的滤光片,因此不同波长的相机即使同时曝光也不会产生相互影响。如果在使用场景允许的情况下,可以通过两种波长的相机来实现同时工作的互不干扰。
适应场景:2台相机同时工作,室内场景。
使用方法:此方法不需要进行额外的软硬件设置,只需要在购买时分别购买850nm与940nm版本的产品进行组合使用即可。
时序控制方式的工作原理是在初始化时设置ToF相机的工作模式为从触发模式,然后通过硬件信号或API函数的控制方式,来精确控制多台相机的工作周期,从而保证多台相机的曝光时间分时进行。
根据所需相机数量与场景的不同,也可以分为协同控制、级联两种方法。
协同控制方式是将多台相机全部设置为slave模式,由主控平台分别控制不同相机的曝光开始时间,保证不同相机之间不会相互干扰。相机进入slave模式后,当接收到一次触发信号后,只会工作一个工作周期,所以可以根据需求,灵活的控制不同相机的出图时间以及帧率。但需要注意,此方式需要平衡帧率与相机数量。
适应场景:2台以上相机同时工作,对相机的工作帧率没有过高的要求。
使用方法:
1) 硬件触发:
根据所选相机的型号,参考规格书找到Ext_Trigger信号引脚。将相应的触发信号分别接到 A,B,C 相机的触发引脚。
2) 软件触发:
将 A,B,C 相机全部设置为slave模式。等待触发信号的触发。
PsReturnStatus Ps2_SetSlaveModeEnabled(PsDeviceHandle device, uint32_t sessionIndex, bool bEnabled)
由于相机不同模式下,曝光时间不同,建议相邻相机的触发信号间隔大于等于一个工作周期。例如,以 30fps 为例,A 相机触发信号发出后,B 相机的触发信号要延时 33.33ms 以上。
级联方法是使用相机的Exposure_timing输出信号,作为另一台相机的触发信号,使得A相机在曝光结束后触发B相机开始曝光,以此错开相机的曝光时间,保证互不干扰。时序图如下:
适应场景:2台相机同时工作,并且对两台相机的延时有较高的要求。例如两台相机需要进行图像拼接。
使用方法:
1)硬件连接:
根据所选相机的型号,参考规格书找到Exposure_timing信号与 Ext_Trigger信号引脚,如下图3,4号引脚。将A相机的4号引脚 (Exposure_timing)连接到B相机的3号引脚(Ext_Trigger),A相机的5号引脚(GND)连接到B相机的5号引脚(GND)。
2) SDK设置:
初始化时将A相机设置为master模式(default),B相机设置为 slave模式。设置完成后,再调用Ps2_StartStream。设置slave模式接口为Ps2_SetSlaveModeEnabled(PsDeviceHandle device, uint32_t sessionIndex, bool bEnabled); 模式设置可以通过Vzense配置工具,将相机的初始状态直接配置为所需模式。请参考VzenseConfigTool应用文档
国内:
海外:
国内:
海外: