4. 场景分类与描述方法
场景参数化设计,说白了就是把一个模糊的场景描述,变成一组可量化、可枚举、可组合的数学参数。我刚开始做SOTIF时,总觉得场景库越丰富越好,结果发现场景数量爆炸,根本测不完。后来才明白——参数化才是场景复用的核心。
你想想看,一个“前车切入”场景,如果不用参数化,就得写几百个具体场景文件。但如果我们把它抽象成几个关键参数,比如切入速度、切入角度、相对距离、本车速度,那一个场景模板就能覆盖整个参数空间。这就是参数化的价值。
4.1 参数空间定义
参数空间,就是描述一个场景所有可变维度的集合。我习惯把参数分成三类:
| 参数类别 | 含义 | 举例(前车切入场景) |
|---|---|---|
| 静态参数 | 场景中固定不变的环境属性 | 道路曲率、车道数、限速值、天气类型 |
| 动态参数 | 参与者的运动状态和意图 | 切入车辆速度、切入角度、本车速度、TTC |
| 逻辑参数 | 触发条件和行为规则 | 切入触发距离、转向灯开启时机、加速度曲线 |
定义参数空间时,我有个经验:先粗后细。先列出所有可能影响系统行为的参数,再通过FTA和HAZOP分析,筛选出真正关键的参数。我在一个项目中遇到过,团队把“路面摩擦系数”也纳入了参数空间,结果发现对切入场景的影响微乎其微,白白增加了测试量。
4.2 参数边界确定
参数边界,就是每个参数的取值范围。边界确定错了,场景库要么漏掉危险区域,要么全是无效场景。
我一般用三种方法确定边界:
- 法规与标准边界:比如ISO 26262和NHTSA定义的碰撞场景,TTC边界通常取2.5s~4.5s。
- 物理极限边界:车辆最大减速度、最大转向角、传感器最远探测距离。这些是硬约束。
- 统计分布边界:从自然驾驶数据中提取的95%分位值。比如切入速度,我见过最极端的情况是切入车辆速度差达到30km/h,但95%的场景都在15km/h以内。
边界确定后,我习惯用一张表格记录每个参数的最小值、最大值、步长和单位:
| 参数名 | 最小值 | 最大值 | 步长 | 单位 | 边界依据 |
|---|---|---|---|---|---|
| 切入车辆速度 | 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次。这就是正交性。
下面这张图展示了正交实验法的核心逻辑:
正交实验法做完后,怎么分析结果?我一般用极差分析:计算每个参数在不同水平下的平均响应值,找出极差最大的参数——那就是对系统行为影响最大的因素。然后针对这个参数,在它的边界附近做局部加密测试。
嗯,参数化设计这块内容不少,但核心就三句话:参数空间要精不要多,边界确定要准不要宽,组合策略要巧不要全。正交实验法是我在多个项目中验证过的方法,效率提升明显,建议你在实际工作中试试。