Page 100 - 《软件学报》2025年第8期
P. 100
杜德慧 等: 面向自动驾驶系统的场景建模及边缘关键场景生成 3523
算法 1. 基于重要性采样的边缘关键场景生成算法.
输入: 采样样本数量 N, 变量 x 的安全概率分布 p(x), 标记函数 g(x), 变量 x 提议概率分布 q(x);
cnt
ˆ P (x) =
′
输出: 估计值 , 边缘关键样本集合 Dataset.
N
p(x)
1. 初始化: 满足标记函数的采样点数量 cnt = 0, 边缘关键样本集合 Dataset = ∅, 重要性权重 w(x) = , 定义新的
q(x)
′
标记函数 g (x) = g(x)·w(x);
2. for i = 1,...,N do
3. 对变量 x 的提议概率分布 q(x) 进行一次采样得到 sample ;
i
4. 代入 sample 计算标记函数值 g(x i );
i
5. if g (x i ) 为真 then
′
6. cnt ← cnt +1;
{
}
7. Dataset ← Dataset ∪ sample ;
i
8. end if
9. end for
4 案例展示及分析
本节将通过一个较为复杂的变道超车场景, 展示自动驾驶场景建模语言 SML4ADS2.0 的场景建模能力、场
景模型测试以及安全关键场景生成支持. 该研究建模实现了超车场景、跟车场景等多种复杂 ADS 场景, 其中超车
场景来源于文献 [20] 中提到的变道场景. 本节将应用 SML4ADS2.0 对超车场景进行抽象建模, 并基于 UPPAAL-
SMC 对逻辑场景验证分析和重要性采样实现边缘关键场景生成. 我们所设计和实现的 SML4ADS2.0 建模工具可
参见: https://github.com/D-Sketon/SML4ADS.js.
4.1 场景建模
图 7 为变道超车的功能场景示意图, 其中, Ego 车将根据场景中其他车辆的情况进行变道超车, 为了保证两车
之间不会碰撞, 需要满足纵向距离公式: 若 a 车位于 b 车之前, 则 x a − x b ⩾ c+1.5×v b . 其中 x a 和 x b 分别表示 a 车
以及 b 车的纵向距离, v a 表示 a 车的速度, v b 表示 b 车的速度, c 为常数. 因此, Ego 车在选择变道到 lane1 时, 需要
c
满足 x Ego − x B1 ⩾ c+1.5×v B1 , 其中 设置为常量 2. 同理, Ego 车在选择变道返回 lane2 时, 需要满足 x Ego −
x F1 ⩾ c+1.5×v F1 . 该公式的引用是为了模拟车辆变道后, 需要给后方车辆留有一定的反应空间. 而位于 Ego 车同车
道的前方则没有这种反应空间的需求, 因此本案例中设计为 Ego 车在选择变道到 lane1 加速超过 F1 的前提条件
为 Ego 车与 F1 车距离超过 15 m, 即若在 15 m 内仍然没有满足上述的变道条件, 则认为超车失败, 只好选择跟车
行驶.
Direction of vehicles
B1 F2
lane1
vehicle vehicle Junction
Ego F1 roadId=0
lane2
vehicle vehicle
图 7 变道超车的功能场景描述
根据以上的场景描述, 我们使用 SML4ADS2.0 进行逻辑场景建模, 并根据 Ego 车及 F2 车的行为规划, 设计了
相应的行为规划树模型如图 8 所示, 其中, 每个圆圈表示车当前的状态信息, 例如, “keep”状态表示车子保持车速
行驶, 并持续 2 个时间单位 (duration=2). F2 车的行为轨迹树中虚线箭头表示离散的概率选择, 50% 的概率保持车

