陈君毅 周堂瑞 邢星宇 熊璐
(同济大学,上海 201804)
安全性分析与验证是汽车开发过程中的重要环节。依据危险来源的不同,自动驾驶汽车的安全问题可分为功能安全、预期功能安全和信息安全[1]。国际标准化组织(International Organization for Standardization,ISO)颁布的ISO 26262《道路车辆功能安全》[2]为汽车全生命周期内的功能安全设计提供了指导。2019年初公布的ISO/PAS 21448《道路车辆预期功能安全》[3]则补充了自动驾驶系统的安全设计指导[4]。
根据现有安全标准,汽车开发概念阶段中危害分析和风险评估最为关键,需要系统地对车辆潜在风险进行识别和评估。传统安全分析方法中,故障树分析(Fault Tree Analysis,FTA)和失效模式及效应分析(Failure Mode and Effect Analysis,FMEA)关注具体的软、硬件失效或故障[5],无法涵盖预期功能安全领域的问题。危险与可操作性分析(Hazard and Operability Analysis,HAZOP)基于对偏离设计目的的偏差分析识别危险,其导则[6]提供了标准流程和引导词,然而现有引导词并不完全适用于自动驾驶系统[7],且缺乏系统的引导词生成方法,导致HAZOP 在自动驾驶汽车安全分析上欠缺可行性。
Nancy Leveson[8]于2011 年提出基于系统理论的系统理论过程分析(Systems-Theoretic Process Analysis,STPA)方法,将安全视为控制问题,目标是识别出那些可能导致危险发生的不充分的控制,通过安全约束使风险降低到可接受的程度[9]。该方法同时考虑了软、硬件失效以及性能局限等非失效引起的危险,因此覆盖了功能安全和预期功能安全两个领域。近年来,研究人员[10-13]开始尝试应用STPA 对自动驾驶汽车进行安全分析,初步验证了STPA方法用于自动驾驶汽车安全分析的可行性。然而现有研究分析对象多为某一系统[10-11]或功能较为单一的低级别自动驾驶汽车[12-13],对于复杂的SAE L3级及以上的自动驾驶汽车,STPA进行安全分析的适用性还有待验证。同时,由于STPA 方法与标准流程并非完全一致,如何改进STPA 方法使之能满足现有标准流程要求,目前仍缺少相关探讨和具体实践。
基于以上背景,本文提出一种在现有标准框架下,基于STPA 的自动驾驶汽车安全分析方法,并在某SAE L3级自动驾驶清扫车上进行了应用实践。
STPA 分析从具体事故出发,推导得到系统级安全约束,即为避免或减轻危险带来的伤害,对系统行为安全性提出的要求。从控制结构识别不安全控制行为是该方法的核心。依据现有功能安全标准,汽车开发概念阶段的最终输出是基于一定安全目标提出的功能安全要求。
STPA分析流程[8]和汽车开发概念阶段主要流程[2]见图1,通过对比以上两个分析流程,STPA 方法中基于系统控制结构的分析为标准流程中的危险事件识别提供了具体的方法,且对于不安全控制行为的原因分析可以为后期功能安全要求的导出提供依据。因此,本文提出基于STPA 的自动驾驶汽车安全分析方法,具体流程如图1所示。
图1 基于STPA的安全分析方法
该方法分为3 个流程,共7 个步骤,各步骤具体任务为:
a.第1步:相关项定义,明确分析对象的具体功能及其运行场景,作为后续工作的基础。
b.第2~6 步:危害分析和风险评估。首先基于已有信息,建立系统控制结构,梳理各功能的控制行为;其次,基于一定的输入条件,识别不安全控制行为;然后,将不安全控制行为与具体运行场景相结合,得到整车级危险事件,并利用标准中汽车安全完整性等级(Automotive Safety Integration Level,ASIL)对每项危险事件从暴露率、严重度和可控性3 个角度进行评估,得到风险较高的危险事件;最后,为避免以上危险事件,提出整车级安全目标。
c.第7步:功能安全概念推导,为实现整车级安全目标,提出功能安全要求。将要求分为a、b 两部分,首先分析各种不安全控制行为的原因,然后结合各功能的安全目标,得到具体的针对子系统或软、硬件的功能安全要求。
与ISO 26262一致,在系统和软、硬件后续开发过程中,基于该安全分析方法得到的功能安全要求,可以分配于不同的组件,以得到具体的可实现的技术安全要求,并为后续测试验证提供理论依据。
将本文提出的自动驾驶车辆安全分析方法应用于某开发中的SAE L3级自动驾驶清扫车。
本文所分析的自动驾驶清扫车分为有人驾驶和自动驾驶两种模式,全程配备驾驶员。其自动驾驶模式下的设计目标为在封闭园区内主动规划路线行驶,并在行驶过程中识别障碍物和行人,实现主动避让。基于以上设计目标,明确清扫车自动驾驶模式下的功能和对应场景要素如表1 所示。由于清扫路面功能不涉及安全问题,后续分析中不再讨论。
基于以上具体功能,建立清扫车的控制结构,如图2 所示。由于自动驾驶控制单元(Intelligent Control Unit,ICU)是清扫车实现其自动驾驶功能的核心,且清扫车无多传感器融合算法,故ICU是本次安全分析的重点。本文后续即以围绕清扫车ICU 的分析为示例展开叙述,环境传感器和执行机构部分不展开讨论。
建立系统控制结构后,结合具体控制信息,可得到清扫车各功能的ICU 具体控制行为及相应的输入、输出,结果如表2所示。
表1 清扫车自动驾驶模式下功能及运行场景
图2 自动驾驶清扫车控制结构
表2 清扫车各功能ICU控制行为及对应输入输出
针对以上各具体控制行为,分析识别不安全控制行为。不安全控制行为基本分类[8]如表3所示。其中被控对象需要控制时提供控制还存在3类不安全控制行为,即错误的控制提供时间U3、错误的控制持续时间U4和错误的控制信号U5。
表3 不安全控制行为分类
此外,不安全控制行为是在一定输入条件下的,而这些输入条件即对应一定的环境条件。根据表2 和表3,可得到清扫车ICU各功能的不安全控制行为。
系统的不安全控制行为将会导致车辆非预期行为,在特定运行场景下导致危险事件。由图2 可知,ICU依据环境传感器、定位系统等的具体输入决定其控制行为,而这些系统的输入即对应一定的环境条件。依据表2中各控制行为触发输入条件,可以得到具体运行场景,结合各功能不安全控制行为,进而得到整车级危险事件。
开发团队对清扫车在包括弯道、直道及不同障碍物类型等多种工况下进行了共100余次测试,测试过程中由自动驾驶系统导致的危险共出现26次。通过分析危险发生场景及系统状态,26次危险事件对应5类不安全控制行为的数量及比例如表4所示。结合该测试结果,可以对本文方法所提出的危险事件的有效性与合理性进行验证。
表4 测试过程中各类不安全控制行为对应危险事件数量
以自动驾驶清扫车避障功能为例,分析得到5类不安全控制行为对应危险事件如表5所示。
表5 避障功能危险事件及对应不安全控制行为
结合具体测试结果,对应危险事件H4,测试中出现清扫车检测到障碍物并成功开始避障绕行后,由于失去障碍物信息而直接规划路径回原车道行驶,导致与障碍物碰撞的情况,如图3所示。而对于危险事件H5,测试中出现清扫车在遇纸箱等大型障碍物进行避障时与障碍物发生剐蹭的情况,如图4所示。以上结果验证了危险事件分析的合理性和有效性。
依据ISO 26262,采用ASIL对每项危险事件从暴露率、严重度和可控性角度进行评估,据此可以筛选出风险大、必须采取措施避免或控制的危险事件。
图3 清扫车避障未完成情况栅格地图
图4 清扫车避障过程中与障碍物发生剐蹭
由于清扫车在运行过程中,行人、障碍物和其他车辆出现的可能性都较高,各危险事件在这些场景下均有可能导致事故,故所有事件的暴露率评级均取最高E4;由于清扫车自动驾驶时设计速度慢(自动驾驶模式下行驶速度不超过20 km/h),即使发生事故,也不会对相关人员造成较严重伤害,故各危险事件严重度最高为S1;同样由于清扫车速度慢,且车上有驾驶员随时观察周围环境和清扫车状态,危险事件发生后驾驶员有较长反应时间来采取措施,故各危险事件可控性最高为C2。由此,清扫车各危险事件ASIL评级最高为A级,可认为整体安全风险较低。对于ASIL等级为QM的危险事件,后续分析中不再考虑。
为了避免或减轻车辆危险事件造成事故或伤害,提出对应的整车级安全目标。本文将安全目标表述为某一功能的目的,即在某一条件下,车辆应该实现的对应功能,并达到一定效果。对于以上分析得到的清扫车各危险事件,推导得到自动驾驶模式下的相应安全目标。
为实现以上安全目标,本文提出通过结合对不安全控制行为的原因分析得到具体的功能安全要求。原因分析既可以从系统结构和控制原理展开,也可以结合实际测试进行。对于自动驾驶汽车的不同不安全控制行为,其引发原因有一定的相似性,主要包括:硬件失效等造成的信号丢失、时延等;算法计算出错造成输出错误的控制指令;环境干扰导致传感器错误识别等。其中,硬件失效和算法计算错误属于功能安全问题,而环境干扰则属于预期功能安全问题。依据各引发原因,可以提出更加有针对性的功能安全要求。
本文以表2 中清扫车避障功能为例,针对ICU 避障功能控制行为,具体展示以上各步骤的分析结果,如表6所示。
表6 避障功能安全分析
综合清扫车系统各功能分析中不安全控制行为的原因可以发现,由于ICU是集成在开发平台上的单一硬件,其失效导致的危险事件在现有缺少监控模块的系统结构下是难避免。因此,本文还提出了对各传感器和ICU 输出信号以及ICU 运行环境实时监测的功能安全要求。对于清扫车所用ICU而言,运行环境中温度对其影响最大。为此,需引入温度传感器对ICU进行实时监测,以在温度异常时系统及时感知并采取提醒或降低功耗等措施。同时,新增系统管理模块实时接收分析各输入、输出信号状态,确保当ICU或传感器输出异常时,直接控制清扫车减速停车,提醒驾驶员并尝试重启驾驶脑。该模块是独立于ICU的单独硬件,其控制指令相对ICU有更高优先级。以上新增模块及其相应输入、输出如图5所示,基于此可对清扫车控制结构进行改进。
图5 新增模块及相应输入、输出
在识别危险事件的过程中还可以发现,由于清扫车各功能涉及的运行场景可能出现重复的情况,为避免某一场景下多功能触发引起危险,还需考虑多种功能的优先级问题,例如,当清扫车前方同时有障碍物和行人时,ICU应控制车辆停车鸣笛以警示、避让行人而非继续规划避障绕行道路。
汇总所有分析结果,本文共提出3方面功能安全要求:
a.硬件功能安全要求:ICU应有足够的硬件配置、适宜的运行环境并稳固安装;ICU应有充足且稳定的供电。
b.软件功能安全要求:仅在规定区域、条件下启动某一功能;减速停车有最高优先级;保障各行驶模式下与路沿、车道线、轨迹点的距离和误差以及避障模式下与障碍物的安全距离;实时显示GPS 信号状态,并在GPS信号弱时提醒驾驶员。
c.新增监测和系统管理模块:实时监控各传感器和ICU的输出,异常情况(电压、电流异常,以及无输出或卡死、输出延迟等)及时提醒驾驶员并控制车辆减速停车;实时监控ICU运行温度,异常情况提醒驾驶员并控制车辆减速停车,同时尝试重启驾驶脑;实时监控车辆状态,包括电池电量,电量低于20%时及时提醒驾驶员。
本文提出一种结合STPA方法与现有安全标准流程的自动驾驶汽车安全分析方法,基于不安全控制行为识别危险事件,进而推导得到功能安全要求。该方法在自动驾驶清扫车上的应用实践表明,该方法可以同时分析功能安全和预期功能安全问题,提出包括硬件、软件和系统模块改进等3方面功能安全要求,验证了该方法进行高等级自动驾驶汽车安全分析的可行性和有效性。
本文在应用STPA 方法进行不安全控制行为分析时,由于控制行为集中体现为速度和转角控制,无法体现循迹、避障在内的多种功能的具体差异,仅简单涉及了多功能之间的优先级问题。后续研究将展开分析各功能切换和过渡过程中的安全风险。