60GHz雷达舱内感知:Euro NCAP CPD强制要求下的技术路线解析

核心摘要

Euro NCAP 2025年起强制要求Child Presence Detection (CPD),60GHz FMCW雷达成为舱内感知的最佳技术选择。本文深入解析:60GHz雷达的物理优势、FMCW vs UWB技术对比、CPD检测算法流程、DSP处理需求,以及IMS开发中的集成方案。

技术背景

Euro NCAP CPD强制时间线

时间节点 要求 技术方向
2025年 CPD评分项 摄像头/雷达/压传感器
2026年 CPD加分项 推荐雷达方案
2029年 预计强制 雷达成为主流

为什么60GHz成为”甜蜜点”

graph TB
    subgraph 频段选择
        A[24GHz] -->|分辨率低| X[淘汰]
        B[60GHz] -->|最佳平衡| C[推荐]
        C[77GHz] -->|成本高| D[备选]
    end
    
    subgraph 60GHz优势
        C --> E[波长5mm]
        C --> F[穿透性适中]
        C --> G[成本可控]
        C --> H[芯片生态成熟]
    end

60GHz FMCW雷达核心优势:

  1. 隐私保护:不采集人脸图像,只输出点云
  2. 非视距检测:穿透毛毯、衣物检测呼吸
  3. 光照无关:夜间/强光均能工作
  4. 呼吸检测:微多普勒效应检测胸廓起伏

FMCW vs UWB 技术对比

技术原理差异

特性 FMCW雷达 UWB雷达
波形 线性调频连续波 纳秒级脉冲
带宽 4-7 GHz 500 MHz - 数GHz
分辨率 高(距离/速度) 中等
处理复杂度 FFT为主 相关运算
安全性 无中继攻击风险 需防中继攻击
成本 中高
多功能 CPD + 生命体征 + 手势 CPD为主

为什么OEM选择FMCW

Cadence Tensilica产品总监Amit Kumar观点:

“FMCW在成本结构、集成路径、功能扩展性上全面优于UWB。支持CPD、生命体征检测、手势识别等统一信号处理流程,避免中继攻击等安全漏洞。”

量产时间线:

  • 2026-2027:第一批FMCW舱内雷达量产
  • 2028-2030:多车型平台化部署
  • 2030+:成为L3+自动驾驶标配

CPD检测算法流程

信号处理流水线

graph LR
    A[雷达原始数据] --> B[Range FFT]
    B --> C[Doppler FFT]
    C --> D[杂波抑制]
    D --> E[CFAR检测]
    E --> F[微多普勒分析]
    F --> G[呼吸信号提取]
    G --> H[ML分类]
    H --> I{儿童存在?}
    I -->|是| J[报警]
    I -->|否| K[正常状态]

核心参数

参数 典型值 说明
帧率 50 FPS 实时检测需求
距离分辨率 2-5 cm 儿童位置精度
速度分辨率 0.1 m/s 呼吸速度检测
检测准确率 99.9% Euro NCAP要求
漏检率 <0.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import numpy as np
from scipy import signal

def extract_breathing_signal(
radar_data: np.ndarray,
range_bin: int,
sample_rate: float = 50.0
) -> np.ndarray:
"""
从雷达数据中提取呼吸信号

Args:
radar_data: 雷达ADC数据 (frames, chirps, samples)
range_bin: 目标距离bin
sample_rate: 帧率 (Hz)

Returns:
breathing_signal: 呼吸信号序列
"""
# Range FFT
range_fft = np.fft.fft(radar_data, axis=2)

# 提取目标距离bin的相位
target_phase = np.angle(range_fft[:, :, range_bin])

# 相位差分 = 微多普勒
phase_diff = np.diff(target_phase.mean(axis=1))

# 带通滤波 (0.1-0.5 Hz, 对应6-30次/分钟呼吸)
nyquist = sample_rate / 2
low = 0.1 / nyquist
high = 0.5 / nyquist
b, a = signal.butter(4, [low, high], btype='band')
breathing_signal = signal.filtfilt(b, a, phase_diff)

return breathing_signal


def detect_child_presence(
breathing_signal: np.ndarray,
threshold: float = 0.02
) -> dict:
"""
检测儿童存在

Args:
breathing_signal: 呼吸信号
threshold: 能量阈值

Returns:
result: {detected: bool, breathing_rate: float, confidence: float}
"""
# 计算能量
energy = np.sum(breathing_signal ** 2) / len(breathing_signal)

# FFT计算呼吸频率
fft_result = np.abs(np.fft.fft(breathing_signal))
freqs = np.fft.fftfreq(len(breathing_signal), 1/50.0)

# 找主频 (0.1-0.5 Hz范围)
valid_idx = (freqs >= 0.1) & (freqs <= 0.5)
peak_idx = np.argmax(fft_result[valid_idx])
breathing_rate = freqs[valid_idx][peak_idx] * 60 # 次/分钟

detected = energy > threshold
confidence = min(energy / threshold, 1.0) if detected else 0.0

return {
'detected': detected,
'breathing_rate': breathing_rate,
'confidence': confidence,
'energy': energy
}


# 测试示例
if __name__ == "__main__":
# 模拟雷达数据 (100帧, 16 chirps, 64 samples)
radar_data = np.random.randn(100, 16, 64) * 0.01

# 添加模拟呼吸信号
t = np.linspace(0, 2, 100)
breathing = 0.05 * np.sin(2 * np.pi * 0.3 * t) # 18次/分钟
radar_data[:, 0, 20] += breathing # 在距离bin 20处

# 提取呼吸信号
breathing_signal = extract_breathing_signal(radar_data, range_bin=20)

# 检测儿童存在
result = detect_child_presence(breathing_signal)
print(f"检测结果: {result}")

DSP处理需求

算力要求

处理模块 算力需求 说明
Range FFT 1024-point × 50fps 51K FFT/秒
Doppler FFT 16-point × 50fps 800 FFT/秒
CFAR检测 1024点/帧 51K点/秒
ML推理 CNN小模型 约10K MAC/帧
总计 约100 GOPS 含冗余

推荐DSP平台

平台 算力 功耗 适用场景
Cadence Tensilica Vision 110 200 GOPS <1W 单雷达处理
NXP i.MX 9 + DSP 300 GOPS 2-3W 多雷达融合
TI IWR6843AOP 集成DSP <1W 单芯片方案
Qualcomm QCS8255 Hexagon NPU 可共享 DMS+雷达融合

代码示例:Tensilica Vision DSP优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Tensilica Vision P5 DSP上的FFT优化
#include <xtensa/tie/xt_core.h>

void range_fft_optimized(
int16_t *adc_data, // ADC数据
complex_int16_t *fft_out, // FFT输出
int num_chirps,
int num_samples
) {
// 使用Tensilica向量指令
// 8-bit和16-bit MAC操作
for (int chirp = 0; chirp < num_chirps; chirp++) {
// 加载ADC数据到向量寄存器
xtbool load_success;
VecNx16 data = XT_LX_VX16_I(adc_data + chirp * num_samples, 0, load_success);

// 原地FFT
fft_16pt_radix4(data, fft_out + chirp * num_samples);
}
}

IMS集成方案

硬件架构

graph TB
    subgraph 传感器层
        A1[60GHz雷达 x2] --> B[雷达前端]
        A2[红外摄像头] --> C[DMS模块]
    end
    
    subgraph 处理层
        B --> D[DSP处理器]
        C --> D
        D --> E[融合算法]
    end
    
    subgraph 输出层
        E --> F1[CPD报警]
        E --> F2[疲劳警告]
        E --> F3[生命体征显示]
    end

软件接口定义

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
// IMS舱内感知接口
class InCabinSensing {
public:
struct CPDResult {
bool child_detected;
float breathing_rate; // 次/分钟
float confidence;
Position3D position; // 儿童位置
Timestamp timestamp;
};

struct VitalSigns {
float heart_rate; // 次/分钟
float breathing_rate; // 次/分钟
float confidence;
};

// 初始化雷达
bool init(const RadarConfig& config);

// CPD检测 (主循环调用)
CPDResult detect_child_presence();

// 生命体征监测
VitalSigns get_vital_signs(int seat_id);

// 设置报警回调
void set_alarm_callback(std::function<void(const CPDResult&)> callback);

private:
RadarDriver radar_;
BreathingDetector breathing_detector_;
MLClassifier classifier_;
};

// 使用示例
int main() {
InCabinSensing sensing;

RadarConfig config = {
.frequency = 60e9, // 60 GHz
.bandwidth = 4e9, // 4 GHz
.num_tx = 2,
.num_rx = 4,
.frame_rate = 50
};

sensing.init(config);

sensing.set_alarm_callback([](const InCabinSensing::CPDResult& result) {
if (result.child_detected) {
// 触发仪表盘报警
trigger_dashboard_alert("Child detected in vehicle!");

// 发送手机通知
send_mobile_notification(result);

// 启动空调
activate_climate_control();
}
});

// 主循环
while (true) {
auto result = sensing.detect_child_presence();
// 处理结果...
}

return 0;
}

开发启示

技术路线选择

阶段 推荐方案 原因
2025-2026 TI IWR6843AOP单芯片 快速验证,开发成本低
2027-2028 多雷达 + DSP融合 提升精度,支持多功能
2029+ 与DMS共享计算平台 降低成本,架构统一

Euro NCAP测试场景

CPD测试场景清单(部分):

场景编号 描述 检测时限
CPD-01 儿童在后排座椅,无遮挡 ≤10秒
CPD-02 儿童被毛毯覆盖 ≤30秒
CPD-03 儿童在婴儿座椅,后向安装 ≤30秒
CPD-04 极端温度(-20°C/50°C) ≤60秒
CPD-05 振动环境(引擎怠速) ≤30秒

成本分析

方案 BOM成本 开发成本 量产时间
单雷达TI方案 $15-20 6个月
双雷达融合 $30-40 12个月
雷达+DMS融合 $50-70 18个月

参考资料

  • Cadence Design Systems: How 60GHz Radar is Transforming In-Cabin Safety
  • Euro NCAP Child Presence Detection Test Protocol v1.0
  • TI IWR6843AOP Technical Reference Manual
  • IEEE: Micro-Doppler Signatures for Human Activity Classification

IMS开发建议: 优先采用TI IWR6843AOP进行原型验证,熟悉信号处理流程后再考虑多雷达融合方案。关注Euro NCAP官方测试场景更新,确保算法满足最新评分要求。


60GHz雷达舱内感知:Euro NCAP CPD强制要求下的技术路线解析
https://dapalm.com/2026/06/22/2026-06-22-60ghz-radar-in-cabin-sensing-cpd/
作者
Mars
发布于
2026年6月22日
许可协议