ANCAP 2026-2028:澳洲NCAP新增CPD与安全带误用检测要求解读

法规动态

项目 内容
来源 ANCAP(Australian New Car Assessment Program)2026-2028协议
发布时间 2026年10月
新增要求 CPD儿童存在检测、安全带误用检测、异常姿态检测
生效时间 2026-2028年逐步实施
性质 行业评级(非强制),但市场影响力大

新增检测要求

与Euro NCAP的对比

检测项 Euro NCAP 2026 ANCAP 2026-2028 差异
疲劳检测 ✅ DSM ✅ 一致
分心检测 ✅ DSM ✅ 一致
CPD儿童检测 ✅ 2026新增 ✅ 2026-2028 ANCAP更详细
安全带误用 ✅ OMS ✅ 明确要求 ANCAP更明确
异常姿态(OOP) ⚠️ 隐含 ✅ 明确要求 ANCAP更明确
触摸屏限制 ❌ ✅ 罚分 ANCAP独有
电池安全 ❌ ✅ 穿刺测试 ANCAP独有

ANCAP新增的3大检测场景

1. 儿童存在检测(CPD)

场景 要求 检测时限
后座有儿童/婴儿 检测到存在 锁车后≤10秒
后座无儿童 不误报 —
儿童在安全座椅中 检测到安全座椅+占用 —
儿童离开 检测到空座 ≤30秒
覆盖物遮挡 穿透毯子检测 毯子厚度≤5cm

2. 安全带误用检测

场景 检测要求 警告等级
未佩戴安全带 检测+提醒 行车前强制
手臂下方佩戴 检测异常走向 一级警告
背后佩戴 检测无胸前带 一级警告
扭曲佩戴 检测扭转 二级警告
松弛佩戴 检测过松 二级警告

3. 异常姿态检测(OOP)

姿态 风险 检测要求
身体前倾 气囊伤害 检测+降级气囊
身体侧倾 安全带失效 检测+警告
后仰过度 安全带脱离 检测+警告
脚搭仪表 碰撞伤害 检测+警告
跪姿/反坐 严重碰撞风险 检测+紧急警告

触摸屏限制(ANCAP独有)

ANCAP 2026-2028新增对触摸屏操作的罚分规则:

操作类型 罚分 说明
行驶中触摸屏操作>2秒 -1分 除空调/导航外
触摸屏替代物理按钮 -2分 如雨刷/灯光/双闪
触摸屏操作需多级菜单 -1分 常用功能>2级

对DMS的影响:驾驶员操作触摸屏的时间可通过DMS的”视线偏离”指标间接检测。

电池安全(ANCAP独有)

ANCAP 2026-2028新增EV电池安全测试:

  • 穿刺测试:电池包穿刺后不燃烧/不爆炸
  • 这与DMS无直接关系,但影响整车评级

IMS合规开发启示

统一合规矩阵

功能 Euro NCAP ANCAP GB 47955 GB 44721 IMS优先级
疲劳检测 ✅ ✅ ✅ ✅ P0(已有)
分心检测 ✅ ✅ ✅ ✅ P0(已有)
CPD ✅ ✅ — — P0(必须新增)
安全带误用 ✅ ✅ — — P0(必须新增)
OOP检测 ⚠️ ✅ — — P1(必须新增)
触摸屏操作监测 ❌ ✅ — — P2
30秒接管就绪度 ❌ ❌ — ✅ P0(L3)
无响应自动停车 ❌ ❌ ✅ ✅ P0

合规开发统一路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
统一合规开发计划(Euro NCAP + ANCAP + GB):

Phase 1(2026 Q4):P0功能开发
├── CPD儿童检测(Euro NCAP + ANCAP)
│ ├── 雷达方案:60GHz mmWave
│ └── 摄像头方案:OMS 5MP + AI检测
├── 安全带误用检测(Euro NCAP + ANCAP)
│ ├── 算法方案:KPGBeltNet关键点引导
│ └── 硬件方案:ZF红外安全带(如OEM支持)
└── 30秒接管就绪度(GB 44721)
└── 持续监测模块

Phase 2(2027 Q1):P1功能开发
├── OOP异常姿态检测(ANCAP明确要求)
│ ├── 3D姿态估计(ST-GCN/ToF)
│ └── 五类姿态分类
└── ADAS联动
└── DMS→ADAS降级/停车接口

Phase 3(2027 Q2):P2功能 + 认证
├── 触摸屏操作监测(ANCAP罚分)
├── 统一合规性自测
└── 第三方认证(Euro NCAP/ANCAP/GB)

各标准的关键差异总结

维度 Euro NCAP ANCAP GB(中国国标)
性质 行业评级 行业评级 法律强制
地区 欧洲 澳洲/新西兰 中国
不达标后果 扣分/降星 扣分/降星 不能销售
CPD 2026新增 2026-2028 未明确
安全带 OMS范围 明确要求 未明确
OOP 隐含 明确要求 未明确
接管监测 未来 未明确 强制
触摸屏 无 罚分 无
电池安全 无 穿刺测试 无

关键结论:三大标准各有侧重,IMS需同时满足所有标准才能在全球市场竞争力。

  • Euro NCAP → 技术先进性
  • ANCAP → 功能完整性(CPD/OOP/安全带更明确)
  • GB → 法规合规性(不达标不能卖)

技术实现方案

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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
import numpy as np
from typing import Dict, Tuple

class CPDRequirementValidator:
"""
ANCAP 2026-2028 CPD合规验证器

验证场景:
1. 后座有儿童/婴儿 → 锁车后≤10秒检测到
2. 后座无儿童 → 不误报
3. 儿童在安全座椅中 → 检测到安全座椅+占用
4. 儿童离开 → ≤30秒检测到空座
5. 覆盖物遮挡 → 穿透毯子(≤5cm)检测
"""

SCENARIOS = {
'CPD-01': {'name': '后座有儿童', 'timeout': 10, 'required': True},
'CPD-02': {'name': '后座无儿童', 'timeout': 30, 'required': False},
'CPD-03': {'name': '安全座椅+儿童', 'timeout': 10, 'required': True},
'CPD-04': {'name': '儿童离开', 'timeout': 30, 'required': False},
'CPD-05': {'name': '毯子遮挡(5cm)', 'timeout': 15, 'required': True},
}

def validate_detection(self, scenario_id: str,
detection_result: dict) -> Dict:
"""
验证CPD检测结果是否符合ANCAP要求

Args:
scenario_id: 场景编号
detection_result: {
'detected': bool,
'detection_time': float (秒),
'confidence': float,
'sensor_type': str
}
"""
scenario = self.SCENARIOS[scenario_id]
passed = True
issues = []

if scenario['required'] and not detection_result['detected']:
passed = False
issues.append(f"未检测到儿童,违反{scenario['name']}")

if detection_result['detection_time'] > scenario['timeout']:
passed = False
issues.append(
f"检测时间{detection_result['detection_time']:.1f}s "
f"超过限制{scenario['timeout']}s"
)

if not scenario['required'] and detection_result['detected']:
passed = False
issues.append(f"误报:{scenario['name']}不应检测到")

return {
'scenario': scenario_id,
'passed': passed,
'issues': issues,
'result': detection_result
}


class SeatbeltMisuseDetector:
"""
ANCAP 2026-2028 安全带误用检测方案

检测类别:
1. 未佩戴 → 行车前强制检测
2. 手臂下方佩戴 → 一级警告
3. 背后佩戴 → 一级警告
4. 扭曲佩戴 → 二级警告
5. 松弛佩戴 → 二级警告
"""

MISUSE_TYPES = {
'SB-01': {'name': '未佩戴', 'level': 'critical', 'action': '禁止起步'},
'SB-02': {'name': '手臂下方', 'level': 'L1', 'action': '一级警告'},
'SB-03': {'name': '背后佩戴', 'level': 'L1', 'action': '一级警告'},
'SB-04': {'name': '扭曲佩戴', 'level': 'L2', 'action': '二级警告'},
'SB-05': {'name': '松弛佩戴', 'level': 'L2', 'action': '二级警告'},
}

def detect_misuse(self, keypoints: np.ndarray) -> Dict:
"""
基于关键点的安全带误用检测

Args:
keypoints: 安全带路径关键点 (N, 2) 像素坐标

Returns:
detection: 误用类型和警告等级
"""
# 计算安全带路径特征
path_length = self._path_length(keypoints)
curvature = self._curvature(keypoints)
crossing_pattern = self._belt_crossing_pattern(keypoints)

# 分类逻辑
if len(keypoints) < 3:
return {'type': 'SB-01', **self.MISUSE_TYPES['SB-01']}

if crossing_pattern == 'under_arm':
return {'type': 'SB-02', **self.MISUSE_TYPES['SB-02']}

if crossing_pattern == 'behind_back':
return {'type': 'SB-03', **self.MISUSE_TYPES['SB-03']}

if curvature > 0.5: # 扭曲阈值
return {'type': 'SB-04', **self.MISUSE_TYPES['SB-04']}

# 检查松弛度
expected_path = self._expected_path(keypoints[0], keypoints[-1])
if path_length > expected_path * 1.15:
return {'type': 'SB-05', **self.MISUSE_TYPES['SB-05']}

return {'type': 'OK', 'name': '正常佩戴', 'level': 'none'}

def _path_length(self, pts):
return sum(np.linalg.norm(pts[i+1]-pts[i])
for i in range(len(pts)-1))

def _curvature(self, pts):
if len(pts) < 3:
return 0
angles = []
for i in range(len(pts)-2):
v1 = pts[i+1] - pts[i]
v2 = pts[i+2] - pts[i+1]
cos_a = np.dot(v1, v2) / (np.linalg.norm(v1)*np.linalg.norm(v2)+1e-8)
angles.append(np.arccos(np.clip(cos_a, -1, 1)))
return np.mean(angles) if angles else 0

def _belt_crossing_pattern(self, pts):
# 简化:检查路径是否经过胸前
if len(pts) < 4:
return 'unknown'
# 正常:肩→胸→腰
# 手臂下方:路径偏低
# 背后:路径绕过肩部
return 'normal' # 简化

def _expected_path(self, start, end):
return np.linalg.norm(end - start)


class OOPPostureDetector:
"""
ANCAP 2026-2028 异常姿态检测方案

五类姿态:
1. 身体前倾 → 气囊伤害 → 降级气囊
2. 身体侧倾 → 安全带失效 → 警告
3. 后仰过度 → 安全带脱离 → 警告
4. 脚搭仪表 → 碰撞伤害 → 警告
5. 跪姿/反坐 → 严重碰撞风险 → 紧急警告
"""

POSTURE_TYPES = {
'OOP-01': {'name': '身体前倾', 'risk': '气囊伤害', 'action': '降级气囊'},
'OOP-02': {'name': '身体侧倾', 'risk': '安全带失效', 'action': '警告'},
'OOP-03': {'name': '后仰过度', 'risk': '安全带脱离', 'action': '警告'},
'OOP-04': {'name': '脚搭仪表', 'risk': '碰撞伤害', 'action': '警告'},
'OOP-05': {'name': '跪姿/反坐', 'risk': '严重碰撞', 'action': '紧急警告'},
}

def classify_posture(self, body_keypoints: np.ndarray) -> Dict:
"""
基于3D关键点的姿态分类

Args:
body_keypoints: (17, 3) 17个3D关键点 (x, y, z)
0: nose, 1-4: L/R shoulder/elbow/wrist
5-8: R shoulder/elbow/wrist
9-12: L/R hip/knee/ankle
13-16: R hip/knee/ankle
"""
# 计算关键角度
torso_lean = self._torso_lean_angle(body_keypoints)
torso_lateral_tilt = self._lateral_tilt(body_keypoints)
back_angle = self._back_angle(body_keypoints)
leg_position = self._leg_position(body_keypoints)

# 分类
if torso_lean > 25: # 前倾>25°
return {'type': 'OOP-01', **self.POSTURE_TYPES['OOP-01'],
'lean_angle': torso_lean}

if abs(torso_lateral_tilt) > 20:
return {'type': 'OOP-02', **self.POSTURE_TYPES['OOP-02'],
'tilt_angle': torso_lateral_tilt}

if back_angle < 70: # 后仰
return {'type': 'OOP-03', **self.POSTURE_TYPES['OOP-03'],
'back_angle': back_angle}

if leg_position == 'dashboard':
return {'type': 'OOP-04', **self.POSTURE_TYPES['OOP-04']}

if leg_position == 'kneeling_reversed':
return {'type': 'OOP-05', **self.POSTURE_TYPES['OOP-05']}

return {'type': 'normal', 'name': '正常坐姿', 'action': 'none'}

def _torso_lean_angle(self, pts):
"""前倾角度:肩-髋连线与垂直方向的夹角"""
shoulder = (pts[5] + pts[6]) / 2 # 双肩中点
hip = (pts[11] + pts[12]) / 2 # 双髋中点
torso = shoulder - hip
# 与垂直方向(y轴)的夹角
vertical = np.array([0, 1, 0])
cos_a = np.dot(torso, vertical) / (np.linalg.norm(torso) + 1e-8)
return np.degrees(np.arccos(np.clip(cos_a, -1, 1)))

def _lateral_tilt(self, pts):
"""侧倾角度"""
shoulder = (pts[5] + pts[6]) / 2
hip = (pts[11] + pts[12]) / 2
torso = shoulder - hip
# 在xz平面的投影
horizontal = np.array([1, 0, 0])
cos_a = np.dot(torso[[0,2]], horizontal[[0,2]]) / (
np.linalg.norm(torso[[0,2]]) + 1e-8)
return np.degrees(np.arccos(np.clip(cos_a, -1, 1)))

def _back_angle(self, pts):
"""后仰角度"""
return self._torso_lean_angle(pts) # 负值表示后仰

def _leg_position(self, pts):
"""腿部位置分类"""
ankle = pts[16] # 右踝
hip = pts[12] # 右髋
# 脚高于髋 → 搭在仪表
if ankle[1] > hip[1]:
return 'dashboard'
return 'normal'


# 测试
if __name__ == "__main__":
print("=" * 60)
print("ANCAP 2026-2028 合规验证 - 测试")
print("=" * 60)

# CPD测试
cpd = CPDRequirementValidator()
result = cpd.validate_detection('CPD-01', {
'detected': True, 'detection_time': 7.5,
'confidence': 0.92, 'sensor_type': '60GHz_radar'
})
print(f"\nCPD-01: {result}")

result = cpd.validate_detection('CPD-05', {
'detected': True, 'detection_time': 12.0,
'confidence': 0.78, 'sensor_type': 'UWB'
})
print(f"CPD-05: {result}")

# 安全带测试
sb = SeatbeltMisuseDetector()
pts = np.array([[100, 50], [120, 100], [110, 200], [105, 300]])
result = sb.detect_misuse(pts)
print(f"\n安全带: {result}")

# 姿态测试
oop = OOPPostureDetector()
# 模拟前倾姿态
keypoints = np.random.randn(17, 3) * 100
keypoints[5] = [0, 150, 0] # 左肩前倾
keypoints[6] = [50, 150, 0] # 右肩前倾
keypoints[11] = [0, 50, 0] # 左髋
keypoints[12] = [50, 50, 0] # 右髋
result = oop.classify_posture(keypoints)
print(f"\n姿态: {result}")

各标准关键差异总结

维度 Euro NCAP ANCAP GB(中国国标)
性质 行业评级 行业评级 法律强制
地区 欧洲 澳洲/新西兰 中国
不达标后果 扣分/降星 扣分/降星 不能销售
CPD 2026新增 2026-2028 未明确
安全带 OMS范围 明确要求 未明确
OOP 隐含 明确要求 未明确
接管监测 未来 未明确 强制
触摸屏 无 罚分 无
电池安全 无 穿刺测试 无

关键结论:三大标准各有侧重,IMS需同时满足所有标准才能在全球市场有竞争力。

  • Euro NCAP → 技术先进性
  • ANCAP → 功能完整性(CPD/OOP/安全带更明确)
  • GB → 法规合规性(不达标不能卖)

来源: Australian Car Mechanic, 2026-10-12
ANCAP 2026-2028 Protocol