Page 242 - 《软件学报》2026年第4期
P. 242
田浩翔 等: 基于路网建模的自动驾驶关键场景生成与自适应演化方法 1683
于控制公共道路上的自动驾驶车辆. 为评估 LEADE 的效率和效果, 我们回答以下研究问题.
问题 1: LEADE 在抽象场景构建和具体场景生成方面的全面性和准确性如何?
问题 2: LEADE 在发现 Apollo 的多样化安全违背方面的效果和效率如何?
问题 3: LEADE 相比于其他先进的具体场景演化方法, 其发现 Apollo 安全违背的有效性和效率如何?
3.1 实验设置
我们在 Ubuntu 20.04 操作系统上进行实验, 硬件配置包括 500 GB 内存、Intel Core i7 CPU 和 NVIDIA GTX
2080 Ti 显卡. 实验使用的仿真平台为 SORA-SVL (一个支持与 Apollo 连接的端到端自动驾驶仿真系统), 并选择
了旧金山地图执行生成的场景. 在实验过程中, Apollo 的所有模块均处于启用状态, 包括感知、定位、预测、路径
规划、规划和控制模块. Apollo 配备了多种传感器, 包括两个摄像头 (一个安装在车顶, 另一个位于主车前方)、
GPS、雷达和激光雷达.
为了解决这一问题, 我们调研了现有的可以为 Apollo 描述和定义测试场景的领域专用语言 [24,41,44] , 选择了
AVUnit [44] 作为基础工具, 因为它能够准确地定义并确定性地执行具体场景中参与者的运动轨迹. 在 AVUnit 的场
景程序中, 每个轨迹由一系列状态定义, 每个状态包括位置、航向和速度. 位置以“lane_id→dist”表示, 其中 dist 为
当前位置到车道起点的距离, 也称为车道距离.
LEADE 关注的主要安全要求包括: 自动驾驶系统应避免与场景中的其他参与者发生碰撞, 并确保顺利到达目
的地. 为此, 我们定义了两个关键指标来监控主车的安全表现: 一是场景执行过程中主车与其他参与者之间的最小
距离; 二是场景结束时主车与目的地之间的距离. 需要指出的是, AVUnit 在场景执行期间会确保从车和行人沿预
定路线行驶, 同时遵循交通规则 (例如, 避免与其他车辆或主车发生碰撞, 保持车速不超过道路限速, 遵守车道规
则). 因此, 主车与其他参与者的碰撞通常是由主车本身的安全违背行为引起的.
LEADE 中需要定义一些参数: threshold m 、 threshold c 和 . threshold c 是个体
k threshold m 是个体变异的阈值,
交叉的阈值. 为了确定这些阈值, 我们测试了现有遗传算法推荐的阈值范围 [45] , 并分别选择了 0.3 作为 threshold m ,
0.7 作为 threshold c k 是每代中选择的最优个体数量. 为了平衡搜索效果与进化成本, LEADE 在自适应进化过程
.
中随机生成 k, 其范围值是 [4,8].
3.2 实验设计
针对问题 1, 我们使用 LEADE 从不同格式的测试需求文件中构建抽象场景, 并生成相应具体场景. 为了评估
抽象场景构建的有效性. 我们根据自动驾驶的测试需求文件, 并从中随机选择了 100 个不同的场景需求文件, 这些
文件涵盖了各种类型的道路、主车驾驶任务和参与者行为. 随后, 我们运行 LEADE 构建抽象场景. 为了验证
LEADE 在具体场景生成中的有效性, 我们使用 CRISCO [19] 作为基准, 为相同的抽象场景, 生成具体场景. CRISCO
通过求解一系列约束来在抽象场景基础上生成具体场景. 4 位作者独立分析并交叉检查对每个测试需求文件的信
息提取及为每个抽象场景生成的具体场景. 若检查结果存在不一致, 另一位作者参与小组讨论, 解决冲突并达成一致.
针对问题 2, 我们运行 LEADE 生成场景并在仿真平台模拟器上执行, 以测试 Apollo. 在发现的安全违背场景
中, 我们设计了一套分类标准对其进行分类, 并分析 Apollo 各模块的潜在缺陷和正确操作.
针对问题 3, 我们将 LEADE 与 3 种采用遗传算法寻找 Apollo 安全违背场景的最新技术进行比较: AV-
Fuzzer [22] 、MOSAT [23] 、BehAVExplor [46] . AV-Fuzzer 通过进化参与者行为来揭示安全违背, 而 MOSAT 则使用原
子操作和模式生成具体场景, BehAVExplor 基于种子场景, 采用主车轨迹差异度引导的多目标遗传算法, 对具体场
景进行演化. 这 3 种技术均使用遗传算法进行场景优化. 我们在相同的时间内, 对同样的初代场景, 运行 LEADE、
AV-Fuzzer、MOSAT 和 BehAVExplor, 对场景进行演化, 并从以下几个方面比较它们的有效性和效率.
(1) 能发现多少种 Apollo 的安全违背类型?
(2) 生成一个场景需要多少时间?
(3) 平均生成多少个场景才能找到一个 Apollo 的安全违背?
(4) 平均需要多长时间才能暴露第 1 个安全违背及所有已发现的安全违背类型?

