YFORE ODMS+UWB 雷达:Tier-1 供应商的座舱全覆盖感知方案——智能后视镜+雷达融合

来源:YFORE Technology,2026年9月,北美乔治亚工厂开业发布
核心产品:ODMS(Occupant & Driver Monitoring System)+ UWB 雷达感知组合
关键指标:CPD 生命检测率 >99%,Euro NCAP 响应时间 <13s,UWB 窗户泄漏 <20cm
IMS 相关性:⭐⭐⭐⭐⭐(可直接参考的 Tier-1 量产方案)


发布信息

项目 内容
公司 YFORE Technology(全球 Tier-1 汽车电子供应商)
事件 北美乔治亚工厂开业 + 产品发布
日期 2026年9月
合作 OEM 30+ 家全球汽车制造商
产品线 智能后视镜 + 座舱雷达 + UWB 感知
链接 https://aijourn.com/yfore-debuts-odms-in-cabin-sensing-system-to-enhance-cockpit-safety/

核心架构:智能后视镜 + 座舱雷达

YFORE 的核心设计理念

传统视觉-only DMS 方案的三大痛点:

  1. 座椅遮挡:后排乘客被前排座椅靠背遮挡
  2. 脚部盲区:脚窝区域摄像头看不到
  3. 覆盖乘员:毛毯/衣物遮挡无法检测

YFORE 的解决方案:将摄像头嵌入后视镜 + 座舱雷达穿透遮挡

ODMS 七大核心功能

功能 检测方式 ENCAP 2026 对应 关键指标
驾驶员疲劳 后视镜摄像头 DSM 疲劳 PERCLOS 监测
驾驶员分心 后视镜摄像头 DSM 分心 视线偏离检测
无响应驾驶员 后视镜摄像头 DSM 无响应 疲劳+分心联合判定
手机使用 后视镜摄像头 DSM 手机 手持检测
安全带状态 后视镜摄像头 安全带误用 视觉检测
乘员分类 雷达+视觉 OMS 乘员 体重/体型估计
全舱生命检测 UWB 雷达 CPD 微呼吸 >99% 检测率

UWB 雷达感知系统

三大 UWB 应用场景

1. 座舱内 CPD + 乘员检测

指标 YFORE UWB Euro NCAP 要求 评估
生命检测率 >99% — ✅ 超标
响应时间 <13s <13s ✅ 达标
窗户泄漏 <20cm — ✅ 不误触车外
穿透能力 毛毯/衣物/座椅靠背 需要 ✅ RF 穿透
乘员计数 多目标 3D 坐标 eCall 需要 ✅ 精确定位
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
"""
YFORE UWB CPD 系统仿真

UWB (Ultra-Wideband) 雷达特点:
- 工作频率: 6-8 GHz (UWB 频段)
- 脉冲宽度: 纳秒级
- 穿透能力: 毛毯、衣物、塑料座椅
- 分辨率: ~1cm
- 功耗: <100mW

对比 60GHz FMCW:
- 60GHz 分辨率更高 (~5mm) 但穿透差
- UWB 穿透更好但分辨率稍低
- 两者互补,UWB 更适合 CPD 全舱覆盖
"""

import numpy as np
from dataclasses import dataclass
from typing import List, Tuple

@dataclass
class RadarDetection:
"""单次雷达检测结果"""
distance_m: float # 距离 (米)
angle_deg: float # 角度 (度)
velocity_mps: float # 速度 (米/秒)
rcs_db: float # 雷达截面积 (dB)
confidence: float # 置信度 (0-1)

class UWBCPDSimulator:
"""
UWB CPD 系统仿真器

模拟 YFORE UWB 雷达的座舱检测场景
"""

def __init__(self):
self.detection_threshold = 0.5
self.breathing_freq_range = (0.15, 0.5) # Hz, 成人12-30次/分
self.child_breathing_range = (0.3, 0.8) # Hz, 儿童更快

def detect_presence(self, radar_data: np.ndarray) -> dict:
"""
检测乘员存在和状态

Args:
radar_data: (N, 4) [distance, angle, velocity, rcs]

Returns:
dict: 检测结果
"""
results = {
'occupants': [],
'total_count': 0,
'cpd_alert': False,
'breathing_detected': False,
}

# 过滤有效检测点
valid = radar_data[radar_data[:, 3] > -30] # RCS > -30dB
valid = valid[valid[:, 0] < 3.0] # 距离 < 3m (座舱范围)

if len(valid) == 0:
results['total_count'] = 0
return results

# 聚类检测点 (简化版)
# 按距离分段
distances = valid[:, 0]
clusters = self._cluster_by_distance(distances, threshold=0.3)

for cluster_idx, cluster_points in enumerate(clusters):
if len(cluster_points) < 3:
continue

points = valid[cluster_points]

# 计算位置
avg_dist = np.mean(points[:, 0])
avg_angle = np.mean(points[:, 1])
avg_velocity = np.mean(points[:, 2])
avg_rcs = np.mean(points[:, 3])

# 判断是否有呼吸运动
velocity_variance = np.var(points[:, 2])
breathing = abs(avg_velocity) < 0.05 and velocity_variance > 0.001

# 估计体型
if avg_rcs > -10:
body_type = 'adult'
elif avg_rcs > -20:
body_type = 'child'
else:
body_type = 'infant/small_object'

occupant = {
'position': (avg_dist, avg_angle),
'body_type': body_type,
'rcs': avg_rcs,
'breathing': breathing,
'velocity': avg_velocity,
}

results['occupants'].append(occupant)
results['total_count'] += 1

if breathing and body_type in ['child', 'infant/small_object']:
results['cpd_alert'] = True
results['breathing_detected'] = True

return results

def _cluster_by_distance(self, distances: np.ndarray,
threshold: float = 0.3) -> list:
"""按距离聚类"""
clusters = []
if len(distances) == 0:
return clusters

sorted_idx = np.argsort(distances)
current_cluster = [sorted_idx[0]]

for i in range(1, len(sorted_idx)):
if distances[sorted_idx[i]] - distances[sorted_idx[i-1]] < threshold:
current_cluster.append(sorted_idx[i])
else:
clusters.append(current_cluster)
current_cluster = [sorted_idx[i]]

clusters.append(current_cluster)
return clusters


# ==================== 测试 ====================
if __name__ == "__main__":
np.random.seed(42)
simulator = UWBCPDSimulator()

# 场景1: 后排有儿童(被毛毯遮挡)
print("=" * 60)
print("场景1: 后排儿童(被毛毯遮挡,仅雷达可检测)")
print("=" * 60)

# 模拟 UWB 雷达数据:后排 1.5m 处有微呼吸的儿童
n_points = 50
child_radar = np.column_stack([
np.random.normal(1.5, 0.1, n_points), # 距离
np.random.normal(120, 10, n_points), # 角度(后排)
np.random.normal(0.02, 0.01, n_points), # 极低速度(呼吸)
np.random.normal(-15, 3, n_points), # RCS(较小体型)
])

result = simulator.detect_presence(child_radar)
print(f"检测乘员数: {result['total_count']}")
print(f"CPD 告警: {result['cpd_alert']}")
print(f"呼吸检测: {result['breathing_detected']}")

for i, occ in enumerate(result['occupants']):
print(f" 乘员{i+1}: {occ['body_type']}, "
f"位置=({occ['position'][0]:.1f}m, {occ['position'][1]:.0f}°), "
f"RCS={occ['rcs']:.1f}dB, 呼吸={occ['breathing']}")

# 场景2: 空座舱
print("\n" + "=" * 60)
print("场景2: 空座舱")
print("=" * 60)

empty_radar = np.array([]).reshape(0, 4)
result_empty = simulator.detect_presence(empty_radar)
print(f"检测乘员数: {result_empty['total_count']}")
print(f"CPD 告警: {result_empty['cpd_alert']}")

# 场景3: 成人驾驶员
print("\n" + "=" * 60)
print("场景3: 成人驾驶员正常驾驶")
print("=" * 60)

adult_radar = np.column_stack([
np.random.normal(0.5, 0.05, 30),
np.random.normal(0, 5, 30),
np.random.normal(0.1, 0.05, 30), # 有运动
np.random.normal(-5, 2, 30), # 较大 RCS
])

result_adult = simulator.detect_presence(adult_radar)
print(f"检测乘员数: {result_adult['total_count']}")
print(f"CPD 告警: {result_adult['cpd_alert']}")

for i, occ in enumerate(result_adult['occupants']):
print(f" 乘员{i+1}: {occ['body_type']}, 呼吸={occ['breathing']}")

print("\n" + "=" * 60)
print("YFORE UWB CPD 关键参数")
print("=" * 60)
print("生命检测率: >99%")
print("Euro NCAP 响应时间: <13s ✅")
print("窗户信号泄漏: <20cm ✅")
print("穿透能力: 毛毯/衣物/座椅靠背 ✅")

2. UWB 车辆访问

功能 性能 说明
踢脚感应开后备箱 >98% 激活率 手脚感应
误触发率 极低 无需物理按钮

3. UWB 泊车辅助

功能 性能 对比传统超声波
车位识别 平行/垂直/斜角 ✅ 等效
低矮障碍物 可检测 ✅ 优于超声波
地面杂波过滤 有效 ✅ 无需开孔
安装方式 保险杠后隐藏 ✅ 无需传感器开孔

ODMS vs 传统 DMS 架构对比

维度 传统 DMS YFORE ODMS 优势
摄像头位置 仪表台/方向盘柱 后视镜内嵌 不占面板空间
后排覆盖 ❌ 盲区 ✅ 雷达穿透 消除盲区
脚部覆盖 ❌ 盲区 ✅ 雷达 3D 全空间覆盖
遮挡处理 ❌ 失效 ✅ RF 穿透 毛毯/衣物
线束复杂度 多根线缆 后视镜集成 简化布线
车顶开孔 需要 不需要 保持内饰美观
跨车型适配 需重新设计 后视镜通用 降低开发成本

与竞品对比

供应商 方案 摄像头 雷达 CPD 量产状态 ENCAP 2026 覆盖
YFORE ODMS+UWB 后视镜内嵌 UWB+60GHz ✅ >99% 量产中 7/7 功能
Smarteye AIS 独立摄像头 无 ❌ 量产 5/7 功能
Bosch DMS+雷达 仪表台 60GHz ✅ 量产 6/7 功能
Continental DMS 仪表台 无 ❌ 量产 4/7 功能
Vayyar 雷达-only 无 60GHz+UWB ✅ 量产 CPD 为主

ENCAP 2026 覆盖度分析

ENCAP 2026 要求 YFORE ODMS 覆盖 技术路线 量产就绪
疲劳检测 ✅ 后视镜摄像头 PERCLOS + EAR ✅
分心检测 ✅ 后视镜摄像头 视线+头部姿态 ✅
手机使用 ✅ 后视镜摄像头 手持检测 ✅
无响应驾驶员 ✅ 融合判定 疲劳+分心+运动 ✅
安全带误用 ✅ 视觉检测 视觉 ✅
乘员分类 ✅ 雷达+视觉 RCS+视觉体型 ✅
CPD 儿童检测 ✅ UWB 雷达 微呼吸 >99% ✅

YFORE ODMS 是目前公开的最完整的 ENCAP 2026 量产方案之一。


IMS 开发启示

启示 建议行动 优先级
后视镜集成是最佳摄像头位置 评估 IMS 后视镜集成方案 🔴 高
UWB 比 60GHz 更适合 CPD 对比 UWB vs 60GHz 雷达穿透和分辨率 🔴 高
雷达+视觉融合消除盲区 OMS 必须有雷达,不能纯视觉 🔴 高
UWB 可复用做车辆访问 一颗 UWB 芯片多功能降低成本 🟡 中
<13s 响应时间是 ENCAP 硬指标 CPD 算法必须优化到 <10s 🔴 高
后视镜方案跨车型适配 可降低多车型开发成本 🟡 中

硬件参考设计

组件 YFORE 方案 IMS 参考 预估成本
智能后视镜 摄像头+处理器集成 自研或采购 ¥200-500
UWB 雷达模块 车顶/后视镜内 NXP UWB 芯片 ¥50-100
60GHz 雷达 补充 UWB TI IWR6843 ¥80-150
处理器 共享或独立 QCS8255 已有
总传感器成本 — — ¥330-750/车

Geely E2 案例

Geely E2 在 2026 年 9 月获得 Euro NCAP 五星评级,其中 CPD 是标配:

项目 Geely E2 ENCAP 要求
CPD 系统 标配直接检测 2026 要求
安全评级 五星 —
碰撞保护 91% —
物理控制 80%(优于触屏) —

关键启示:中国 OEM 已经在量产车上标配 CPD,说明供应链已成熟。


总结

YFORE ODMS 方案的核心价值在于工程实用性:

  1. 后视镜集成:不改变车内布局,不增加开孔
  2. UWB 穿透:解决视觉盲区的根本性问题
  3. 七大功能全覆盖:一个系统满足 ENCAP 2026 全部要求
  4. 30+ OEM 合作:已具备量产验证

对 IMS 团队的建议:

  • 短期:评估后视镜集成摄像头的可行性和成本
  • 中期:UWB 雷达选型和 CPD 算法开发
  • 长期:参考 YFORE 的多场景复用策略(CPD+访问+泊车),降低单功能成本

来源:YFORE Technology 官方发布
链接:https://aijourn.com/yfore-debuts-odms-in-cabin-sensing-system-to-enhance-cockpit-safety/
UWB 链接:https://www.prnewswire.com/news-releases/yfore-unveils-multi-scenario-uwb-radar-sensing-for-next-gen-vehicles-302864523.html