Geely E2获Euro NCAP 2026五星:CPD儿童检测+安全带误用+OOP短板分析

Euro NCAP评测信息


核心发现

Geely E2是吉利首款获得2026版Euro NCAP五星的车型,与CUPRA Raval(4星)形成鲜明对比。

与CUPRA Raval对比

功能 Geely E2 (5星) CUPRA Raval (4星) 差距分析
CPD儿童检测 ✅ 直接检测 ❌ 未搭载 5星vs4星关键差距
安全带误用 ✅ 检测(腰带only) ✅ 检测(后方佩戴) 各有侧重
OOP异常姿态 ❌ 未识别 ❌ 未识别 共同短板
乘员分类 ✅ 按体型调约束 ✅ 按体型调约束 持平
DMS分心 ✅ 良好 ✅ 良好 持平
DMS损伤 ✅ 良好 ✅ 良好 持平
速度识别 76%(89%里程) 80%(92%里程) Raval略优
AEB 表现不一 超法规要求 Raval略优
行人保护 变化大 良好 Raval略优
eCall ✅ 满分 ✅ 满分 持平

关键结论:CPD是5星与4星的分水岭


Geely E2四大维度详细分析

1. Safe Driving(安全驾驶)

检测项 E2表现 说明
安全带误用 ✅ 识别仅用腰带(lap-only)的误用
乘员分类 ✅ 按体型调整约束系统
OOP检测 ❌ “Front seat occupants who are ‘out of position’, such as those with their feet on the dashboard for example, are not recognised“
DMS分心 ✅ 良好
DMS损伤 ✅ 良好
CPD ✅ 直接检测 “issues a warning if a child has been left in the car”
物理控制 ✅ 驾驶和信息娱乐均使用物理控制
速度识别 76%(89%里程)
转向辅助 ✅ 满分 包含驾驶员发起的变道功能

2. Crash Avoidance(碰撞避免)

系统表现 评分
AEB 不一致(部分满分,部分<50%)
车道偏离预防 良好
驾驶员辅助 40%(适中)
防开门 ✅ 有

3. Crash Protection(碰撞保护)

测试 结果
正面偏置 驾驶员腿部保护差(踏板侵入)
全宽 前乘客胸部边缘
侧面壁障 良好/充分
侧面柱撞 驾驶员胸部边缘
中心气囊 ✅ 有
行人头部 仅挡风玻璃区域良好
行人骨盆/腿 良好/充分

4. Post Crash(碰撞后)

项目 评分
eCall ✅ 满分
TPS第三方服务 ❌ 未提供
其他 ✅ 满分

CPD系统分析

Geely E2的CPD方案推测

基于Euro NCAP描述”direct Child Presence Detection (CPD) system”:

方案类型 可能性 说明
雷达CPD ⭐⭐⭐ “Direct”通常指雷达方案
摄像头CPD ⭐⭐ 摄像头也可”direct”
压力传感器 ⭐ 压力传感器通常不被归类为”direct”
UWB ⭐⭐⭐ UWB是当前主流CPD方案

Euro NCAP 2026 CPD评分梯度

CPD等级 描述 得分权重
间接检测 通过门/窗传感器推断 最低
直接检测 主动传感器确认儿童存在 中等
直接+干预 检测+主动通风/解锁/呼叫 最高

Euro NCAP对CPD的评分:”不仅奖励检测,更奖励主动干预——开启空调、允许车辆进入、或发起求助”


IMS开发启示

1. 从4星到5星的路径

步骤 功能 难度 E2实现 Raval缺失
1 CPD直接检测 ⭐⭐⭐ ✅ ❌
2 CPD+主动干预 ⭐⭐⭐⭐ ⚠️ 未确认 ❌
3 OOP检测 ⭐⭐⭐⭐ ❌ ❌
4 安全带完整误用 ⭐⭐⭐ ✅(腰带) ✅(后方佩戴)
5 行人保护提升 ⭐⭐⭐⭐ ⚠️ 变化大 ✅ 良好

2. Geely E2和CUPRA Raval的安全带误用对比

误用类型 Geely E2 CUPRA Raval 行业趋势
仅用腰带 (lap-only) ✅ 检测 ⚠️ 未确认 ⭐⭐⭐
后方佩戴 ⚠️ 未确认 ✅ 检测 ⭐⭐⭐
腋下佩戴 ⚠️ 未确认 ⚠️ 未确认 ⭐⭐⭐⭐
未扣 ✅ ✅ 所有车型

互补发现: E2检测lap-only,Raval检测behind-back → 两种误用需要不同的检测策略

3. OOP检测:共同的短板

E2: “Front seat occupants who are ‘out of position’, such as those with their feet on the dashboard for example, are not recognised“
Raval: “does not have a system to recognise if the front passenger is sitting in a position that would be dangerous in an accident”

OOP是2026版Euro NCAP的新增要求,目前没有评测车型能完全满足。


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
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
"""
OOP异常姿态检测方案
基于Geely E2和CUPRA Raval的Euro NCAP评测发现

缺失场景:
- 乘客脚放在仪表板上
- 乘客异常前倾
- 乘客侧躺/睡觉
- 儿童坐在成人位置(无安全座椅)

技术方案: 3D姿态估计 + 规则判定
"""

import numpy as np
from typing import Tuple, List

class OOPDetector:
"""
OOP异常姿态检测器

检测流程:
1. 乘员检测 (座椅压力 + 摄像头)
2. 3D姿态估计 (关键点检测)
3. 姿态分类 (正常 vs 异常)
4. 风险评估 (碰撞风险等级)
"""

# 正常坐姿关键角度范围 (度)
NORMAL_RANGES = {
'torso_angle': (75, 105), # 躯干与垂直方向
'head_pitch': (-15, 25), # 头部俯仰
'knee_angle': (60, 150), # 膝盖弯曲
'hip_angle': (80, 110), # 髋关节
'shoulder_height': (0.3, 0.7), # 肩高/座高比
}

# OOP场景定义
OOP_SCENARIOS = {
'feet_on_dash': {
'description': '脚放在仪表板上',
'risk': 'critical',
'key_indicators': ['knee_angle > 160', 'foot_height > 0.8 * dashboard_height'],
},
'extreme_forward_lean': {
'description': '极端前倾',
'risk': 'high',
'key_indicators': ['torso_angle < 45', 'head_distance_to_dashboard < 0.2m'],
},
'lying_down': {
'description': '躺平',
'risk': 'high',
'key_indicators': ['torso_angle < 30', 'shoulder_height < 0.3'],
},
'child_no_seat': {
'description': '儿童未坐安全座椅',
'risk': 'critical',
'key_indicators': ['shoulder_height < 0.4', 'head_circumference < threshold'],
}
}

def detect_oop(self, keypoints_3d: np.ndarray,
seat_pressure: np.ndarray) -> dict:
"""
OOP检测主函数

Args:
keypoints_3d: (17, 3) 3D关键点 (COCO格式)
seat_pressure: 座椅压力分布 (H, W)

Returns:
OOP检测结果
"""
# 计算关键角度
torso_angle = self._compute_torso_angle(keypoints_3d)
head_pitch = self._compute_head_pitch(keypoints_3d)
knee_angle = self._compute_knee_angle(keypoints_3d)
hip_angle = self._compute_hip_angle(keypoints_3d)
shoulder_height = self._compute_shoulder_height(keypoints_3d)

# 判定每种OOP场景
results = {}
for scenario, config in self.OOP_SCENARIOS.items():
is_detected = self._check_scenario(
scenario, torso_angle, head_pitch, knee_angle,
hip_angle, shoulder_height, keypoints_3d
)
results[scenario] = {
'detected': is_detected,
'risk': config['risk'],
'description': config['description']
}

# 综合风险评估
max_risk = max(
(r['risk'] for r in results.values() if r['detected']),
key=['low', 'medium', 'high', 'critical'].index
) if any(r['detected'] for r in results.values()) else 'none'

return {
'scenarios': results,
'overall_risk': max_risk,
'metrics': {
'torso_angle': torso_angle,
'knee_angle': knee_angle,
'shoulder_height': shoulder_height
}
}

def _compute_torso_angle(self, kp: np.ndarray) -> float:
"""计算躯干角度"""
shoulder = (kp[5] + kp[6]) / 2 # 左右肩中点
hip = (kp[11] + kp[12]) / 2 # 左右髋中点
torso = hip - shoulder
return np.degrees(np.arctan2(torso[0], -torso[1]))

def _compute_head_pitch(self, kp: np.ndarray) -> float:
"""计算头部俯仰角"""
ear = kp[3] # 左耳
nose = kp[0] # 鼻子
return np.degrees(np.arctan2(nose[1] - ear[1], nose[2] - ear[2]))

def _compute_knee_angle(self, kp: np.ndarray) -> float:
"""计算膝盖角度"""
hip = kp[11] # 左髋
knee = kp[13] # 左膝
ankle = kp[15] # 左踝
v1 = hip - knee
v2 = ankle - knee
cos_angle = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2) + 1e-6)
return np.degrees(np.arccos(np.clip(cos_angle, -1, 1)))

def _compute_hip_angle(self, kp: np.ndarray) -> float:
"""计算髋关节角度"""
shoulder = kp[5]
hip = kp[11]
knee = kp[13]
v1 = shoulder - hip
v2 = knee - hip
cos_angle = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2) + 1e-6)
return np.degrees(np.arccos(np.clip(cos_angle, -1, 1)))

def _compute_shoulder_height(self, kp: np.ndarray) -> float:
"""肩高/座高比"""
shoulder = (kp[5] + kp[6]) / 2
hip = (kp[11] + kp[12]) / 2
seat_height = np.abs(hip[1] - shoulder[1])
return float(seat_height)

def _check_scenario(self, scenario, torso, head, knee, hip, shoulder_h, kp):
"""检查特定OOP场景"""
if scenario == 'feet_on_dash':
return knee > 160 and kp[15][1] < 0.8 * 0.5 # 脚踝高度
elif scenario == 'extreme_forward_lean':
return torso < 45
elif scenario == 'lying_down':
return torso < 30 and shoulder_h < 0.3
elif scenario == 'child_no_seat':
return shoulder_h < 0.4
return False

总结

Geely E2的5星评测提供了三个关键信号:

  1. CPD是5星的必要条件 — E2有CPD→5星,Raval无CPD→4星
  2. OOP是下一个竞争点 — 两款车都未实现OOP检测
  3. 安全带误用各有侧重 — E2检测lap-only,Raval检测behind-back

对IMS开发:提供完整的CPD+OOP+安全带误用三合一方案,可帮助OEM从4星升级到5星。