与Azure Kinect DK的比较
本文详细说明ORBBEC® Femto
Bolt 与Microsoft Azure Kinect DK 的规格及部分设计细节的对比,供开发者了解和使用相关产品。
Femto Bolt 是奥比中光与微软联合打造的一款先进iToF 3D相机,作为微软官方推荐的Azure
Kinect DK替代选择,Femto Bolt 深度相机采用了微软最新的先进ToF传感技术,拥有与微软Azure Kinect DK深度相机完全一致的工作模式和性能表现。相机整合了包括多模式深度相机、彩色视频相机和惯性传感器在内的多种感知方式,通过单条USB Type-C连接,即可同时实现数据传输和对相机供电。
Femto Bolt采用紧凑型外观设计,机身深度尺寸仅为Azure Kinect DK的1/2,更便于相机完成商业集成;配合Orbbec SDK,开发者能够充分体验和使用Femto Bolt 3D相机所提供的强大功能,轻松开发各种应用。面向寻求Azure Kinect DK替代产品的用户,我们在Orbbec SDK的基础上封装了Orbbec SDK K4A Wrapper,提供与Azure Kinect Sensor SDK相同的API和使用方式,帮助Azure Kinect DK用户将已有应用快速适配到Femto Bolt 3D相机。它可在Femto Bolt 购买链接中购买。
关键特性 |
Femto Bolt |
Azure
Kinect DK |
Depth image to Color |
精度优化至:max<4 pixel;mean<2 pixel |
max<15.05 pixel;mean<7.8 pixel |
RGB FOV |
略缩小至H80° V51° |
H90° V59° |
RGB动态范围 |
提升至81.1DB |
45.6DB |
深度 |
效果一致 |
|
SDK |
API兼容 |
|
结构尺寸 |
深度方向尺寸缩小至64.9mm |
深度方向尺寸:125.4mm |
数据接口 |
USB-C带固定锁孔 |
USB-C |
麦克风阵列 |
不支持 |
支持 |
关键参数/功能对比速览 |
Femto Bolt |
Azure
Kinect DK |
工作距离 |
WFoV unbinned:0.25 - 2.21m WFoV binned:0.25 - 2.88m NFoV unbinned:0.5 - 3.86m NFoV binned:0.5 - 5.46m |
|
深度 FOV |
NFoV:H75 ° V65 ° WFoV:H120° V120° |
|
深度分辨率@帧率 |
WFoV unbinned:1024 × 1024@5/15fps WFoV binned:512 × 512@5/15/25/30fps NFoV unbinned:640 × 576@5/15/25/30fps NFoV binned:320 × 288@5/15/25/30fps |
|
深度相对精度 |
0.15%@1m |
|
RGB 分辨率 |
3840 x 2160@30fps |
|
RGB FOV |
H80° V51° |
H90° V59° |
RGB HDR |
支持 |
不支持 |
最大功耗 |
< 8.8W |
< 5.9W |
SDK |
Orbbec SDK Orbbec SDK K4A Wrapper |
Azure Kinect Sensor SDK |
IMU |
支持 |
|
相机集成深度算力 |
不支持 |
|
麦克风阵列 |
不支持 |
支持 |
若要详细了解Femto Bolt硬件规格,请参阅《硬件规格》。
Femto Bolt集成了 Microsoft 设计的
1 兆像素时差测距 (ToF) 深度相机(与Azure Kinect Developer Kit相同的深度相机),并提供相同的操作模式和性能。深度相机支持如下所述的模式:
模式 |
解决方法 |
FoI |
FPS |
工作范围* |
曝光时间 |
NFOV unbinned |
640x576 |
75°x65° |
5、15、25、30 |
0.5 - 3.86 m |
12.8 ms |
NFOV 2x2 binned (SW) |
320x288 |
75°x65° |
5、15、25、30 |
0.5 - 5.46 m |
12.8 msA |
WFOV 2x2 binned |
512x512 |
120°x120° |
5、15、25、30 |
0.25 - 2.88 m |
12.8 msA |
WFOV unbinned |
1024x1024 |
120°x120° |
5、15 |
0.25 - 2.21 m |
20.3 ms |
Passive IR |
1024x1024 |
N/A |
5、15、25、30 |
N/A |
1.6 ms |
* 850nm 时 15% 到 95% 的反射率,2.2 μW/cm2/nm,随机误差标准偏差 ≤ 17 mm,典型系统误差 < 11 mm + 0.1% 的距离(无多路径干扰)。 可以在上面指示的操作范围之外提供深度。 这取决于对象的反射率。
深度计算 |
Femto Bolt |
Azure Kinect Developer Kit |
处理原始数据的位置 |
外部,主机电脑 |
实际效果图对比展示:
深度相机操作模式 |
Femto Bolt |
Azure Kinect Developer Kit |
NFOV unbinned |
|
|
WFOV unbinned |
|
|
为帮助用户快速上手Femto Bolt,并实现对Azure Kinect DK的无缝替换,我们在Orbbec SDK的基础上封装了面向Azure Kinect DK用户的Orbbec SDK K4A Wrapper,最大程度上保持了与Azure Kinect
Sensor SDK API的一致性。因此基于Azure Kinect DK开发的应用程序可以方便快捷的切换至使用Femto Bolt。详细操作说明请参阅《将Femto Bolt接入AKDK应用软件》。
Femto Bolt RGB相机提供与Azure Kinect DK一致的分辨率(3840 x 2160@30fps),但FOV相比略小些。同时Femto
Bolt RGB相机具有高动态功能,能够提供更高画质的RGB图像和视频。
RGB相机关键参数对比 |
Femto Bolt |
Azure Kinect Developer Kit |
RGB FOV |
H80° V51° |
H90° V59° |
RGB HDR |
支持 |
不支持 |
彩色相机并排色框对比
Femto Bolt |
Azure Kinect Developer Kit |
|
|
下表显示了相机在正面 2000 mm 距离的深度和 RGB 相机视场(传感器“看到”的视角)对比。
Femto Bolt |
Azure Kinect Developer Kit |
|
|
实际效果图对比展示:
Femto Bolt |
Azure Kinect Developer Kit |
|
|
彩色相机具体规格对比详见下表:
彩色相机特性 |
Femto Bolt |
Azure Kinect Developer Kit |
|||||
Pixel pitch |
1.45 um |
1.25 um |
|||||
Sensor Size |
5.568x3.840mm |
5.120x3.132 mm |
|||||
F number |
2.7 |
2.2 |
|||||
Aspect Ratio |
16:9 |
4:3 |
|||||
RGB 相机分辨率 (HxV) 纵横比 |
帧速率
(FPS) |
格式选项 |
额定
FOV (HxV)(处理后) |
帧速率
(FPS) |
格式选项 |
额定
FOV (HxV)(处理后) |
|
3840x2160 |
16:9 |
0、5、15、25、30 MJPEG |
80°x51° |
0、5、15、30 MJPEG |
90°x59° |
||
2560x1440 |
16:9 |
0、5、15、25、30 MJPEG |
80°x51° |
0、5、15、30 MJPEG |
90°x59° |
||
1920x1080 |
16:9 |
0、5、15、25、30 MJPEG |
80°x51° |
0、5、15、30 MJPEG |
90°x59° |
||
1280x720 |
16:9 |
0、5、15、25、30 MJPEG/YUY2/NV12 |
80°x51° |
0、5、15、30 MJPEG/YUY2/NV12 |
90°x59° |
||
4096x3072 |
4:3 |
N/A |
0、5、15 MJPEG |
90°x74.3° |
|||
2048x1536 |
4:3 |
N/A |
0、5、15、30 MJPEG |
90°x74.3° |
|||
1280x960 |
4:3 |
0、5、15、25、30 MJPEG |
65°x51° |
N/A |
对比Azure Kinect DK,我们提升了Femto Bolt相关的D2C精度效果。如前后景边界对齐效果图对比:
Femto Bolt |
Azure Kinect Developer Kit |
|
|
|
|
Orbbec SDK K4A Wrapper 接口差异
序号 |
功能点 |
Orbbec SDK K4A Wrapper |
Azure Kinect Sensor
SDK |
差异点对应用程序影响点 |
1 |
录像 |
typedef struct _k4a_record_configuration_t {
/** * The timestamp
offset of the start of the recording. All recorded timestamps are offset by
this value such that * the recording
starts at timestamp 0. This value can be used to synchronize timestamps
between 2 recording files. */ uint64_t
start_timestamp_offset_usec; } k4a_record_configuration_t; |
typedef struct _k4a_record_configuration_t {
/** * The timestamp
offset of the start of the recording. All recorded timestamps are offset by
this value such that * the recording
starts at timestamp 0. This value can be used to synchronize timestamps
between 2 recording files. */ uint32_t
start_timestamp_offset_usec; } k4a_record_configuration_t; |
需要替换更新Orbbec SDK K4a Wrapper的头文件重新编译 |
2 |
深度引擎库 |
Orbbec Femto Bolt深度引擎与Azure Kinect DK不通用,因此Orbbec Femto Bolt相机需要使用Orbbec打包提供的专用深度引擎库 |
多个版本 |
替换Femto Bolt定制的深度引擎库 |
3 |
IMU 采样率 |
默认 500Hz,相机支持50Hz、100Hz、200Hz、500Hz、1KHz、2KH。 |
1.6KHZ |
无影响,用户可以使用更多的采样率。 |
Orbbec SDK K4A Wrapper 未实现的接口(返回空值或返回异常状态)
序号 |
Azure Kinect
Sensor SDK |
接口涵义 |
差异点影响 |
1 |
k4a_result_t
k4a_set_allocator(k4a_memory_allocate_c b_t allocate, k4a_memory_destroy_cb_t free) |
传入外部用户自定义内存管理器供 SDK 内部申请需要的内存 |
用户无法使用其自定义内存管理器供 SDK 内部使用。 SDK 自身功能运行基本不受影响 |
2 |
void k4a_capture_set_temperature_c(k4a_capture_t
ca pture_handle, float temperature_c) |
设置 capture 的温度信息 |
用户无法修改该值,对用户保存自定义数值有影响 |
3 |
float k4a_capture_get_temperature_c(k4a_capture_t
ca pture_handle) |
获取capture 的温度信息 |
用户无法获取到该值,对用户依赖该值的算法或应用运行有影响。 |
4 |
void k4a_image_set_exposure_usec(k4a_image_t imag e_handle, uint64_t exposure_usec) |
设置图像的曝光值 |
用户无法修改该值,对用户保存自定义数值有影响 |
5 |
void k4a_image_set_white_balance(k4a_image_t image _handle, uint32_t white_balance) |
设置图像的白平衡值 |
|
6 |
void k4a_image_set_iso_speed(k4a_image_t image_ha ndle, uint32_t iso_speed) |
设置图像快门速度 |
|
7 |
uint64_t k4a_image_get_exposure_usec(k4a_image_t i mage_handle) |
获取图像曝光值 |
用户无法获取到该值,对用户依赖该值的算法或应用运行有影响。 |
8 |
uint32_t k4a_image_get_white_balance(k4a_image_t i mage_handle) |
获取图像白平衡值 |
|
9 |
uint32_t k4a_image_get_iso_speed(k4a_image_t image _handle) |
读取图像快门速度 |
|
10 |
k4a_result_t k4a_device_get_sync_jack(k4a_device_t
de vice_handle,
bool *sync_in_jack_connected,
bool *sync_out_jack_connected ) |
获取设备的同步线的连接状态 |
用户应用无法依赖该接口判断多机同步线链接状态 |
Femto Bolt提供了更为实用的紧凑型产品设计 -
机身深度尺寸约为Azure Kinect DK的1/2。
因此Femto Bolt两侧M2.5 x 4mm的固定螺孔间距较Azure Kinect DK窄。
同时,我们为Femto Bolt的USB-C连接提供了固定锁孔以增强机械稳定性,提供更为稳定的数据传输。
数据接口布局差异如对比表所示:
Femto Bolt结构尺寸详见:《硬件规格》
Femto Bolt相对Azure Kinect DK的一个关键优化点是更为全面和易用的多机同步功能。不同于Azure Kinect DK的音频线连接方案,Femto Bolt使用了更为通用和支持更多功能扩展的8-pin GPIO接口,以及对应的连接器材。
电气集成 |
Femto Bolt |
Azure Kinect Developer Kit |
多机同步接口 |
8-pin接口 |
Sync-out 、Sync-in |
使用Orbbec SDK K4A Wrapper时,Femto Bolt 多机同步功能及使用流程与Azure Kinect
Developer Kit基本一致,但是:
1. Femto Bolt 不支持同步线状态检测;
2. Femto Bolt多机同步方案是异步授时,Azure Kinect Developer
Kit为同步清零,这可能导致当前Femto Bolt 多机连到不同主机上,通过Orbbec SDK K4A Wrapper使用时,时间戳无法同步。
SDK及应用层差异详细说明:
模块 |
功能 |
Femto Bolt + Orbbec SDK K4A Wrapper |
Femto Bolt + Orbbec SDK |
Azure Kinect Developer Kit |
多机时间戳同步 |
时间戳同步清零 |
不支持 |
可通过接口自由配置和触发 |
主模式和从模式下开流后第一帧清零 |
异步授时(PC授时给各设备) |
打开设备时默认开启授时 |
可通过接口自由执行授时 |
不支持 |
|
同步线 |
连接状态检测 |
不支持 |
不支持 |
sync in jack 和 sync out jack 连接检测 |
同步图像采集 |
单机内同步模式 |
Standalone 模式,深度和RGB同步 |
Standalone 模式,深度和RGB同步; Free Run 模式,深度和RGB自由配置(不同步,可配置不同帧率) |
Standalone 模式,深度和RGB同步 |
多机间同步模式 |
Master + Subordinate |
Primary + Secondary |
Master + Subordinate |
|
主从延时配置 |
支持配置从机相对主机延时(通过depthDelay实现) |
支持 depthDelay、colorDelay、triggerOutDelay |
支持配置从机相对主机延时 |
|
深度与RGB延时配置 |
支持配置深度相对RGB延时(通过depthDelay和ColorDelay实现) |
支持 depthDelay、colorDelay |
支持配置深度相对RGB延时 |
|
主从开流顺序 |
推荐先开从机,可先开主机 |
推荐先开从机,可先开主机 |
需要先开从机 |
相关说明可详见:《同步多台设备》
电气集成 |
Femto Bolt |
Azure Kinect Developer Kit |
DC |
DC 12V/2A DC插头规格: 内径 = 2.1mm;外径 = 5.5mm;针径 = 0.6mm |
DC 5.2V/2.5A DC插头规格: 内径 = 3.0mm;外径 = 4.5mm;针径 = 0.6mm |
多机同步接口 |
8-pin接口 |
Sync-out 、Sync-in |
平均功耗(最大模式实测数据参考) |
3.5W |
3.9W |
最大功耗 |
最大功耗 < 8.8W |
最大功耗 < 5.9W |
其他关键参数 |
Femto Bolt |
Azure Kinect Developer Kit |
|
IMU |
采集频率 |
默认500Hz,支持50Hz、100Hz、200Hz、500Hz、1KHz、2KH |
1.6 kHz |
麦克风阵列 |
采集数据 |
不支持 |
支持 |