3. 危险行为识别:实车验证中的常见危险行为与触发条件

实车验证做到一定阶段,你会发现一个规律:大部分危险行为其实就那几类。我这些年跑过的测试里程加起来也有小十万公里了,踩过的坑、见过的险情,归纳下来无非是感知漏检、决策误判、执行偏差这三条主线。

这一章,咱们就掰开揉碎聊聊:危险行为长什么样?什么条件下会冒出来?最终会导致什么危害?

核心观点:危险行为不是随机发生的。每个危险行为背后,都有一条清晰的触发条件→系统失效→危害事件的因果链。找到这条链,SOTIF场景设计就成功了一半。
危险行为识别知识框架 感知类危险行为 决策类危险行为 执行类危险行为 触发条件示例 传感器遮挡 / 光照突变 目标物特征退化 触发条件示例 场景歧义 / 预测冲突 ODD边界模糊 触发条件示例 执行器响应延迟 系统降级不完整 碰撞 / 碾压 急刹 / 追尾 偏离车道 / 侧翻 识别路径:危险行为 → 触发条件 → 危害事件,逐层拆解 每个节点都要在实车验证中设计对应的SOTIF场景来覆盖

3.1 感知类危险行为:系统「看不见」或「看错」

感知出问题,说白了就是车没「看见」该看见的东西,或者「看错了」。这是实车验证里最常见、也最难穷举的一类。

3.1.1 漏检:目标物存在但系统未识别

漏检的典型场景我列几个,你对照着想想自己的测试用例里有没有:

  • 小目标漏检:比如路中间一个掉落的轮胎、一个锥桶、一只横穿的小动物。摄像头像素不够、雷达回波弱,系统直接忽略。
  • 部分遮挡目标:行人从停着的公交车头前突然走出,车辆只看到上半身——很多系统在这个场景下会「丢帧」。
  • 低对比度目标:灰色水泥路上的灰色石墩、白色雪地上的白色行人。我在北方冬季测试时就遇到过,雪地里的行人,激光雷达点云稀疏,摄像头也几乎分不清。
  • 极端光照:进出隧道瞬间、逆光、夜间无路灯路段。摄像头动态范围不够,直接「瞎」一两秒。
避坑提醒:我曾经在高速测试中遇到一个场景——前方货车掉下一块篷布,灰色篷布落在灰色路面上,系统全程没有报警,直到测试员人工接管。后来复盘发现,感知模型训练集里缺少「路面上的软性遮挡物」这类样本。这个教训告诉我们:漏检的触发条件往往藏在训练数据的盲区里。

3.1.2 误检:系统「看见」了不存在的东西

误检的危害有时候比漏检还大。为什么?因为系统会基于错误的目标做出错误的决策。

误检类型 典型触发条件 实车表现
鬼影误检 路面水渍反光、桥下阴影边界 系统识别为障碍物,触发急刹
广告牌/海报误检 大型广告牌上的人像/车辆图案 系统误认为真实目标,减速或变道
隧道出口误检 隧道出口的亮斑被识别为前车尾灯 系统跟「假目标」保持车距,车速异常
雷达多径反射 隧道内、高架桥下、金属护栏旁 雷达检测到虚假目标位置,导致误制动

我建议你在设计SOTIF场景时,专门建一个「感知对抗库」——把各种容易引发误检的环境条件组合起来,形成专项测试用例。

3.2 决策类危险行为:系统「想错了」

感知没问题,目标都看见了,但决策层做出了错误的判断。这类问题在实车验证中往往更隐蔽,因为系统「看起来在正常工作」。

3.2.1 行为预测错误

系统预测其他交通参与者的意图,但猜错了。举个例子:

  • 行人站在路边看手机,系统预测他会继续停留,结果他突然起步横穿。
  • 相邻车道车辆打了转向灯但未立即变道,系统以为他要变道于是减速,结果对方又关掉了转向灯。
  • 自行车在路口减速,系统预测他会停车,结果他只是减速观察然后继续骑行。

这类问题的触发条件,说白了就是人类行为的不确定性。你想想看,连人类驾驶员都经常猜错其他司机的意图,何况是算法?

3.2.2 路径规划冲突

多目标博弈时,系统陷入「死锁」或做出反直觉的路径选择。我遇到过这样一个案例:

真实案例:某次城市道路测试,车辆在无保护左转路口遇到对向直行车辆。系统反复计算:前进→冲突→刹车→再前进→再冲突。最终在路中间停了将近4秒,直到对向车鸣笛通过。这个场景的触发条件是:对向车流间隙刚好处于系统「可接受」的临界值,导致决策震荡。

3.2.3 功能边界误判

系统对自己的能力边界认知不清。明明已经超出ODD(运行设计域),但系统没有及时发出接管请求,或者发出了但留给驾驶员的反应时间不够。

常见的触发条件:

  • 道路曲率逐渐增大,系统没有提前减速,直到弯中才发现「过不去了」。
  • 天气从晴朗逐渐转为小雨,雨量传感器触发阈值设置不合理,系统在「可用」和「不可用」之间反复切换。
  • 高精地图数据陈旧,前方施工改道,系统仍按旧地图规划路径。

3.3 执行类危险行为:系统「做不了」或「做不对」

决策做完了,指令发出去了,但执行层没跟上。这类问题在实车验证中往往和硬件、通信、时间相关。

3.3.1 响应延迟

从决策到执行,中间有太多环节可能引入延迟:

  • 通信延迟:CAN总线负载高时,制动指令可能延迟几毫秒到几十毫秒。别小看这几毫秒,60km/h车速下,50ms延迟意味着近1米的制动距离差异。
  • 执行器响应:线控制动系统的建压时间、转向电机的响应时间,在低温或低电量条件下会显著变差。
  • 系统降级:某个ECU故障触发降级模式,降级后的控制周期变长,响应变慢。
测试技巧:我习惯在实车验证中专门设计「延迟注入」测试——通过工具在通信链路上人为增加延迟,观察系统在边界条件下的行为。这能帮你提前发现很多执行层面的隐患。

3.3.2 控制精度不足

指令发了,但执行结果和预期有偏差。比如:

  • 横向控制:系统要求转向5°,实际转向4.2°或5.8°,在高速行驶时会导致车辆逐渐偏离车道中心。
  • 纵向控制:要求减速度3m/s²,实际只有2.2m/s²,导致跟车距离过近或制动不及。
  • 复合工况:同时要求转向和制动,两个执行器之间的协调出现问题,导致车辆出现非预期的横摆。

3.4 危害事件分析:从危险行为到实际后果

识别出危险行为和触发条件之后,下一步就是分析它们会导致什么危害。我一般用下面这个表格来梳理:

危险行为 触发条件 危害事件 严重度
行人漏检 夜间+逆光+行人穿深色衣服 车辆未减速,与行人碰撞 S3(致命)
鬼影误检 路面水渍反光+阳光角度 系统急刹,后车追尾 S2(重伤)
预测错误 路口+行人突然折返 车辆启动后与行人刮擦 S2(重伤)
执行延迟 低温+低电量+紧急制动 制动距离超标,追尾前车 S2(重伤)
ODD误判 雨天+系统未降级 车辆在湿滑路面失控 S3(致命)

做完这个分析,你就能清楚地知道:哪些场景必须优先验证,哪些场景可以放在后面。严重度S3的场景,一个都不能漏。

3.5 实车验证中的危险行为捕捉方法

最后聊点实操层面的东西。在实车验证中怎么高效地捕捉这些危险行为?我总结了几条经验:

  1. 数据驱动的异常挖掘:跑完测试后,用工具扫描所有「接管事件」「AEB触发事件」「车道偏离事件」,把这些事件对应的传感器数据、决策日志、执行器响应全部拉出来分析。
  2. 边缘场景专项测试:针对已知的触发条件,设计专门的测试用例。比如「隧道进出连续10次」「夜间无路灯路段5公里」「雨天+积水路面紧急制动」。
  3. 随机化测试:在安全可控的封闭场地内,引入随机因素——突然出现的假人、随机移动的目标车、随机变化的照明条件。这类测试往往能发现你「没想到」的危险行为。
  4. 交叉验证:同一个场景,换不同的驾驶员、不同的天气条件、不同的车辆负载重复测试。你会发现,很多危险行为只在特定组合下才会出现。
安全第一:实车验证中一旦发现危险行为,立即停止当前测试,分析根因后再继续。不要抱着「再跑一次看看」的心态——我见过不止一次因为侥幸心理导致的事故。

嗯,这一章的内容就到这里。危险行为识别是SOTIF场景设计的基石,你花多少功夫在这上面,后面的验证工作就会有多顺利。