面向自动驾驶车辆验证的抽象仿真场景生成

admin 2021年3月6日04:00:50评论125 views字数 4019阅读13分23秒阅读模式

自动驾驶车辆技术有可能对交通系统和城市生活产生重大影响。然而,在被接受为一种新的交通方式之前,必须证明自动驾驶车辆至少与人类驾驶车辆一样安全。目前的自动驾驶车辆验证方法,如阴影驱动或基于注释图像的测试,成本高,速度慢。因此,建模与仿真是实现自动驾驶车辆验证目标必不可少的工具。

本文提出了一种用于自动驾驶车辆验证的抽象仿真场景生成框架。场景和相关断言由基于矩阵的语义语言定义,并在仿真中转化为测试场景。该框架允许设计所有可能的道路拓扑并验证生成的场景。框架中生成的场景为其他平台中可能的罕见条件扩展测试提供了基本事实。这项工作有四个主要贡献:

  • 开发了一种模拟方法,在生成场景时使用语义语言定义场景。

  • 提出了一种在模拟中用每种可能的线或曲线组合组成道路的方法,这对于实现真实道路的建模至关重要。

  • 定义了一种方法,将不同车道数的路段相互缝合,而不会在模拟中产生错误。

  • 为建议方法中的每个附加路段提出了一种自我验证方法,这对模拟效率至关重要。

目前的大多数方法都是针对整车堆栈进行测试,从场景感知和理解到在场景中做出行动决策。在我们的方法中,我们主要关注决策步骤。换言之,我们的方法旨在测试被测AV的决策,在任何其他条件下都没有任何问题。这个焦点决定了仿真平台。该框架需要对物理世界进行简单的建模,而不需要对环境条件进行详细描述。为此,选择MATLAB作为仿真平台。MATLAB ADAS工具箱将场景中的参与者简单地表示为方框。

面向自动驾驶车辆验证的抽象仿真场景生成

图1显示了模拟框架组件的分解。中间的灰色区域是AV的大脑,通过输入创建的场景运行。顶部的模块定义了用户如何与框架交互以生成场景。仿真框架从主程序开始,主程序有一定的调整和输入选项。然后根据这些输入随机生成场景,并将其输入到实际模型中。在这里,生成场景,将ego车辆(测试中的车辆)放入其中,并在整个感知、做出决策和采取行动的循环中运行每个步骤,ego车辆对其作出响应。

在运行期间和运行之后收集模拟数据。数据点包括每个决策的安全性和合法性以及场景的定义。由于场景是由特定的输入生成的,因此可以在需要时重新创建场景。

A、 语义语言

模型必须能够创建场景来反映所有可能的情况。我们开发了一种语义语言,用于分解定义场景的因素,包括道路、参与者和交通逻辑。因此,我们的方法的第一阶段是创建这种语义语言。第一种语义语言方法使用字符串结构和相关规则,如下所示:

  • 道路生成从与正则表达式匹配的字符串开始。
  • 道路类型为大写字母。
  • 参数以小写字母表示。
  • 数值放在参数之后。

根据这些规则,从命令行获取输入,并解析形式语法以生成标记。令牌还具有上下文敏感的参数,这些参数包含在每种类型的令牌中。开发令牌及其属性如下表所示。

面向自动驾驶车辆验证的抽象仿真场景生成

生成所有令牌后,它们将用于为模拟的输入文件生成适当的xml段。每个路段都有一个唯一的id号,该编号与场景的全局id变量一起使用,该变量随每个路段递增。还有一个全局点数组,用于确定下一个路段的位置,并在xml生成时自动更新。

面向自动驾驶车辆验证的抽象仿真场景生成

图2显示了使用示例字符串“05d0A115A180d1A132BCCX150d0A110A1405”在PreScan和MATLAB Simulink中创建的模拟场景。PreScan是模拟AVs和AVs上所有传感器配置的最全面的仿真平台之一。但是,这些细节在逻辑场景生成阶段是不必要的。MATLAB ADAS工具箱将对象简化为三维长方体,并将道路简化为它们所遵循的路线以及其他一些次要细节。这种场景生成方法使其成为适合本方法的工具。在最初的基于字符串的语言实现之后,在MATLAB中不仅包括输入模式,还包括系统的断言。因此,下一次迭代的实现包括一个基于矩阵的系统来概括场景特征并创建一个高效的标签和分类系统。数值矩阵作为输入读取,其中每一行是一个不同的断言,描述一个单独的路段或参与者,然后可以对其进行分析以生成场景。为了做到这一点,道路网和参与者被简化为牛顿物理学中最基本的元素,如质心和尺寸。然后根据实际情况对这些元素进行参数化。值得注意的是,该模型不包含任何环境因素。在本框架中创建的示例场景如图3所示。该实例展示了实施方法在实际测试中的潜在能力,例如具有可变车道数的路段、多个参与者和车道标记的组合。

面向自动驾驶车辆验证的抽象仿真场景生成

B、 道路拓扑生成

在模拟中放置道路需要道路中心、每个中心处的道路宽度、倾斜角度和车道的详细信息。然后,生成道路就是获取输入并将其转换为道路在场景上下文中遵循的一系列点。输入中的第一个值定义将创建的道路类型。通过将道路限制为特定的路段,可以将生成的场景限制为真实的道路网络和情况。生成每个路段时,通过旋转将其缝合到上一个路段上,以便沿第一个点的切线与上一个路段最后一个点的切线对齐,并在驾驶场景中将其移动到该坐标。在两个连续的片段之间,还存在一个中间片段来平滑具有不同车道数的两个片段之间的过渡。

1)参数

一旦约束到代表最常见道路(如直线道路、交叉口等)的不同部分,可以概括为大多数到所有部分的细节必须定义为参数。某些参数只能应用于单个工件。因此,为了节省记忆,其中一些被赋予了新的意义,在不同的作品。模型中的参数如表二所示。随着更多的部分被定义和实现,参数也将被扩展以描述所有必须考虑的新细节。

面向自动驾驶车辆验证的抽象仿真场景生成

2)道路和几何图元

第一种类型的道路是打算成为最简单的道路,并作为一个更复杂的道路积木。它被称为“多车道道路”,由可变车道组成,在由几何图元组成的直线上单向或双向行驶。如图4所示,这些几何图元包括直线、圆弧和以恒定速率改变曲率的回旋曲线。

面向自动驾驶车辆验证的抽象仿真场景生成

单一道路的所有常见形式都可以通过一组三个原语的排列来创建。要选择生成道路时使用的基本体,将使用输入中的两个曲率,表示起始曲率和结束曲率。如果其中一个曲率为零,它将从一条直线变为一条回旋曲线,该曲线将过渡到曲率不为零的圆弧。如果它们都是非零曲率,则该直线将随机变为回旋弧回旋线或弧线回旋弧形状。对于回旋弧回旋线形状,曲率从零开始,过渡到起始曲率,对于圆弧保持不变,然后过渡到最后一个回旋线中的结束曲率。对于圆弧回旋弧形状,直线从具有起始曲率的圆弧开始,使用回旋曲线过渡到结束曲率,并保持在最终圆弧的结束曲率。路段连接的示例如图5所示。

面向自动驾驶车辆验证的抽象仿真场景生成

为了使基本体彼此无缝连接,第一个点的切线与最后一个基本体最后一个点的切线对齐。对于一条直线,面对的方向保持不变,因为它是在开始。但是,对于圆弧和回旋曲线,必须计算新的朝向。计算圆弧的新朝向,只需将圆弧的长度乘以曲率,然后根据圆弧的转向方式,将其与上一个朝向相加或相减即可。

回旋线:回旋线允许从一个曲率平滑过渡到另一个曲率,是真正的道路容易转弯利用。使用菲涅耳积分计算回旋面的点:

其中用作规格化因子,表示从起点到该点的长度,并表示沿曲线的距离。对于回旋面,必须使用在形成点时计算的参数来计算朝向的变化:,其中表示最终曲率,是曲率的变化。这提供了一个不可靠的值,不能准确地表示更改。由于软件的精度水平与菲涅耳积分(用于计算回旋线),决定使用最后两点的反正切来计算新的面对方向。因为选择用来定义这条曲线的点的数量使它们非常接近,这就足以连接这些零件。

3) 4路交叉口

模型中路段的一个重要示例是图6所示的4向交叉口。将每个连接到交叉口的道路定义为具有可变车道的多车道道路,并假设这些道路可以是单向的,也可以是双向的。

面向自动驾驶车辆验证的抽象仿真场景生成

(一)道路布置:每一条道路的定位都是基于一个中心矩形计算出来的,以使所有道路尽可能靠近中心。四条道路中的每一条都可以有不同数量的车道,也可以是双向或单向的,这意味着它们也可以有不同的宽度。要计算矩形,将使用顶部和底部道路之间的最大宽度以及左侧和右侧道路之间的最大宽度来确定大小。顶部道路的中心与底部道路的中心对齐,左侧和右侧道路也是如此。为了基于该系统将道路移动到它们的坐标,根据它们之间的数学关系将它们从第一条道路的末端(沿矩形的底部道路的中心)移动。(二)车道路径:由于场景从一个片段到另一个片段呈线性移动,因此只有底部片段的车道需要为车辆可以行驶的位置定义选项。其他道路对此有一个有限的版本,以便为其他参与者获得潜在的路径。如果选择左转,则从左侧开始最多两条车道设置为“仅左转”车道。设置为“仅左”的数量基于其他潜在方向的可用车道数以及向左行驶的可用车道数。如果还有更多车道,则将其设置为“仅向前”车道,直到有多少车道可向前行驶(如果有的话)。剩余车道设置为仅右转车道,最多可右转车道数,因为右转是一个选项。如果这是一个选项,并且没有左车道,则最右侧的车道将有额外的右行选项。如果有额外的车道可用,它们将被赋予与在另一侧合并的仅向前车道相同的行为。如果没有足够的车道,例如每个方向都有一条车道可供选择,则该车道被定义为中立车道,并允许这些方向中的任何一个。

C、 扩展道路属性

生成道路时,将存储在道路对象中的来自输入的附加值,例如其条件和速度限制。速度限制反映在场景中,即在计算参与者的路径时。在道路计算过程中也会设置车道标记。它们作为一个数组传入,并带有每一行的属性。对于双向道路中的中心线,它被随机定义为双黄线或黄色虚线。也可以在中心设置一条转弯车道,该车道始终由黄色虚线包围。

D、 参与者生成

除了自我载体,场景中的参与者是随机产生的,也由不同的类型组成。包括汽车、卡车、行人等。他们在场景中可能采取的不同行为也被编程。这些措施包括行人横穿马路和车辆在车道外转弯。为车辆分配车道路径,这些车道路径是在生成道路时计算的,沿任一方向(从第一条道路到最后一条道路,反之亦然)从网络上的随机点开始。通过这种方式,整个道路可以有参与者贯穿始终,而不仅仅是跟随自我的车辆。

E、 测试场景生成

对于测试场景的生成,使用伪随机输入生成。将此方法集成到语义语言中可以确定置信度和覆盖率分析。测试的可重复性和覆盖率分析非常重要,因为它们提供了渐进式测试结构。


*本文来自本实验室侯中林的研究成果和学习笔记

面向自动驾驶车辆验证的抽象仿真场景生成


本文始发于微信公众号(轩辕实验室):面向自动驾驶车辆验证的抽象仿真场景生成

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年3月6日04:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面向自动驾驶车辆验证的抽象仿真场景生成http://cn-sec.com/archives/282719.html

发表评论

匿名网友 填写信息