NOVELIC × Smart Eye:60GHz雷达+视觉融合的座舱感知方案(InCabin 2026 深度解析)

NOVELIC × Smart Eye:60GHz雷达+视觉融合的座舱感知方案

1. 合作概述

1.1 基本信息

项目 内容
合作双方 NOVELIC(塞尔维亚贝尔格莱德)× Smart Eye(瑞典)
宣布时间 2026年9月21日
展示场所 InCabin Europe 2026,巴塞罗那,9月22-24日,Smart Eye 展位 #305
技术路线 60GHz mmWave 雷达 + AI视觉融合,边缘处理
量产状态 NOVELIC ACAM 第一代已量产
母公司 NOVELIC 隶属 Sona Comstar Group(SONB.NS,印度)

1.2 合作目标

“The partnership aims to provide an all-around solution for the most important driver impairment and occupant monitoring features, relying on edge processing to provide a privacy-friendly, cost-effective and power-efficient solution for OEMs aiming for the highest NCAP safety standards.”

核心目标:用雷达+视觉融合方案满足 Euro NCAP 对驾驶员和乘员监控的全部要求,同时通过边缘处理实现隐私保护、低成本、低功耗。

1.3 合作背景

Smart Eye 是全球 DMS 领域的领导者,已为 24家OEM、380款车型提供视觉感知方案。NOVELIC 在 mmWave 雷达领域深耕近十年,ACAM 模块是市场上最紧凑、最节能的60GHz座舱雷达模块。

合作逻辑清晰:Smart Eye 有视觉算法和OEM关系,NOVELIC 有雷达硬件和信号处理能力,两者融合是1+1>2的互补关系。


2. NOVELIC ACAM 60GHz 雷达技术细节

2.1 ACAM 模块核心参数

参数 ACAM 规格
工作频率 60GHz
技术 FMCW mmWave radar
模块尺寸 市场最小(具体尺寸未公开,估计 < 30×30mm)
功耗 市场最低功耗级别
接口 单路 CAN-Bus(无需外部硬件、LVDS接口或额外算力)
处理方式 边缘处理(全部算法在模块内运行)
量产状态 第一代已量产

2.2 ACAM 功能矩阵

功能 描述 Euro NCAP 对应
儿童遗留检测 (CPD) 不受儿童座椅、毛毯等遮挡影响 ✅ CPD 核心要求
座椅占用检测 检测座位是否有人 ✅ 乘员分类
入侵/接近警报 检测车内/车附近入侵者 ⚠️ 舒适性功能
生命体征监测 通过微动检测呼吸/心跳 ⚠️ 进阶功能

2.3 60GHz 雷达 CPD 检测原理

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
199
200
201
202
203
204
205
206
207
208
"""
60GHz FMCW 雷达 CPD 检测算法框架
基于 NOVELIC ACAM 模块的信号处理流程
"""

import numpy as np
from scipy.signal import find_peaks
from dataclasses import dataclass
from typing import Optional, List

@dataclass
class RadarDetection:
"""雷达检测结果"""
range_m: float # 目标距离(米)
speed_mps: float # 目标速度(米/秒)
angle_deg: float # 目标角度(度)
rcs_db: float # 雷达散射截面(dBsm)
micro_motion_hz: float # 微动频率(Hz),用于生命体征

class CPDRadarProcessor:
"""
60GHz FMCW 雷达 CPD 处理器

工作流程:
1. 发送 FMCW chirp 信号
2. 接收回波,与发射信号混频得到中频(IF)信号
3. 对 IF 信号做 FFT 得到距离-时间图
4. 检测静止目标(距离恒定,速度≈0)
5. 在静止目标上检测微动(呼吸/心跳频率)
6. 判断是否为儿童/婴儿
"""

def __init__(self, config: dict):
self.num_chirps = config.get('num_chirps', 64) # 每帧 chirp 数
self.num_samples = config.get('num_samples', 256) # 每 chirp 采样数
self.sample_rate = config.get('sample_rate', 1e6) # 采样率 (Hz)
self.bandwidth = config.get('bandwidth', 4e9) # 带宽 (Hz)
self.center_freq = config.get('center_freq', 60e9) # 中心频率 (Hz)
self.c = 3e8 # 光速

# CPD 参数
self.range_resolution = self.c / (2 * self.bandwidth) # 距离分辨率
self.max_range = self.num_samples * self.range_resolution / 2
self.breath_freq_range = (0.1, 0.5) # 呼吸频率 6-30 次/分钟
self.heart_freq_range = (0.8, 2.0) # 心跳频率 48-120 次/分钟

def range_doppler_processing(self, if_signal: np.ndarray) -> np.ndarray:
"""
距离-多普勒处理

Args:
if_signal: 中频信号, shape=(num_chirps, num_samples)

Returns:
range_doppler: 距离-多普勒图, shape=(num_doppler, num_range)
"""
# Step 1: 对每个 chirp 做 FFT(距离FFT)
range_fft = np.fft.fft(if_signal, axis=1)
range_fft = np.abs(range_fft)

# Step 2: 对 chirp 维做 FFT(多普勒FFT)
range_doppler = np.fft.fftshift(
np.fft.fft(range_fft, axis=0), axes=0
)

return np.abs(range_doppler)

def detect_static_targets(self, range_doppler: np.ndarray,
threshold: float = 1e3) -> List[RadarDetection]:
"""
检测静止目标(多普勒≈0),用于 CPD

Args:
range_doppler: 距离-多普勒图
threshold: 检测阈值

Returns:
detections: 静止目标列表
"""
# 提取零多普勒切面
zero_doppler_idx = range_doppler.shape[0] // 2
range_profile = range_doppler[zero_doppler_idx, :]

# 峰值检测
peaks, _ = find_peaks(range_profile, height=threshold)

detections = []
for peak_idx in peaks:
distance = peak_idx * self.range_resolution
if distance > 0.1 and distance < self.max_range:
det = RadarDetection(
range_m=distance,
speed_mps=0.0, # 静止
angle_deg=0.0, # 单天线不测角
rcs_db=20 * np.log10(range_profile[peak_idx]),
micro_motion_hz=0.0
)
detections.append(det)

return detections

def detect_micro_motion(self, if_signal: np.ndarray,
range_bin: int,
duration_frames: int = 100) -> Optional[float]:
"""
在指定距离单元上检测微动(呼吸/心跳)

Args:
if_signal: 中频信号, shape=(num_frames, num_samples)
range_bin: 目标距离单元索引
duration_frames: 观测帧数

Returns:
micro_motion_freq: 微动频率 (Hz),None 表示未检测到
"""
# 提取目标距离单元的相位变化
phase_series = np.angle(if_signal[:duration_frames, range_bin])

# 相位解卷绕
phase_series = np.unwrap(phase_series)

# 去趋势
phase_series = phase_series - np.mean(phase_series)

# FFT 提取频率
freq_spectrum = np.abs(np.fft.fft(phase_series))
freqs = np.fft.fftfreq(len(phase_series), d=1.0) # 假设帧率 1Hz

# 只看正频率
pos_freq_mask = freqs > 0
freqs_pos = freqs[pos_freq_mask]
spectrum_pos = freq_spectrum[pos_freq_mask]

# 在呼吸频率范围内找峰值
breath_mask = (freqs_pos >= self.breath_freq_range[0]) & \
(freqs_pos <= self.breath_freq_range[1])
heart_mask = (freqs_pos >= self.heart_freq_range[0]) & \
(freqs_pos <= self.heart_freq_range[1])

if np.any(breath_mask):
breath_peak = np.argmax(spectrum_pos[breath_mask])
breath_freq = freqs_pos[breath_mask][breath_peak]
return breath_freq

if np.any(heart_mask):
heart_peak = np.argmax(spectrum_pos[heart_mask])
heart_freq = freqs_pos[heart_mask][heart_peak]
return heart_freq

return None

def classify_presence(self, detections: List[RadarDetection],
micro_motion: Optional[float]) -> str:
"""
分类座舱占用状态

Returns:
'child' | 'adult' | 'pet' | 'empty' | 'unknown'
"""
if not detections and micro_motion is None:
return 'empty'

if micro_motion is not None:
# 有微动信号 → 活体
if micro_motion <= 0.5: # 呼吸频率
# 小体积目标 + 低呼吸频率 → 可能是儿童
return 'child'
elif micro_motion <= 2.0: # 心跳频率
return 'child'

# 有静止目标但无微动 → 可能是物体
if detections:
for det in detections:
if det.rcs_db < -20: # 小 RCS → 小目标
return 'child' # 可能是婴儿

return 'unknown'


# 使用示例
if __name__ == "__main__":
processor = CPDRadarProcessor({
'num_chirps': 64,
'num_samples': 256,
'sample_rate': 1e6,
'bandwidth': 4e9,
'center_freq': 60e9
})

print(f"距离分辨率: {processor.range_resolution*100:.1f} cm")
print(f"最大探测距离: {processor.max_range:.1f} m")

# 模拟 IF 信号
np.random.seed(42)
if_sig = np.random.randn(100, 256) * 0.1 + 0.5 * np.exp(1j * 2 * np.pi * 0.3 * np.arange(100)[:, None])

# 处理
rd_map = processor.range_doppler_processing(if_sig[:64])
dets = processor.detect_static_targets(rd_map)

for d in dets:
print(f"目标: 距离={d.range_m:.2f}m, RCS={d.rcs_db:.1f}dB")

micro = processor.detect_micro_motion(if_sig, range_bin=10)
print(f"微动频率: {micro:.2f} Hz" if micro else "未检测到微动")

status = processor.classify_presence(dets, micro)
print(f"座舱状态: {status}")

3. 雷达+视觉融合架构

3.1 系统架构

graph TD
    subgraph "感知层"
        A1[ACAM 60GHz 雷达模块]
        A2[Smart Eye 视觉摄像头]
    end
    
    subgraph "处理层(边缘处理)"
        B1[雷达信号处理<br/>距离/速度/微动]
        B2[视觉AI处理<br/>人脸/眼动/姿态]
        B3[传感器融合模块]
    end
    
    subgraph "功能层"
        C1[CPD 儿童检测]
        C2[DMS 驾驶员监控]
        C3[OMS 乘员监控]
        C4[安全带状态]
    end
    
    subgraph "接口层"
        D1[CAN-Bus 单线输出]
    end
    
    A1 --> B1
    A2 --> B2
    B1 --> B3
    B2 --> B3
    B3 --> C1
    B3 --> C2
    B3 --> C3
    B3 --> C4
    C1 --> D1
    C2 --> D1
    C3 --> D1
    C4 --> D1

3.2 融合策略

功能 雷达贡献 视觉贡献 融合策略
CPD 穿透遮挡检测活体微动 无法穿透遮挡 雷达为主,视觉辅助确认
乘员分类 RCS 大小估算体型 人脸/体型精确分类 视觉为主,雷达辅助
驾驶员状态 呼吸频率/心率 眼动/头部姿态 视觉为主,雷达补充生理
安全带状态 无法检测 RGB/IR 图像检测 纯视觉
占用检测 高灵敏度存在检测 精确定位和分类 双重确认

3.3 边缘处理架构

NOVELIC + Smart Eye 方案的核心优势在于全部处理在传感器模块内完成:

特性 描述
处理位置 ACAM 模块内(雷达)+ Smart Eye 摄像头模块内(视觉)
外部接口 单路 CAN-Bus
无需 外部算力、LVDS 接口、额外 GPU/NPU
隐私保护 原始数据不出模块,仅输出结果

对比传统方案:

方案 算力位置 接口 隐私 成本
NOVELIC + Smart Eye 模块内边缘 CAN-Bus ✅ 高 低
传统集中式 域控制器/中央算力 LVDS + Ethernet ❌ 低 高
混合式 部分边缘 + 部分集中 多种 ⚠️ 中 中

4. 对 CPD 检测的深度分析

4.1 60GHz vs 77GHz vs 120GHz 对比

参数 60GHz (NOVELIC) 77GHz 120GHz (indie)
距离分辨率 3.75cm @ 4GHz BW 1.88cm @ 8GHz BW ~1.25cm @ 12GHz BW
穿透性 ✅ 好(可穿透毛毯/衣物) ⚠️ 中等 ❌ 较差
微动灵敏度 ✅ 高(呼吸/心跳) ⚠️ 中等 ✅ 高
模块尺寸 ✅ 最小 中 ✅ 小
功耗 ✅ 最低 中 中
CPD 适用性 ✅ 最佳 ⚠️ 可用但非最优 ⚠️ 距离分辨率好但穿透差

结论:60GHz 是 CPD 的最佳频率选择——穿透性好、微动灵敏、模块紧凑。

4.2 遮挡场景测试

NOVELIC 声称 ACAM 能在以下遮挡条件下可靠检测儿童:

遮挡场景 雷达穿透性 视觉检测 融合结果
毛毯覆盖 ✅ 可穿透 ❌ 失败 ✅ 雷达独立检测
儿童座椅遮挡 ✅ 可穿透 ❌ 部分失败 ✅ 雷达为主
后向座椅(背对车头) ✅ 不受朝向影响 ⚠️ 部分遮挡 ✅ 雷达为主
衣物完全覆盖 ✅ 可穿透 ❌ 失败 ✅ 雷达独立检测
无遮挡 ✅ ✅ ✅ 双重确认

5. Euro NCAP CPD 合规分析

5.1 Euro NCAP 2026 CPD 要求

要求 NOVELIC + Smart Eye 方案 合规状态
静态儿童检测 ACAM 微动检测 ✅
动态儿童检测 ACAM 距离/速度 + 视觉 ✅
遮挡鲁棒性 雷达穿透特性 ✅
全座位覆盖 ACAM 模块扩展 ✅
假阳性率低 雷达+视觉双重确认 ✅
边缘处理隐私 模块内处理 ✅

5.2 竞品对比

方案 技术 CPD 性能 成本 量产状态
NOVELIC + Smart Eye 60GHz雷达+视觉 ⭐⭐⭐⭐⭐ 低 ✅ 量产
Tesla cabin radar 60GHz雷达 ⭐⭐⭐⭐ 低 ✅ OTA
Calterah Dubhe UWB ⭐⭐⭐ 极低 开发中
indie 120GHz 120GHz FMCW ⭐⭐⭐⭐ 中 开发中
纯视觉 (RGB) 摄像头 ⭐⭐ 低 量产
Murata + Smart Eye 60GHz + 视觉 ⭐⭐⭐⭐⭐ 低 开发中

6. 对 IMS 开发的启示

6.1 传感器选型建议

优先级 建议 理由
🔴 P0 CPD 优先选 60GHz 雷达 穿透性好、微动灵敏、成本最低、已量产验证
🔴 P0 雷达+视觉融合而非纯视觉 遮挡场景下视觉必失败,雷达是 CPD 的唯一可靠方案
🟡 P1 边缘处理架构 隐私合规、降低域控制器算力需求、简化接口
🟡 P1 CAN-Bus 单线接口 简化 OEM 集成,降低线束成本

6.2 开发路线建议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Phase 1: 雷达模块评估(Q1 2026)
├── 采购 NOVELIC ACAM 开发套件
├── 评估检测性能(距离/微动/穿透)
└── 对比 Calterah Dubhe UWB 方案

Phase 2: 融合算法开发(Q2-Q3 2026)
├── 雷达信号处理 pipeline(距离FFT/微动提取)
├── 视觉-雷达标定(空间对齐/时间同步)
├── 融合决策框架(置信度加权/冲突解决)
└── 数据集建设(遮挡场景/多体型/多姿态)

Phase 3: 系统集成(Q4 2026)
├── ACAM + IR 摄像头硬件集成
├── CAN-Bus 消息定义
├── HIL 仿真测试
└── Euro NCAP CPD 场景验证

6.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
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
"""
雷达+视觉传感器融合 CPD 决策框架
"""

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

@dataclass
class RadarResult:
has_target: bool
distance_m: float
rcs_db: float
micro_motion_hz: Optional[float]
confidence: float # 0-1

@dataclass
class VisionResult:
has_child: bool
has_adult: bool
bbox: Optional[tuple] # (x, y, w, h)
confidence: float # 0-1

@dataclass
class FusionResult:
classification: str # 'child' | 'adult' | 'empty' | 'unknown'
confidence: float
source: str # 'radar' | 'vision' | 'fusion'

def fuse_cpd(radar: RadarResult, vision: VisionResult) -> FusionResult:
"""
雷达+视觉融合 CPD 决策

策略:
1. 雷达检测到活体微动 + 视觉确认 → 高置信度儿童
2. 雷达检测到活体微动 + 视觉无检测 → 中置信度儿童(遮挡场景)
3. 雷达无检测 + 视觉检测到儿童 → 低置信度(可能误检)
4. 两者均无检测 → 空座
"""
# 雷达有活体信号
if radar.has_target and radar.micro_motion_hz is not None:
if vision.has_child:
# 双重确认
conf = min(radar.confidence + vision.confidence, 1.0)
return FusionResult('child', conf, 'fusion')
elif vision.has_adult:
# 雷达说活体但小RCS,视觉说成人
if radar.rcs_db < -15: # 小目标
return FusionResult('child', 0.6, 'fusion')
return FusionResult('adult', 0.8, 'fusion')
else:
# 雷达独立检测(遮挡场景)
if radar.rcs_db < -20:
return FusionResult('child', radar.confidence * 0.7, 'radar')
return FusionResult('unknown', 0.5, 'radar')

# 雷达有静止目标但无微动
if radar.has_target:
if vision.has_child:
return FusionResult('child', 0.6, 'fusion')
if vision.has_adult:
return FusionResult('adult', 0.7, 'fusion')
# 有静止无生命目标
return FusionResult('unknown', 0.3, 'radar')

# 雷达无目标
if vision.has_child:
return FusionResult('child', vision.confidence * 0.5, 'vision')
if vision.has_adult:
return FusionResult('adult', vision.confidence * 0.5, 'vision')

return FusionResult('empty', 0.9, 'fusion')


# 测试
if __name__ == "__main__":
# 场景1:毛毯覆盖儿童(雷达独立检测)
radar = RadarResult(True, 0.8, -25, 0.3, 0.85)
vision = VisionResult(False, False, None, 0.0)
result = fuse_cpd(radar, vision)
print(f"场景1(遮挡儿童): {result.classification}, 置信度={result.confidence:.2f}, 源={result.source}")

# 场景2:双重确认
radar = RadarResult(True, 1.2, -18, 0.35, 0.9)
vision = VisionResult(True, False, (100, 200, 50, 80), 0.85)
result = fuse_cpd(radar, vision)
print(f"场景2(双重确认): {result.classification}, 置信度={result.confidence:.2f}, 源={result.source}")

# 场景3:空座
radar = RadarResult(False, 0, 0, None, 0.95)
vision = VisionResult(False, False, None, 0.95)
result = fuse_cpd(radar, vision)
print(f"场景3(空座): {result.classification}, 置信度={result.confidence:.2f}, 源={result.source}")

7. 参考


NOVELIC × Smart Eye:60GHz雷达+视觉融合的座舱感知方案(InCabin 2026 深度解析)
https://dapalm.com/2026/10/05/2026-10-05-012-novelic-smart-eye-radar-vision-fusion-cpd/
作者
Mars
发布于
2026年10月5日
许可协议