简介:围绕预期功能安全(SOTIF)的ISO 21448中文版与国标GB/T 43267相关文件,面向智能网联车辆安全工程师、功能安全从业者及标准研究人员,重点回应辅助驾驶与自动驾驶中性能局限、环境感知不准确、算法限制等引起的非故障类安全隐患,给出从场景识别到风险缓解的系统路径。PDF共1个文件,压缩包约40.15MB,内容按标准章节展开,完整覆盖范围、术语定义、SOTIF活动管理与支撑过程,以及功能规范设计、危害识别与风险评估、潜在功能不足与触发条件分析、功能改进、验证和确认等关键流程,同时可与ISO 26262的功能安全框架衔接,便于对照落地。目前已有724人学习,尤其适合需要借助中文国标征求意见稿建立预期功能安全体系或撰写相关方案与评审材料的读者。
1. SOTIF到底解决什么问题:从“功能没问题”到“预期功能也没问题”
传感器没坏、算法没有bug、线束没有短路、控制器没有失效——系统完全按设计规范在运行,但车还是撞了。这是做自动驾驶和辅助驾驶落地的工程师最怕碰到的场景:你检查完所有故障模式,团队熬夜复现了十几轮,最终结论是“系统行为符合设计预期”,可事故报告就摆在桌上。预期功能安全(SOTIF,Safety Of The Intended Functionality)要管的,正是这一类“都符合预期却依然不安全”的灰色地带。它和传统功能安全(ISO 26262)最大的区别在于:后者管故障,前者管“功能本身想得不周全”。
ISO 21448中文版和国内采标文本(标题里提到的GBT 3267即预期功能安全方向的国家标准转化产物)为这项工作提供了可执行的流程框架。适合谁来读?正在做L2+辅助驾驶、AEB、城市导航辅助驾驶等量产项目的系统工程师、功能安全经理、测试验证工程师,以及要给自动驾驶系统做安全评审的安全专家。这篇笔记不聊学术定义,直接按量产项目里的落地路径来拆。
2. ISO 21448与国内标准对标:先分清SOTIF的边界和职责
2.1 SOTIF到底管哪一段:“功能不足”与“故障”的分界线
刚接触SOTIF的人最容易翻车的地方,是分不清它和ISO 26262的职责边界。ISO 26262管的是系统性失效和随机硬件失效:芯片引脚短路、软件数组越界、CAN报文丢帧、看门狗没喂上——这些都是“系统没有按设计意图工作”。而SOTIF管的是“系统按设计意图工作了,但设计意图本身在某个场景下有漏洞”。
举个例子:某款AEB系统在晴朗白天、干燥路面、前车静止的场景下功能完全正常,但在雨天对向车辆溅起水花的瞬间,摄像头把水花误识别成障碍物导致误触发急刹,后车追尾。这里面摄像头没坏,算法也按训练逻辑在推理,模型参数和预期一致——是功能本身对这类物理现象缺乏鲁棒性。这就是SOTIF的管辖范围。
从标准流程来看,ISO 21448给出的分析链路是:定义功能与ODD(运行设计域)→ 危害分析与风险评估(HARA)→ 识别功能不足与性能局限 → 分析触发条件 → 评估风险 → 制定安全措施 → 验证确认。这个链路和ISO 26262的“危害分析→安全目标→安全需求→验证确认”在形式上很相近,但关键词从“故障”换成了“功能不足/性能局限/可合理预见误用”。
这里要强调一个常见误解:SOTIF不是功能安全的替代品,两者是叠加关系。一个系统既要有ISO 26262覆盖的故障安全机制,又要有SOTIF覆盖的功能鲁棒性设计。很多项目把SOTIF理解成“再补一轮测试”,结果既没建场景库,也没做触发条件分析,等到NCAP测试暴露问题才返工,代价极高。
2.2 中文版与ISO 21448文本的差异:术语翻译与落地剪裁
标题里提到ISO 21448中文版和GBT 3267,这里需要说清楚它们的关系。ISO 21448第一版发布之后,国内做了采标转化,形成了推荐性国家标准文本,内容框架与ISO 21448保持一致,但术语翻译和章节编号略有调整。做量产项目时,我一般以ISO 21448原文为技术基准,以中文版做内部评审和跨团队沟通用——因为国内供应商和整车厂之间对接,中文术语能省掉很多理解偏差。
几个关键术语的翻译差异值得注意:
| ISO 21448英文术语 | 中文标准常见译法 | 实际项目中的叫法 |
|---|---|---|
| Intended Functionality | 预期功能 | 目标功能 |
| Functional Insufficiency | 功能不足 | 功能缺陷 / 能力缺口 |
| Triggering Condition | 触发条件 | 触发场景 |
| Reasonably foreseeable misuse | 可合理预见误用 | 可预期误用 |
| Validation | 确认 | 验证 |
有个坑要提醒:很多团队看中文版时把"Validation"直接理解成"功能验证",但SOTIF语境下的Validation是指“针对未知不安全场景的确认活动”,侧重点在“找未知的风险”,而不是“证明需求被实现”。翻译差异导致理解偏差,这在多团队协作时经常引发争论,严重时会影响验收条款的制定。
2.3 先写清功能定义和ODD,否则后面全是糊涂账
SOTIF分析的第一步不是急着列场景,而是把功能定义写清楚。功能定义要包含:系统要实现什么驾驶行为、在什么ODD范围内工作、系统的感知/决策/执行能力边界是什么、有哪些人机交互接口。很多项目在这一步就偷懒,功能描述只有一句话“实现自适应巡航”,结果到了触发条件分析阶段,团队对“系统是否应该在雨夜识别静止车辆”产生分歧——根源就是功能定义没写清楚ODD边界。
ODD的写法建议用结构化属性:道路类型(高速/城市/乡村)、车道线质量(清晰/模糊/无车道线)、光照条件(白天/黄昏/夜晚)、天气(晴/雨/雪/雾)、目标物类型(车辆/行人/骑行者/动物/异形物)、速度范围、交通流密度等。每一条属性都要能对应到系统设计时的性能边界。这些ODD属性直接决定后面场景空间的划分方式。
可合理预见误用的定义也要在这一阶段完成。误用的常见来源:驾驶员过度依赖系统而分心、驾驶员误操作导致系统进入非预期状态、第三方(行人/其他车辆)对系统行为的误判、维护保养不当(传感器被泥污遮挡)。这里有个常见错误:很多团队把“误用”等同于“法规禁止的危险驾驶行为”,这是片面的。可合理预见误用要考量的是:一个普通人在这个功能提供的使用条件下,会不会发生这种行为?如果会,你必须分析。
3. 从HARA到触发条件分析:SOTIF落地的核心工作流
3.1 第一步:危害事件识别与风险接受准则
SOTIF的HARA和ISO 26262的HARA在形式上有相似之处,但对象不同。26262的HARA分析的是“故障导致的危害事件”,SOTIF的HARA分析的是“功能在正常工作时,因为感知/决策/执行能力不足而导致的危害事件”。我习惯的做法是先在系统级列出危害事件清单,然后给每个危害事件打分。
打分维度与ISO 26262类似但不完全相同:严重度S(人员伤亡程度)、暴露率E(目标车辆处于该场景的时间比例)、可控性C(驾驶员或交通参与者能否避免事故)。在SOTIF里,E的计算更复杂,因为它依赖ODD内真实交通场景的分布频率,这需要场测数据或真实路采数据作为输入,不能靠拍脑袋。
写一个常见做法的示例:某项目评估“AEB在交叉路口对横向穿行行人的识别能力不足”这一危害事件,场景定义为:城市道路、白天、干燥路面、行人从右侧横向穿行、车速50km/h。打分时S=3(可恢复伤害)、E=2(城市工况下出现频率中等)、C=3(普通驾驶员难以规避),综合风险等级为高风险。随后这个危害事件进入安全目标分配阶段。
这里要注意,SOTIF的风险接受准则有两个层面:一是单个危害事件的风险是否可接受,二是系统整体在ODD内的残余风险是否可接受。后者的判断通常需要与实际事故统计、NCAP测试结果、市场反馈做对标,不能只看分析文档。
3.2 第二步:功能不足与性能局限的系统性识别
这是SOTIF分析里工作量最大的一步。常见做法是把系统按感知、决策、执行三个层级拆开,逐层找能力边界。
感知层功能不足的高发区:目标检测在不同光照/天气/遮挡下的性能衰减、传感器融合策略在目标分离与合并时的误判、感知延迟在高速场景下导致的制动距离不足。决策层功能不足的高发区:行为预测模型对异常驾驶行为的预测失效、规划算法在复杂拓扑(环岛/匝道分叉/无车道线路口)下的不确定性、安全策略在目标损失追踪后的降级行为不合理。执行层功能不足的高发区:制动系统响应时间与标定值的偏移、转向系统在低附着路面的控制增益不足、车辆动力学模型在极端载荷下的偏差。
每个功能不足都要关联到场景,这就引出一个关键概念:触发条件。触发条件是导致功能不足被激发的场景要素组合。同一功能不足可能对应多个触发条件,比如“感知模型对逆光场景下行人漏检”这一不足,触发条件可能是“太阳高度角X度+道路方向正东+时间07:30-08:30+路面反射率高”。触发条件分析的深度决定了后续场景库构建的质量。
这块做得好的项目有一个共同特征:功能不足清单不是从测试问题单里翻出来的,而是从系统架构设计文档逐功能模块推导的。我的经验是组织感知、决策、执行各模块负责人分别输出“能力边界声明”,内容包括:本模块在哪些条件下性能会明显下降、下降幅度有多大、是否有量化指标。然后由系统团队汇总成SOTIF分析输入。这个方法比直接看测试问题单更早发现问题,因为是设计阶段的能力声明,而不是测试完成后的缺陷补救。
3.3 第三步:场景空间划分与四个象限判断
ISO 21448里有一个核心的分类方法,把场景空间分成四个象限:已知安全场景、已知不安全场景、未知不安全场景、未知安全场景。SOTIF的工作重点,是把未知不安全场景转化为已知不安全场景,然后通过安全措施把它变成已知安全场景,同时尽量减小未知安全场景的占比。
落地时我一般这样操作:先基于ODD属性组合出全场景空间,再基于触发条件分析结果标出已知不安全区域,然后通过路采数据、仿真遍历、边缘场景搜索技术去挖掘未知不安全区域。这里有一个量化技巧:用场景覆盖度矩阵来管理进度。横轴是ODD属性维度(光照/天气/道路类型/目标物类型/运动状态),纵轴是各维度的取值组合,每个格子标记状态:已覆盖/已覆盖且验证通过/未覆盖/不适用。
矩阵的好处是让管理层能看到SOTIF验证的进展,而不是只看到一堆测试报告。我在某次项目汇报里用这个矩阵展示“夜间雨天对向远光灯场景”尚未覆盖,管理层当场拍板增加该场景的路采计划——如果只给文字报告,说服力会弱很多。
3.4 安全目标与验收指标的制定逻辑
SOTIF的安全措施分三类:改进功能设计(提升感知算法鲁棒性、增加传感器冗余)、限制运行条件(明确ODD边界并在超出时安全降级)、增加驾驶员监控(DMS)和提示机制。
安全目标要量化才能验收。举例:针对“AEB对横穿行人漏检”的功能不足,安全目标不能只写“提高行人召回率”,要写成“在ODD范围内,行人召回率不低于99.9%,且漏检目标在50ms内被第二路径(如雷达)捕获”。有了量化的安全目标,验证活动才知道要做到什么程度才算够。
选定技术指标时有两个注意点:第一,指标要和场景绑定,脱离场景谈召回率毫无意义——同一模型在白天城市路口和夜间高速上的召回率可能差好几个百分点;第二,要有统计置信度要求。功能安全领域常用置信度区间来评估验证充分性,SOTIF也一样,尤其是对已知不安全场景的验证,样本量要足够大到能证明残余风险低于接受准则。
4. 避坑:SOTIF分析中常见的5个致命误判
这个章节写的都是我实际见过或踩过的坑,按“现象→原因→解决”的结构整理。
4.1 把功能不足当成随机硬件故障来管
现象:某项目在分析AEB误触发问题时,团队用ISO 26262的FMEA方法逐件排查传感器硬件故障,花了两周没找到根因。后来发现是雨天水花导致摄像头误识别。跳进这个坑后,整个团队的排查方向完全偏了。
原因:团队成员习惯性套用功能安全的方法论,对“系统正常但能力不足”的分析路径不熟悉。SOTIF需要单独的触发条件分析链路,硬塞进FMEA流程里只会把问题掩埋。
解决:在项目启动时明确规定排查路径:先判断是故障还是功能不足,如果是功能不足,直接启动SOTIF流程,不要走故障树/DFMEA。建议在问题分析流程里加一道门禁:任何安全问题,第一步必须回答“系统是否在按设计意图运行”,答案决定走哪条分析链路。
4.2 触发条件分析只盯天气和光照,漏了道路拓扑
现象:某项目做了大量雨天、夜晚、逆光的触发条件分析,但漏了“无车道线路口”和“环岛”两类拓扑场景。实车测试时在这两个场景里规划模块频繁失效,安全员被迫接管。
原因:团队里感知背景的人多,触发条件分析自然偏重在感知性能衰减方向;规划控制方向的能力不足场景没有被系统识别。
解决:触发条件分析必须按感知-决策-执行三层分别输出,而且决策层和执行层的分析不能依赖感知团队的产出。建议请规划控制模块的负责人专门做一轮“拓扑场景能力边界”分析,覆盖路口形式、车道线质量、环岛、匝道分合流、施工改道等结构性能边界。
4.3 仿真覆盖率当验证充分性,实车翻车
现象:某项目仿真里程达到百万公里级,覆盖矩阵显示所有ODD属性组合都跑过仿真。但实车测试第一天就发现,仿真里没建模的传感器安装位置差异导致探测盲区,AEB在实际安装条件下对低矮障碍物漏检。
原因:仿真环境对传感器物理特性的保真度不够,覆盖矩阵只保证了“场景参数覆盖”,没有保证“物理特性覆盖”。
解决:场景覆盖矩阵里增加一列“物理效应建模状态”,区分哪些要素是精确建模、哪些是简化建模、哪些未建模。SOTIF确认活动必须以实车测试为准,仿真只能做预筛选。定量做法:对高风险场景,强制一定比例的实车验证里程,且场景要素要按优先级做真车复现。
4.4 误用分析变成法规清单核对
现象:某项目安全团队把误用分析的产出写成了一份“驾驶员不应做事项清单”,列了20条禁止行为,然后逐条说明系统如何忽略这些误操作。评审时被专家质疑完全没有考虑误用的本质原因。
原因:把可合理预见误用等同于“故意违规”,没有从用户心理和产品交互角度去分析。实际上很多误用是功能设计给了用户犯错的暗示——比如仪表盘上有个按钮看起来像“变道确认”,实际却是“取消辅助驾驶”。
解决:误用分析要结合人因工程做,关注三个要素:功能提供的信息是否足够清晰、系统行为是否符合用户的心智模型、用户在时间压力下的操作是否符合直觉。常见做法是找真实用户做可用性测试,观察用户在不读说明书时的操作行为,用观测结果反向优化功能设计。
4.5 忽略感知自信度过高的风险
现象:某项目感知算法输出的confidence score(置信度)在99%以上,但目标框实际偏移了1.5米。融合模块信任了高置信度结果,路径规划按错误位置避让,差点蹭到护栏。
原因:置信度评估只反映了模型在训练分布内的匹配程度,不代表真实世界中的空间精度。模型对分布外数据可能给出过高置信度,单靠阈值判断会产生假安全感。
解决:在感知输出中引入独立的空间不确定性估计,与置信度分开管理。融合模块不能只依赖置信度做权重分配,必须结合传感器物理特性(如激光雷达的点云密度、相机的基线距离)来估算空间误差边界。SOTIF分析中要把“置信度校准质量”作为功能不足的一项评估指标,并设计置信度与物理误差不一致时的降级策略。
5. 场景库驱动的验证闭环:参数设计与覆盖度评估
5.1 场景分类与参数化表达:从ODD到可执行用例
场景是SOTIF验证的基石。我采用的场景分类体系分成三层:第一层是功能层,描述驾驶任务和道路拓扑(如“城市道路直行接近信号灯路口”);第二层是逻辑层,描述目标物行为和相对关系(如“前车静止、自车以60km/h接近”);第三层是具体层,绑定具体参数值(如“自车速度60km/h、前车距离80m、路面附着系数0.8、光照30000lux”)。
参数化场景是构建SOTIF测试用例的核心方法。一个逻辑场景通过参数化生成一组具体测试用例,参数范围由ODD属性边界决定,边界值和典型值都要覆盖。比如“前车静止”场景的参数空间:自车初始速度区间[30,120]km/h、距离区间[20,150]m、相对横向偏移区间[-2,2]m、路面附着系数区间[0.3,0.9]。每个参数的采样密度取决于它对安全目标的影响灵敏度,不能让所有参数都密集采样——组合爆炸会直接拖垮测试资源。
这里分享一个实际用过的参数采样策略:先做灵敏度分析,用仿真批量跑出各参数对最坏后果的影响曲线,然后对高灵敏度参数用正交抽样(每个边界加中值),对低灵敏度参数用最小集(中值加单侧边界)。这样能把一个逻辑场景的用例数量从几百个压缩到几十个,同时保持关键边界覆盖。
5.2 从路采数据到边缘场景注入:构建SOTIF场景库的常见做法
场景来源主要有四个:真实路采数据切片、标准法规场景(如NCAP、Euro NCAP的AEB/ELK测试场景)、基于ODD属性的仿真生成、事故数据反推场景。前两者占场景库主体,后两者主要用来扩展边缘覆盖。
真实路采数据的处理链路一般是:数据采集(多传感器同步)→ 数据切片(按场景切分)→ 场景标注(目标物类型/位置/速度/道路拓扑/气象光照)→ 场景泛化(切出逻辑场景)→ 参数化。每一步都有坑:数据切片的粒度要按目标物交互事件来定,不能按时间等分;场景标注的工作量极大,需要半自动化工具辅助;场景泛化要避免过拟合单次路采数据——同一个物理场景,换了车道线磨损程度,逻辑场景是否变化?定义场景泛化规则时,要把不敏感属性(如路面纹理细节)和敏感属性(如车道线可见性)分开处理。
边缘场景注入的做法是针对已知的薄弱点:比如感知模型在隧道出口的明暗突变场景性能差,就在仿真里构造一系列隧道路段、不同出洞口朝向、不同太阳高度角的测试用例,再加上传感器物理建模的噪声干扰。注入场景的设计依据应当是触发条件分析的结果,不是随机生成。
5.3 覆盖度量化:怎么证明场景库验证得足够充分
这是SOTIF整个流程里最容易被挑战的部分:怎么证明“足够安全”。标准给不出一个精确的量化公式,但我们需要可汇报、可审计的量化结果。
我的做法是用三级覆盖度指标组合来评估:
| 指标 | 计算方式 | 通过准则 |
|---|---|---|
| 参数覆盖度 | 已测试参数组合 / 参数空间总组合 | 关键参数边界覆盖率100%,整体不低于90% |
| 功能覆盖度 | 已验证功能项 / 功能定义中的功能项 | 100% |
| 场景簇覆盖度 | 已测试场景簇 / 触发条件分析识别的场景簇 | 高风险场景簇100%,中风险不低于95% |
参数覆盖度要结合“最坏情况边界”来定义,不能只看平均值。比如自车速度参数覆盖了30到120km/h,但90km/h以上的样本只测了3个,这不算充分覆盖。场景簇覆盖度则依赖触发条件分析的完整度,如果分析阶段漏了某个场景簇,验证阶段再努力也发现不了盲区。
有一个务实技巧:在项目后期做一个“SOTIF验证与安全目标回溯表”,把每个安全目标关联到的所有场景、测试用例、测试结果、残余风险评估逐行列出。这份表格在功能安全评审会上的说服力比任何PPT都强,因为它是量化闭环的直接证据。
6. 被低估的进阶技巧:用剪裁表控制SOTIF实施的工作量
SOTIF的标准流程全量实施,对于一个只有三五个功能系统工程师的项目组来说,工作量是惊人的。我见过的翻车项目,往往不是安全分析做得差,而是流程太重导致团队疲于奔命,最后分析文档都是填充式写的,价值低还要被评审专家挑毛病。这里分享一个剪裁思路:用风险等级和ODD复杂度来决定SOTIF流程实施深度。
剪裁依据两个维度:功能的风险等级(由HARA综合评分决定)和系统的ODD复杂度(由ODD属性边界数量和触发条件分析结果决定)。组合出四种实施深度:
| 风险等级 / ODD复杂度 | 高ODD复杂度 | 低ODD复杂度 |
|---|---|---|
| 高风险功能 | 全量实施:完整场景库+实车验证+量化安全目标 | 重点实施:触发条件分析+关键场景验证 |
| 低风险功能 | 标准实施:场景库+仿真验证为主 | 精简实施:功能不足分析与安全目标即可 |
高复杂度、高风险的功能,比如城市导航辅助驾驶,全量流程没有捷径。但低复杂度、低风险的功能,比如基于超声波的泊车辅助,完全没必要按自动驾驶的验证强度去做场景库。剪裁的原则是“风险高的地方做翔实,风险低的地方做到位”,而不是每个功能模块都套同样的模板。
最后分享一个血泪教训:做SOTIF验证时,别把所有资源都砸在仿真上。仿真能高效暴露已知不足,但对未知不安全场景的发现能力有限——它的边界受限于建模者的想象力。留出至少20%的验证预算给实车路采和开放道路测试,让真实世界帮你找未知盲区。这在所有SOTIF项目里都是通用原则,越早意识到,返工成本越低。希望帮到你。
本文还有配套的精品资源,点击获取