ANTI-CARLA: 一个CARLA中自动驾驶的对抗测试框架
arXiv论文“ANTI-CARLA: An Adversarial Testing framework for Auto-nomous Vehicles in CARLA“,2022年7月,Vanderbilt University和Tech Uni of Munich的工作。
尽管自动驾驶系统最近取得了进步,但这些系统仍然容易受到corner case的影响。在系统部署之前,必须对其进行彻底测试和验证,以避免此类事件发生。在开放世界场景中进行测试可能很困难,耗时且昂贵。
这些挑战,可以通过CARLA等驾驶模拟器来解决。这种测试的一个关键部分是对抗性测试,其目标是找到导致给定系统故障的场景。CARLA虽然已经在测试方面做出了一些努力,但尚未提供一个完善的测试框架,以支持对抗性测试。因此,提出ANTI-CARLA,CARLA中的一个自动测试框架,用于模拟不利天气条件(如暴雨)和导致系统故障的传感器故障(如摄像头遮挡)。
应测试给定系统的操作条件,用场景描述语言(scenario description language,SDL)指定。该框架提供了一种高效的搜索机制,用于搜索让测试系统失败的对抗操作条件。通过这种方式,ANTI-CARLA扩展了CARLA模拟器,能够在任何给定的驾驶流水线上执行对抗性测试。用ANTI-CARLA测试通过欺骗式学习(LBC, Learning By Cheating)训练的驾驶流水线。仿真结果表明,尽管LBC在CARLA基准中达到100%的精度,但ANTI-CARLA可以有效地自动找到一系列故障案例。
代码将在:https://github.com/scope-lab-vu/ANTI-CARLA.
如图所示:ANTI-CARLA提出的对抗性测试框架集成到CARLA模拟器中。给定任意驾驶流水线,用户指定所需的测试条件,框架自动生成对抗性测试用例。
如图是ANTI-CARLA框架和组件:
-
场景生成器
框架的第一个组件是场景生成器。它包括用于建模场景的场景描述语言,以及用于指定和选择测试参数的规范文件。根据场景定义一个测试用例,该场景是环境中系统路径的时间序列轨迹,持续30秒-60秒。
一个场景使用环境条件(E)和AV系统参数(A)表示。E可以用结构特征(例如道路类型和道路曲率)和时域特征(例如天气和交通密度)来定义。A包括启动位置、车载传感器和执行器等信息。E和A一起构成测试参数集。其中一些参数的值可以从指定的分布中采样。
此外,采样过程由一组物理约束控制,这些约束限制了这些参数的演化速率。例如,一天中的时间有一个固定的变化率。在采样过程中包括这些约束,会产生更有意义的场景。
场景描述语言:用textX元语言设计了一个SDL,用于场景建模。语法包含元语言描述场景的规则。元模型包含场景的实际描述。元模型结构的可视化如图所示。
一个场景s是表示不同环境条件和智体参数的实体{e1,e2,…,ek}集合。例如,高交通量驾驶(High Traffic Driving)场景由Track以及Weather和Traffic条件指定。实体由一组属性{p1,p2,…,pm}进一步指定。例如,Weather可以具有Rain和Fog的特性。每个属性都有一个名称n和一个数据类型t。例如,Rain是均匀分布,而Waypoints是整数数组。特殊数据类型(如分布)也可以具有属性,例如均匀分布的范围。元模型允许对Carla模拟器中的任何所需场景进行结构化描述。
规范文件:提供了一组规范文件,其中包含用户可以选择的场景参数。这些文件用作SDL建模概念的抽象表示。基于用户采样器的选择,从各自的分布中对所选参数进行采样。其余参数为默认值。
将信息分为三个规范文件。首先,用户选择场景说明符。如图显示了场景说明符文件的摘要。它指定了做为地图的城镇、要行驶的轨道、天气交通密度、行人密度和采样约束的分布。用户还指定使用哪种违规度量以及记录数据的频率。其次,需要一个智体说明符,包括与智体相关的信息,如可用的控制器、传感器列表及其位置,以及可记录的传感器数据。第三,采样器说明符从可用采样器列表中确定要使用哪个采样器。
最后,该语言有一个解释器。它连接规范文件、SDL和概率采样器。首先,解释器从规范文件中提取需要采样的参数和固定参数。然后将需要采样的参数发送给采样器。采样器根据这些参数的分布范围生成这些参数值。最后,将采样参数和固定参数解析为SDL元模型,生成驾驶模拟器的人工文件。
-
适配器合并代码
该框架还需要一个正在测试的驾驶流水线。集成不同的流水线并非易事,因为可能没有框架中使用的正确接口。例如,由于严格的接口要求,在CARLA之外开发的驾驶流水线可能不会直接用于模拟器。它们可能需要“调整”以满足模拟器的接口期望。为了解决这个问题,生成了一个适配器,以模拟器API所需的格式将驾驶流水线代码与传感器和执行器连接起来,如图所示。适配器是从智体规范文件合成的,该文件包含驾驶流水线所需的传感器列表、位置和采样率。
适配器从模拟器API中的自主智体类读取可用传感器,并用规范文件中要求的传感器对其进行扩展。因此,生成所请求的传感器代码结构,并将其提供给驾驶流水线代码。此外,模拟器所需的致动器从API中读取,并在代码中实现。通过适配器提供所需的传感器和执行器,用户需要提供驾驶流水线代码。
控制器的任何实用程序文件和模型权重都有特定的目录,它们与代码框架链接。用户只需处理此界面即可正确设置其控制器。如果致动器和传感器未正确设置,模拟器将抛出错误。未来将包括一个自动检查,以确保代码、传感器和执行器之间的结构设置正确。
-
评分函数
为了评估AV系统在生成场景中的驾驶熟练度,该框架还提供了一个称为测试分数(TS)的评分函数。评分基于系统在给定场景中执行的所有违规行为进行。在CARLA测量的违规行为包括路线偏离、车道违规、交通规则违规、跑过停车标志、闯红灯和越野驾驶。为每个违规Ik分配权重wk。在当前设置中,这些权重设置为CARLA挑战中用的值。然而,可以根据当前用例而变化。
由违规行为生成的测试分数TS与测试用例参数一起存储在测试用例表中。这些测试用例和分数,用于在线驱动活跃采样器向搜索空间中导致高测试分数的区域移动。该测试用例表还可用于离线后分析(post-analysis ),识别给定控制器的故障条件,从而重新训练和改进控制器。
-
采样器
集成几个采样器执行基于搜索的测试用例生成。采样器通过解释器连接到SDL,解释器向其提供场景参数和分布,从中可以对参数的不同值进行采样。
在框架中包括了两种可用的采样器。首先,实现几种被动采样器,因为它们速度快且应用广泛。在抽样过程中不使用以前结果的反馈。随机搜索(Random Search),从其各自的随机分布均匀地采样参数值。网格搜索(Grid Search),彻底搜索给定网格中的所有参数组合。
Halton 序列搜索(Sequence Search)是一种伪随机技术,使用共-素数作为基对参数进行采样。虽然这些采样器表现良好,但其非反馈采样方法导致无方向搜索,可能会错过几个重要的故障测试用例。此外,其并不平衡搜索空间的探索与开发,这是生成多样故障案例所必需的。
为了克服这些限制,还包括了两个对抗性采样器, 随机邻域搜索(Random Neighborhood Search,RNS)和引导贝叶斯优化(Guided Bayesian Optimization,GBO)。在对当前测试用例的参数进行采样时,这些采样器使用系统先前性能的反馈。此外,它们还捕获不同测试参数之间的约束和相关性,生成有意义的测试用例。反馈和约束的总体思想,是将采样过程移向搜索空间中很可能使系统失效的区域。
RNS采样器使用kd- tree最近邻域搜索算法扩展传统的随机搜索,为随机采样器提供了开发的能力。如果随机抽样参数生成的测试用例导致高测试分数,则利用这些参数值周围的区域。否则,将再从整个分布中随机采样参数。GBO扩展了有约束的传统贝叶斯优化采样器,该约束限制了采集函数查找下一个采样变量的区域。
评估结果如下:
如图比较随机采样器和RNS采样器采样的100个场景。RNS采样器生成不同的故障群集。x轴表示一天中的时间,y轴表示降水量水平,z轴表示云量水平。
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
直播|中国汽研:重型车温室气体企业平均方
2024-11-23 17:42
-
美国FCC正式划定5.9GHz频段用于C-V2X技术
2024-11-23 17:41
-
标准立项 | 《自主代客泊车 预期功能安全测
2024-11-23 16:13
-
长三角(盐城)智能网联汽车试验场气象多级
2024-11-23 16:11
-
CSAE汽车可靠性技术分会第二届委员会第二次
2024-11-23 16:09