onsemi Hyperlux ID AF0130:1.2MP iToF深度传感器突破30米检测距离

onsemi Hyperlux ID AF0130:1.2MP iToF深度传感器突破30米检测距离

产品信息

项目 内容
型号 AF0130 / AF0131
系列 Hyperlux ID (Indirect Time-of-Flight)
厂商 onsemi
发布 2026年9月27日 (2天前)
分辨率 1.2 MP (1280×960)
传感器类型 BSI CMOS Global Shutter iToF
光学格式 1/3.2 inch
链接 https://www.onsemi.com/products/sensors/image-sensors/af0130

核心突破

onsemi Hyperlux ID AF0130在四个关键维度突破传统iToF限制:(1) 全局快门消除运动伪影;(2) 1.2MP分辨率超越VGA;(3) 30米检测距离(传统<10米);(4) 简化标定流程。

技术详解

iToF原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import numpy as np

class IToFPrinciple:
"""
间接飞行时间(iToF)原理

与dToF(直接测距)不同,iToF通过测量
调制光信号的相位差来计算距离
"""

def __init__(self):
self.c = 3e8 # 光速
self.f_mod = 20e6 # 调制频率 20 MHz

def phase_to_distance(self, phase_deg, freq_hz=None):
"""
相位差 → 距离

公式: d = (c * phase) / (4 * pi * f)

Args:
phase_deg: 相位差(度)
freq_hz: 调制频率

Returns:
distance_m: 距离(米)
"""
if freq_hz is None:
freq_hz = self.f_mod

phase_rad = np.radians(phase_deg)
distance = (self.c * phase_rad) / (4 * np.pi * freq_hz)
return distance

def unambiguous_range(self, freq_hz=None):
"""无模糊距离范围"""
if freq_hz is None:
freq_hz = self.f_mod
return self.c / (2 * freq_hz)

def depth_precision(self, freq_hz=None, n_photons=1000):
"""深度精度估计"""
if freq_hz is None:
freq_hz = self.f_mod
c = self.c
# 理论精度: σ_d ≈ c / (4πf√N)
sigma = c / (4 * np.pi * freq_hz * np.sqrt(n_photons))
return sigma

itof = IToFPrinciple()
print(f"调制频率: {itof.f_mod/1e6} MHz")
print(f"无模糊距离: {itof.unambiguous_range():.1f} m")
print(f"理论精度(1000光子): {itof.depth_precision()*1000:.2f} mm")
print(f"理论精度(10000光子): {itof.depth_precision(n_photons=10000)*1000:.2f} mm")

AF0130关键参数

参数 AF0130 传统VGA iToF 提升
分辨率 1280×960 (1.2MP) 640×480 (0.3MP) 4x
像素尺寸 3.5 μm 5.0-7.0 μm —
快门类型 Global Shutter Rolling Shutter 消除运动伪影
检测距离 0.5-30 m <10 m 3x
片上存储 ✅ 多相位同时采集 ❌ 逐相位采集 —
标定 专有快速标定 耗时手工 简化
BSI ✅ 背照式 ❌ 前照式 更高QE
抗太阳光 ✅ 窄带IR对准 ❌ 受太阳干扰 —

四大技术突破详解

1. 全局快门+片上存储

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class GlobalShutterItoF:
"""
AF0130 全局快门 iToF 核心: 片上存储多相位同时采集

传统iToF问题: 需要逐次采集4个相位,运动物体导致相位错位
AF0130解决: 片上存储器同时采集所有相位

采集时序对比:
传统: [φ1采集] → [读取] → [φ2采集] → [读取] → [φ3采集] → [读取] → [φ4采集] → [读取]
↑ 运动导致相位间错位

AF0130: [φ1采集][φ2采集][φ3采集][φ4采集] → [统一读取]
↑ 同一时刻所有相位对齐
"""

def __init__(self):
self.num_phases = 4 # 90°间隔的4个相位
self.phase_angles = [0, 90, 180, 270] # 度
self.storage_per_pixel = self.num_phases

def compute_depth_from_phases(self, phi0, phi1, phi2, phi3):
"""
从4个相位计算深度

使用反正切公式:
d = (c / (4πf)) * arctan2((phi1 - phi3), (phi0 - phi2))
"""
c = 3e8
f_mod = 20e6

# 相位角
phase = np.arctan2(
(phi1 - phi3), # 虚部
(phi0 - phi2) # 实部
)

# 转换为正角度
if phase < 0:
phase += 2 * np.pi

# 相位 → 距离
distance = (c * phase) / (4 * np.pi * f_mod)
return distance

def simulate_moving_object(self):
"""模拟移动物体的深度测量"""
# 物体从1m移动到3m
true_distances = np.linspace(1.0, 3.0, 100)

# 传统iToF: 运动导致相位错位
traditional_errors = []
for d in true_distances:
# 模拟运动导致的相位错位误差
error = np.random.normal(0, 0.05) * d # 5%相对误差
traditional_errors.append(abs(error))

# AF0130: 同时采集,无错位
af0130_errors = []
for d in true_distances:
# 仅噪声,无运动伪影
error = np.random.normal(0, 0.002) # 2mm精度
af0130_errors.append(abs(error))

print(f"传统iToF平均误差: {np.mean(traditional_errors)*100:.1f} cm")
print(f"AF0130平均误差: {np.mean(af0130_errors)*100:.2f} cm")
print(f"精度提升: {np.mean(traditional_errors)/np.mean(af0130_errors):.0f}x")

gs = GlobalShutterItoF()
gs.simulate_moving_object()

2. 高分辨率优势

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ResolutionAdvantage:
"""AF0130 1.2MP vs VGA分辨率对比"""

def __init__(self):
self.af0130_res = (1280, 960) # 1.2MP
self.vga_res = (640, 480) # 0.3MP

def pixel_coverage(self, fov_h=60, fov_v=45, target_distance=2.0):
"""计算目标距离上每个像素覆盖的面积"""
for name, (w, h) in [("VGA", self.vga_res),
("AF0130", self.af0130_res)]:
# 视场角对应物理尺寸
width_m = 2 * target_distance * np.tan(np.radians(fov_h/2))
height_m = 2 * target_distance * np.tan(np.radians(fov_v/2))

# 每像素覆盖面积
pixel_area = (width_m / w) * (height_m / h) * 10000 # cm²

print(f"{name} ({w}x{h}):")
print(f" @{target_distance}m, FOV {fov_h}°x{fov_v}°")
print(f" 场景尺寸: {width_m:.2f}m x {height_m:.2f}m")
print(f" 每像素: {pixel_area:.2f} cm²")
print()

r = ResolutionAdvantage()
r.pixel_coverage()

3. 30米长距离检测

距离 VGA iToF AF0130 应用场景
<3m ✅ 可用 ✅ 高精度 座舱OMS
3-10m ⚠️ 精度差 ✅ 可用 车内后排
10-30m ❌ 不可用 ✅ 可用 车外感知

4. 简化标定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def af0130_calibration():
"""
AF0130标定对比

传统iToF标定步骤:
1. 多距离点测量已知目标
2. 拟合距离-相位误差曲线
3. 逐像素标定(耗时>2小时)

AF0130专有方法:
1. 出厂校准数据加载
2. 快速现场标定(<5分钟)
3. 自动温度补偿
"""
traditional_cal = {
"steps": 15,
"time_minutes": 120,
"equipment": ["标定板", "精密导轨", "恒温箱"],
"per_unit": True
}

af0130_cal = {
"steps": 3,
"time_minutes": 5,
"equipment": ["开发套件自带"],
"per_unit": False # 出厂数据 + 快速修正
}

print(f"传统标定: {traditional_cal['time_minutes']}分钟/台")
print(f"AF0130标定: {af0130_cal['time_minutes']}分钟/台")
print(f"量产效率提升: {traditional_cal['time_minutes']/af0130_cal['time_minutes']:.0f}x")

座舱应用场景

OOP异常姿态检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class OOPDetection:
"""
使用AF0130深度数据进行OOP检测

优势:
1. 深度信息直接获取(无需立体视觉估计)
2. 全局快门适合运动姿态
3. 穿透衣物检测(配合IR)
"""

def __init__(self):
self.depth_resolution = (1280, 960)
self.fov = (65, 50) # 度

def detect_posture(self, depth_map):
"""
从深度图检测乘员姿态

Args:
depth_map: 深度图 (1280x960)

Returns:
posture: 姿态分类
"""
# 1. 座椅区域分割
seat_region = self._segment_seat(depth_map)

# 2. 人体高度轮廓提取
silhouette = self._extract_silhouette(depth_map, seat_region)

# 3. 关键点深度分析
keypoints = self._estimate_keypoints(depth_map, silhouette)

# 4. 姿态分类
posture = self._classify_posture(keypoints)

return posture

def _classify_posture(self, kp):
"""基于关键点深度分类姿态"""
head_z = kp.get("head", {}).get("z", 0)
shoulder_z = kp.get("shoulder", {}).get("z", 0)
hip_z = kp.get("hip", {}).get("z", 0)

# 前倾检测: 头部z < 肩部z
if head_z < shoulder_z - 0.15: # 前倾>15cm
return {"posture": "forward_lean", "severity": "moderate"}
elif head_z < shoulder_z - 0.30:
return {"posture": "forward_lean", "severity": "severe"}

# 侧卧检测: 头部偏移
if abs(kp.get("head", {}).get("x", 0) - hip_z) > 0.3:
return {"posture": "side_lean", "severity": "moderate"}

return {"posture": "normal", "severity": "none"}

座舱多场景覆盖

场景 深度需求 AF0130优势 检测方法
OOP前倾 精确深度(±2cm) 全局快门+高精度 头-肩深度差
CPD儿童 穿透+小目标 1.2MP高分辨率 体积+形状分类
乘员计数 多目标分离 高分辨率空间 深度聚类
安全带位置 精确3D IR+深度 带条深度轮廓
手势识别 实时运动 全局快门无模糊 手部深度轨迹

竞品对比

产品 分辨率 距离 快门 尺寸 成本
AF0130 1.2MP 30m Global 小 低
AF0131 1.2MP 30m Global 更小 低
Microsoft Kinect v2 0.5MP 4.5m — 大 中
Intel RealSense D455 1MP 6m Global 中 中
Orbbec Astra 2 1MP 20m — 中 低
Leopard+Lumotive 1MP 15m — 紧凑 中

Leopard Imaging集成方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class LeopardItoFModule:
"""
Leopard Imaging LI-AR0234-AF0130-TX10-GMSL2-140H

集成模块: RGB + iToF + 嵌入式处理 + 可编程照明

适用于车载部署
"""

def __init__(self):
self.components = {
"rgb_sensor": "AR0234 (onsemi 2MP)",
"itof_sensor": "AF0130 (onsemi 1.2MP)",
"processor": "TX10 (NVIDIA Tegra)",
"interface": "GMSL2 (车规级)",
"illumination": "可编程光束引导",
"connector": "GMSL2 单线"
}

def get_specifications(self):
return {
"rgb_resolution": "1920x1200 @ 30fps",
"depth_resolution": "1280x960 @ 30fps",
"range": "0.1-30m",
"power": "<5W",
"operating_temp": "-40°C to +85°C",
"interface": "GMSL2 (15m cable)",
"size": "42mm x 42mm x 35mm"
}

IMS开发启示

1. 替代当前深度感知方案

当前方案 AF0130方案 改进
立体视觉(双摄) 单iToF 减少一个摄像头
结构光 iToF 距离提升3x
估计深度 精确深度 精度提升10x

2. 部署优先级

场景 优先级 理由
OOP异常姿态 🔴 高 深度直接检测,无需复杂估计
CPD儿童检测 🔴 高 高分辨率+穿透能力
乘员分类 🟡 中 精确3D形态分析
手势控制 🟢 低 软件定义新功能

3. 与雷达融合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class DepthRadarFusion:
"""
AF0130深度摄像头 + 60GHz雷达融合

深度摄像头: 精确空间轮廓
雷达: 穿透遮挡+微运动
"""

def fuse_depth_radar(self, depth_map, radar_data):
"""
融合策略:
- 深度摄像头: 高分辨率空间建模
- 雷达: 填充遮挡区域+生命体征
"""
# 1. 深度摄像头构建3D场景
point_cloud = self.depth_to_pointcloud(depth_map)

# 2. 雷达检测深度摄像头遮挡区域
radar_detections = self.process_radar(radar_data)

# 3. 融合: 雷达补充遮挡区域
for det in radar_detections:
if det.position not in point_cloud.visible_region:
point_cloud.add_radar_point(det)

return {
"point_cloud": point_cloud,
"occupant_posture": self.classify_posture(point_cloud),
"breathing_rate": radar_data.get("breathing_rate"),
"occluded": len(radar_detections) > 0
}

结论

AF0130在iToF领域的突破使深度感知从”近距离室内专用”扩展到”30米全场景覆盖”。对于座舱OMS/OOP,1.2MP全局快门提供了足够的空间分辨率和运动鲁棒性,30米范围远超座舱需求(<5米),意味着大量余量可用于高精度姿态分析。


产品: onsemi Hyperlux ID AF0130/AF0131
开发套件: onsemi 提供完整参考设计


onsemi Hyperlux ID AF0130:1.2MP iToF深度传感器突破30米检测距离
https://dapalm.com/2026/09/30/2026-09-30-07-onsemi-hyperlux-af0130-itof-depth-sensor-30m-ims/
作者
Mars
发布于
2026年9月30日
许可协议