3、危险识别方法论:HAZOP在自动驾驶中的应用、STPA方法入门

大家好,我是你们的老朋友。今天我们来聊聊危险识别方法论。说实话,这是SOTIF里最核心、也最考验功力的部分。

你想想看,自动驾驶系统那么复杂,怎么才能把潜在的危险都找出来?靠拍脑袋肯定不行。我们需要一套系统化的方法。我个人最常用的,就是HAZOP和STPA。今天就把这两把刷子教给你们。

3.1 HAZOP在自动驾驶中的应用

HAZOP,全称是Hazard and Operability Study。这玩意儿最早是化工行业搞出来的,后来被我们汽车行业“借”过来用。说白了,就是一群人坐在一起,对着系统设计图,用一套固定的“引导词”去“找茬”。

核心思想是什么?

就是假设系统里每个参数都会“跑偏”。比如,本该是“正常”的,它变成了“无”、“多”、“少”、“相反”等等。然后我们分析,这种跑偏会带来什么后果。

HAZOP的引导词(部分)

引导词 含义 自动驾驶场景举例
无 (No) 设计意图完全未实现 前方有障碍物,但AEB(自动紧急制动)没有触发制动
多 (More) 数值比设计值大 自车速度比预期快了20km/h,导致跟车距离过近
少 (Less) 数值比设计值小 转向角度比预期小了5度,导致车辆偏离车道
相反 (Reverse) 与设计意图完全相反 驾驶员踩油门,系统却执行了制动
部分 (Part of) 只实现了部分功能 车道保持只修正了部分偏移,车辆还是压线了

重要提示:HAZOP不是一个人能干的活。它需要一个跨职能团队,包括系统工程师、软件工程师、测试工程师、安全工程师。大家坐在一起,对着P&ID图或者系统架构图,一条一条过。我曾经在一个项目里,光HAZOP就开了两周的会,每天从早到晚。虽然累,但效果确实好。

在自动驾驶中怎么用?

我建议从三个层面去分析:

  1. 感知层:传感器数据会出什么问题?比如,摄像头被遮挡(无)、雷达多径反射(多)、激光点云稀疏(少)。
  2. 决策层:规划算法会出什么偏差?比如,路径规划失败(无)、换道意图过于激进(多)、避让幅度不足(少)。
  3. 执行层:执行器会怎么失效?比如,制动压力建立失败(无)、转向过度(多)、油门响应延迟(少)。

个人小技巧:做HAZOP时,别光盯着“功能失效”。也要关注“非预期功能”。比如,系统在正常工作时,会不会因为环境变化而产生危险?我记得有一次,我们分析一个泊车功能,发现当车位线被积雪覆盖时,系统会“误认为”没有车位,然后突然加速离开。这就是一个典型的SOTIF问题。

3.2 STPA方法入门

STPA,全称是System-Theoretic Process Analysis。这名字听着挺唬人,对吧?其实它的核心思想很简单:事故不是因为组件失效,而是因为控制不当。

你想想看,自动驾驶系统里,有大量的“控制回路”。比如,感知模块告诉决策模块“前方有车”,决策模块告诉执行模块“减速”。如果这个控制回路出了问题,比如信息传递错了,或者控制指令下错了,事故就发生了。

STPA的四个基本步骤:

  1. 定义事故:明确哪些是我们绝对不能接受的事故。比如,车辆与行人碰撞、车辆偏离道路。
  2. 建立控制结构:画出系统里谁控制谁。比如,感知模块 → 决策模块 → 执行模块,还有驾驶员 → 人机交互界面 → 系统
  3. 识别不安全控制行为:分析每个控制行为,在什么情况下会变得不安全。这是STPA的核心。
  4. 识别致因场景:找到导致不安全控制行为发生的具体原因。

不安全控制行为的四种类型:

类型 描述 自动驾驶场景举例
1. 提供了不该提供的控制 在不需要的时候,系统发出了控制指令 前方无车,系统却触发了AEB,导致后车追尾
2. 未提供需要的控制 在需要的时候,系统没有发出控制指令 前方有静止车辆,系统没有发出制动指令
3. 控制指令错误 控制指令本身是错误的 需要减速5m/s²,系统却发出了减速10m/s²的指令
4. 控制指令时序错误 控制指令发出得太早或太晚 变道指令发出得太晚,导致车辆与旁边车辆发生碰撞

避坑指南:我曾经犯过一个错误,就是只关注了“功能”层面的控制行为,忽略了“人机交互”层面的控制。比如,系统要求驾驶员接管,但驾驶员因为疲劳没有及时响应。这就是一个典型的“未提供需要的控制”。所以,做STPA时,一定要把“人”也当作一个控制组件放进去。

STPA和HAZOP怎么选?

我个人习惯是:

  • HAZOP更适合分析具体的、物理的系统,比如制动系统、转向系统。它比较“接地气”,容易上手。
  • STPA更适合分析复杂的、软件密集的系统,比如自动驾驶的决策规划模块。它更能抓住“控制逻辑”层面的问题。

当然,两者不是互斥的。我经常在同一个项目里,先用STPA做顶层分析,再用HAZOP做底层细节分析。效果很不错。

总结一下:HAZOP和STPA,就像两把不同的螺丝刀。一个适合拧十字螺丝,一个适合拧一字螺丝。关键是要知道什么时候用哪一把。嗯,这里要注意,工具只是手段,最终目的是把危险找出来。别为了用工具而用工具。

好了,今天的内容就到这里。下一章,我们会聊聊怎么把这些识别出来的危险,转化成具体的测试用例。敬请期待。