4. 场景分类与描述方法

场景参数化设计,说白了就是把一个模糊的场景描述,变成一组可量化、可枚举、可组合的数学参数。我刚开始做SOTIF时,总觉得场景库越丰富越好,结果发现场景数量爆炸,根本测不完。后来才明白——参数化才是场景复用的核心。

你想想看,一个“前车切入”场景,如果不用参数化,就得写几百个具体场景文件。但如果我们把它抽象成几个关键参数,比如切入速度、切入角度、相对距离、本车速度,那一个场景模板就能覆盖整个参数空间。这就是参数化的价值。

4.1 参数空间定义

参数空间,就是描述一个场景所有可变维度的集合。我习惯把参数分成三类:

参数类别 含义 举例(前车切入场景)
静态参数 场景中固定不变的环境属性 道路曲率、车道数、限速值、天气类型
动态参数 参与者的运动状态和意图 切入车辆速度、切入角度、本车速度、TTC
逻辑参数 触发条件和行为规则 切入触发距离、转向灯开启时机、加速度曲线

定义参数空间时,我有个经验:先粗后细。先列出所有可能影响系统行为的参数,再通过FTA和HAZOP分析,筛选出真正关键的参数。我在一个项目中遇到过,团队把“路面摩擦系数”也纳入了参数空间,结果发现对切入场景的影响微乎其微,白白增加了测试量。

我的习惯:每个场景模板的参数数量控制在5~8个。太少覆盖不全,太多组合爆炸。如果超过10个,考虑拆分成子场景。

4.2 参数边界确定

参数边界,就是每个参数的取值范围。边界确定错了,场景库要么漏掉危险区域,要么全是无效场景。

我一般用三种方法确定边界:

  1. 法规与标准边界:比如ISO 26262和NHTSA定义的碰撞场景,TTC边界通常取2.5s~4.5s。
  2. 物理极限边界:车辆最大减速度、最大转向角、传感器最远探测距离。这些是硬约束。
  3. 统计分布边界:从自然驾驶数据中提取的95%分位值。比如切入速度,我见过最极端的情况是切入车辆速度差达到30km/h,但95%的场景都在15km/h以内。
避坑指南:我曾经只依赖法规边界,结果漏掉了“切入车辆以极低速度(5km/h)并入高速车道”的场景。这个场景在法规里不算典型,但在实际测试中触发了AEB误制动。所以,统计边界和物理边界必须结合使用。

边界确定后,我习惯用一张表格记录每个参数的最小值、最大值、步长和单位:

参数名 最小值 最大值 步长 单位 边界依据
切入车辆速度 10 120 10 km/h 法规+统计
切入角度 5 45 5 deg 物理极限
TTC 1.0 6.0 0.5 s 法规+统计
本车速度 30 130 10 km/h 法规

4.3 参数组合策略

参数空间定义好了,边界也确定了,接下来就是怎么组合。全组合?4个参数,每个5个值,就是5⁴=625个场景。如果参数增加到8个,那就是几十万。测不完,根本测不完。

所以我们需要组合策略。我常用的策略有三种:

  • 全覆盖组合:适用于参数少(≤3个)且每个参数取值少(≤3个)的情况。比如“天气×光照×道路类型”,3×2×2=12个场景,可以全测。
  • 边界值组合:只取每个参数的最小值、最大值和中间值。我习惯用这种方法做冒烟测试,快速发现系统在极限条件下的问题。
  • 正交实验法:这是我最推荐的方法。用最少的实验次数,覆盖参数之间的主要交互效应。下面重点讲。
核心原则:参数组合不是越多越好,而是覆盖关键交互。两个参数单独测试都没问题,组合在一起可能出问题。正交实验法就是专门解决这个问题的。

4.4 正交实验法

正交实验法,说白了就是用一张正交表来安排实验。它的特点是:任意两个参数的不同取值组合,在实验中出现的次数相等。这样就能用最少的实验次数,估计出每个参数的主效应和部分交互效应。

举个例子。假设我们有4个参数,每个参数取3个值。全组合需要3⁴=81个场景。但用L9(3⁴)正交表,只需要9个场景。你想想看,效率提升了9倍。

下面是我常用的正交表选择指南:

参数数量 每个参数取值数 推荐正交表 实验次数 相比全组合节省
3 2 L4(2³) 4 50%
4 3 L9(3⁴) 9 89%
5 2 L8(2⁷) 8 75%
7 2 L8(2⁷) 8 94%
5 4 L16(4⁵) 16 99%

具体怎么用?我拿“前车切入”场景演示一下。假设我们选了4个关键参数:

  • A: 切入车辆速度(3个水平:30, 60, 90 km/h)
  • B: 切入角度(3个水平:10°, 25°, 40°)
  • C: TTC(3个水平:1.5, 3.0, 4.5 s)
  • D: 本车速度(3个水平:50, 80, 110 km/h)

用L9(3⁴)正交表,9个实验组合如下:

实验号 | A(切入速度) | B(切入角度) | C(TTC) | D(本车速度)
-------|-------------|-------------|--------|-------------
1      | 30          | 10          | 1.5    | 50
2      | 30          | 25          | 3.0    | 80
3      | 30          | 40          | 4.5    | 110
4      | 60          | 10          | 3.0    | 110
5      | 60          | 25          | 4.5    | 50
6      | 60          | 40          | 1.5    | 80
7      | 90          | 10          | 4.5    | 80
8      | 90          | 25          | 1.5    | 110
9      | 90          | 40          | 3.0    | 50

你看,每个参数的每个水平都出现了3次,而且任意两个参数的组合(比如A1B1、A1B2...)都恰好出现1次。这就是正交性。

我的经验:正交实验法最适合筛选阶段。先用正交表跑一轮,找出哪些参数组合触发了系统失效,再针对这些失效区域做局部加密。这样既保证了覆盖率,又控制了测试成本。

下面这张图展示了正交实验法的核心逻辑:

正交实验法在场景参数组合中的应用 全组合实验 参数数: 4 每个参数水平: 3 总实验次数: 3⁴ = 81 覆盖所有组合 ❌ 成本高,效率低 正交实验法 参数数: 4 每个参数水平: 3 实验次数: L9(3⁴) = 9 覆盖所有参数组合 ✅ 效率提升9倍 结果分析 极差分析 方差分析 主效应识别 交互效应识别 最优组合 正交实验法的核心优势 1. 用最少的实验次数,覆盖参数之间的主要交互效应 2. 任意两个参数的不同取值组合,在实验中出现的次数相等(正交性) 3. 适合SOTIF场景库的筛选阶段,快速定位危险区域 定义参数空间 确定参数边界 选择正交表 执行实验

正交实验法做完后,怎么分析结果?我一般用极差分析:计算每个参数在不同水平下的平均响应值,找出极差最大的参数——那就是对系统行为影响最大的因素。然后针对这个参数,在它的边界附近做局部加密测试。

注意:正交实验法假设参数之间没有高阶交互效应。如果系统存在强非线性,比如某个参数在特定组合下突然失效,正交表可能漏掉。我的做法是:正交表跑完后,用随机采样补充10%~20%的场景,作为安全网。

嗯,参数化设计这块内容不少,但核心就三句话:参数空间要精不要多,边界确定要准不要宽,组合策略要巧不要全。正交实验法是我在多个项目中验证过的方法,效率提升明显,建议你在实际工作中试试。