本文内容

 使用多台 Femto Bolt  设备的好处

● 规划多设备配置

● 选择设备配置

● 准备设备和其他硬件

 

每个 Femto Bolt  设备附带一个8-pin GPIO同步端口,可用于将多设备连接在一起。 连接设备后,您可以通过软件协调多台设备间的触发时序

本文将介绍如何连接和同步多台设备

使用多台 Femto Bolt  设备的好处

使用多台 Femto Bolt  设备的原因有很多,包括:

 填补遮挡区域。 尽管Femto Bolt  数据转换生成的是单个图像,但两个相机(深度和 RGB 相机)实际上保持着较小的一段距离。 这种偏移使得遮挡成为可能。 遮挡是指前景对象阻挡了设备上两个相机之一的背景对象的部分视角。 在生成的彩色图像中,前景对象看上去像是在背景对象上投射了一个阴影。

 

例如,在下图中,左侧相机可看到灰色像素“P2”。但是,白色前景对象会阻止右侧相机IR视角。 右侧相机无法获取“P2”的数据,增加的同步设备可以提供遮挡的数据。

 

 

 扫描三维对象。

 将有效帧速率提升至 30 帧每秒 (fps) 以上。

 捕获同一场景的多个 4K 彩色图像,所有图像都基于曝光起始时间点 100毫秒 (us) 对齐。

 提升相机的空间覆盖范围。

规划多设备配置

在开始之前,请务必查看硬件规格深度相机

选择设备配置

可使用以下任一方法来完成设备配置:

 星形配置。 同步一台主设备以及最多八台从设备。

 

 链型配置。 同步一台主设备以及最多八台从设备。

相机同步接口及同步线材(Multi-camera Sync Cable)介绍

相机采用8-pin GPIO口实现同步,具体接口介绍如下表:

Pin

定义

功能

1

SYNC_VCC

 Input & 持续电平信号

 I/O电平设定信号:8-pin同步接口的I/O电平默认设置为1.8V;若在SYNC_VCC接口上提供3.3V或者5V电平电压时,可将I/O电平设置调整为3.3V或者5V,提升同步信号传输稳定性和传输距离。

2

GPIO_OUT

  Output & 脉冲信号

 同步驱动信号:IR曝光同步信号;典型应用为驱动外部补光灯

3

VSYNC_OUT

 Output & 脉冲信号

 同步触发信号:用于触发后序设备同步采集数据

4

TIMER_SYNC_OUT

 Output & 脉冲信号

 硬件时间戳清零信号:用于将后序设备的硬件时间戳清零

5

RESET_IN

 Input & 脉冲信号

 相机硬复位信号:触发相机先掉电,并自动上电复位

6

VSYNC_IN

  Input & 脉冲信号

 同步触发信号:前序设备发来的同步采集触发信号

7

TIMER_SYNC_IN

 Input & 脉冲信号

 硬件时间戳清零信号:前序设备发来的硬件时间戳清零指令

8

GND

 Input/Output & 持续电平信号

 接地信号:同步信号的参考地

 

同步线材介绍,如下图为专业版的Multi-camera Sync Cable,左侧连接器8-pin 接口接相机端,右侧RJ45接口接网线端。

 

 

相机端同步线材连接示意图

【注】多机同步接口靠近Type-C接口位置为Pin 1

使用外部同步触发

在这两种配置中,主设备为从设备提供触发信号。 但您可以将自定义的外部源作为同步触发器。 例如,可以使用此选项实现与其它设备同步采集图像。 无论是在链型配置还是星型配置中,外部触发源都连接到设备VSYNC_IN口。

外部触发源的工作方式必须与主设备相同。 它必须提供一个具有以下特征的同步信号:

 上升沿触发

 高电平脉冲宽度:>1ms

 触发电平:1.8V/3.3V/5V

 频率支持:精确到 30 FPS25FPS15 FPS 5 FPS(彩色相机主 VSYNC_IN信号的频率)

触发源必须使用 Multi-camera Sync Cable将信号传送到从设备的同步信号输入端口。

多机同步主机连接集线器示意图

  

多机同步从机连接集线器示意图

同步集线器相关规格及信息请参阅多机同步集线器规格书

 

规划相机设置和软件配置

有关如何设置软件来控制相机以及如何使用图像数据的信息,请参阅Orbbec SDK 和 Orbbec SDK K4A Wrapper

本部分讨论影响已同步设备(而不是单独的设备)的多种因素。 软件应考虑到这些因素。

曝光考虑因素

若要控制设备曝光时序精确对齐,我们建议使用手动曝光。 使用自动曝光时,每个彩色相机可能会动态更改实际曝光值。 由于曝光时长会影响曝光时序,此类更改很快就会使相机会影响同步效果。

避免在图像捕获循环中重复指定相同的曝光设置。 必要时,请只调用 API 一次。

避免多个深度相机之间产生干扰

如果多个深度相机对重叠的视场成像,每个相机必须通过其自身关联的激光成像。 为了防止激光相互干扰,相机捕获图像的时间应相互偏离 160μs 或以上。

对于每次深度相机捕获图像,激光会打开 9 次,每次只保持活动状态 125μs。 然后,激光将空闲 1450μs 2390μs,具体取决于工作模式。 此行为意味着,偏移量计算的起点为 125μs

 

此外,相机时钟与设备固件时钟之差会将最小偏移量增大至 160μs。 若要根据配置计算出更精确的偏移量,请注意所用的深度模式,并参考深度传感器原始定时表。 参考此表中的数据,可以使用以下公式计算最小偏移量(每个相机的曝光时间):

曝光时间 = (红外脉冲 × 脉冲宽度) + (空闲周期 × 空闲时间)

使用 160μs 偏移量时,最多可以配置 9 个额外的深度相机,以便在每束激光打开时,其他激光保持空闲状态。

在软件中,使用 depth_delay_off_color_usec  subordinate_delay_off_master_usec 来确保每束红外激光在其对应的 160μs 时间窗口内触发,或者拥有不同的视场。

 

 备注

实际脉冲宽度为 125μs,但我们声明 160us 以留出一些余地。 以 NFOV UNBINNED 为例,每个 125μs 脉冲之后是 1450μs 空闲。 把这些加起来 - (9 x 125) + (8 x 1450) - 得到的曝光时间为 12.8 毫秒。 可以交错曝光两台设备的秘诀是让第二个相机的第一个脉冲落在第一个相机的第一个空闲期内。 第一个相机和第二个相机之间的延迟可能低至 125μs(脉冲宽度),但是我们建议留出一些余地,因此我们声明 160μs。 给定 160μs,可以让最多 10 个相机的曝光时间交错。

准备设备和其他硬件

除了配置多台 Femto Bolt  设备以外,可能还需要获得其他主机和其他硬件才能支持你要构建的配置。 在开始设置之前,请使用本部分中的信息来确保所有设备和硬件已准备就绪。

Femto Bolt 设备

对于要同步的每台 Femto Bolt  设备,请采取以下措施:

 确保设备上已安装最新的固件。 有关如何更新固件的详细信息,请参阅更新Femto Bolt 固件

 记下每个设备的序列号。 在稍后的设置过程中需使用此编号。

主机电脑

多个Femto Bolt 通常连接到各自的主机, 可以根据设备的使用方式以及通过 USB 连接传输的数据量使用专用主机控制器。

确保主机上安装了Orbbec SDKOrbbec SDK K4A Wrapper。 有关如何安装SDK 的详细信息,请参阅设置Femto Bolt

Linux 计算机:Ubuntu 上的 USB 内存

默认情况下,基于 Linux 的主机只为 USB 控制器分配 16 MB 的内核内存用于处理 USB 传输。 此内存量通常足以支持单台 Femto Bolt 设备。 但是,若要支持多台设备,USB 控制器必须有更多的内存。 若要增大内存,请执行以下步骤:

1. 编辑 /etc/default/grub

2. 找到以下行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=128"

 

备注

这些命令会将 USB 内存设置为 128 MB。 此示例设置是默认值的八倍。 可以设置一个大得多的值,只要适合解决方案即可。

3. 运行 sudo update-grub

4. 重新启动计算机。

电缆

若要将设备相互连接并连接到主机,必须使用 Mulit-camera Sync Cable、网线和同步集线器进行连接。 网线长度应小于 10

所需的线缆数取决于所用的设备数以及具体的设备配置。 Femto Bolt 相机包装中未随附同步线和集线器。 必须单独购买同步线和集线器及网线。

连接设备

在星型配置中连接 Femto Bolt 设备

1. 将每台Femto Bolt  连接到电源。

2. 将每台设备连接到其自身的电脑主机。

3. 选择一台设备充当主设备,并将同步线与主设备连接上。

4. 将该同步转接线的另一端接入T568B to T568B的网线,网线另一端接入专业版星型同步集线器的Primary In接口。

5. 若要连接另一个设备,请将同步线与Femto Bolt 同步接口连接上,并用网线连接到同步线另一端,网线的另一端连接同步集线器的第一个从属设备接口:Secondary Cam 1。第二个从属设备连接Secondary Cam 2  ,以此类推。

6. 重复上述步骤,直到所有设备都已连接。

在链形配置中连接 Femto Bolt  设备

1. 将每个Femto Bolt  连接到电源。

2. 将每个设备连接到其自身的上位机。

3. 选择一个设备充当主设备,并将同步线与主机连接上。

4. 将该同步线的另一端接入链型同步集线器的Primary In接口。

5. 若要连接另一个设备,请将同步线与Femto Bolt 同步接口连接上,并将同步线另一端连接同步集线器的第一个从属设备接口:Secondary Cam 1。第二个从属设备连接Secondary Cam 2,以此类推。

6. 重复上述步骤,直到所有设备都已连接。

 

注:链型连接提供的是开发者版本同步集线器和线材,不支持网线连接的专业版集线器。详细介绍请参阅多机同步集线器规格书

验证设备是否已连接并可通信

若要验证设备是否已正确连接,请使用 K4A 风格 Femto Bolt 查看器。 根据需要重复此过程,以结合主设备测试每个从设备

 

 重要

在测试过程中,必须知道每个 Femto Bolt 的序列号。

1. 打开两个 K4A 风格 Femto Bolt Viewer(使用 1.8.1 版本  K4A 风格 Femto Bolt Viewer 测试时必须先确保各相机被工具打开后才可以开流)。

2. 在“打开设备”下,选择要测试的从属设备的序列号。

 

3. External Sync选项下,选择Sub

 

4. 选择Start

 

 备注

由于这是一个从设备,在设备启动后, K4A 风格Femto Bolt Viewer不会显示图像。 在从设备收到主设备发出的同步信号之前不会显示图像。

 

5. 启动从设备后,使用K4A 风格 Femto Bolt Viewer的另一实例打开主设备。

6. External Sync选项下,选择Master

7. 选择Start

 

Femto Bolt 主设备启动后, K4A 风格Femto Bolt Viewer 的两个实例应显示图像。

备注:K4A风格 Femto Bolt Viewer Master 对应的是主机PrimarySub 对应的是从机Secondary

校准同步后的多台设备

验证设备可正确通信后,接下来可对其进行校准,以便在单个域中生成图像。

在单个设备中,深度相机和 RGB 相机已经过出厂校准,可以协同工作。 但是,如果必须一同使用多个设备,则必须对这些设备进行校准,以确定如何将图像从捕获它时所在的相机域转换为用于处理图像的相机域。

可以使用多个选项来交叉校准设备。 这里提供了使用 OpenCV 方法的 GitHub 绿屏代码示例。 此代码示例的自述文件提供了有关校准设备的更多详细信息和说明。

有关校准的详细信息,请参阅校准函数

后续步骤

设置已同步的设备后,还可以了解如何使用K4A 风格 Femto Bolt 录制器