自动驾驶场景仿真与ASAM OpenX标准应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.4 基于场景的仿真应用

1.感知模块开发与验证中的场景仿真

在开发智能驾驶系统的感知模块时,目前主流的方案是采用机器学习方法,通过标注的样本数据,训练算法,从而获得想要的结果模型。一个鲁棒性强、适用范围广的算法,其卷积神经网络的参数会非常多,这需要提供大量的训练数据集才能使得算法收敛,获取更优质的算法模型。

真实采集的训练集,由于缺少真值,需要通过纯人工或者半人工的方式对数据中的目标物进行标注与核对,虽然其真实性较高,但是为了提高效率与准确度,需要大量的人力投入,无法有效地降低边际成本;采集的场景在算法优化后期,势必面临无法覆盖边角、危险工况场景的问题。

目前各家主流智驾公司的算法不断推陈出新,传统人工标注的数据集方式越来越无法满足复杂算法开发的需求,都已经开始研究通过仿真的技术手段创造场景,供算法的训练与测试。这里,我们需要注意的是,场景的仿真绝不是实现画面的呈现这么简单,仅仅实现这部分功能,只能叫作场景动画,远远达不到场景仿真的程度。我们需要将场景中的信息,通过不同的形式,传递给感知算法或工程师,只有实现这个功能,才能称为实现了自动驾驶场景的仿真。

(1)仿真场景的视觉呈现

视觉上对场景的仿真是最直观的呈现方式,由仿真技术生成的画面,可以供视觉算法进行算法的训练、测试标定,同时也可以使工程师观察到当前的场景。

目前主流的仿真技术通常是依靠渲染引擎,来实现对画面的仿真。渲染引擎技术已经在游戏、影视等领域发展几十年了,其画面的呈现效果、透视关系等,通过开发人员的设计,可以得到准确的呈现。常用的渲染引擎有UnrealEngine、Unity3D、OGRE、OpenSceneGraph等。但智能驾驶领域的场景仿真,区别于传统领域的建模渲染,并不仅仅是对单一场景的仿真与呈现,如某一游戏关卡、某一影视场景,而是需要形成一套工具,用户可以完全自定义场景中的内容,包含天气、道路、交通设施、车、人等,通过不同的元素组合、状态变化,从而形成不同的场景。因为仿真的技术特点是先有元素的状态,再根据其属性通过复杂的计算,得到画面的呈现,所以其具备先天的优势:自带“真值”,画面中呈现出的元素,设计者可以准确地知道其种类、位置、速度、姿态等内容,这就免去了繁琐的人工标注过程。图1-6是某款仿真工具对于不同场景的仿真画面。

图1-6 仿真场景的快速遍历

实现了场景的仿真,仍不能最大地发挥仿真的技术优势。要知道,仿真的场景是通过计算机图形学计算出来的画面,通过对生成的参数加以泛化,则可以基于某些元素,快速生成大量的场景,再通过对参数的约束,形成具有针对性的场景集。这部分功能,是真实采集的场景无法实现的,既可以大大降低生成场景的边际成本,又可以通过人为设计,形成大量危险、复杂的场景集。

(2)仿真场景其他的呈现方式

除了视觉摄像头需要数据集的训练与测试,其他常见的传感器,如毫米波雷达、超声波雷达、激光雷达等,也可以通过场景的仿真来实现训练与测试数据集的构建。目标感知类的传感器目前主要有两种仿真方式:

1)在场景的仿真过程中加入“光线追踪”技术。光线追踪是一种“来自几何光学的通用技术,它通过追踪与光学表面发生交互作用的光线,得到光线经过路径的模型”。这个定义听起来有些晦涩,我们不妨说简单一点:首先假设屏幕内的世界是真实的,当光线投射到物体表面时,通常会同时发生三件事,即光被吸收、反射和折射。特别是当光被折射到不同方向时,光谱就会发生变化。无论怎样,光线总会经过一系列的衰减最后进入人的眼睛,光线追踪就是要计算出光线发出后经过一系列衰减再进入人眼时的情况,这样可确保3D画面看起来更真实。

借助这种技术,开发人员把对光线的建模修改为对超声波、毫米波、激光等能量形式的建模,则可以准确得到不同传感器在场景中反射的情况,如图1-7所示。这种技术需要复杂的建模过程,并且需要高算力的图形处理器的支持,技术难度比较高。

图1-7 激光雷达的仿真效果

2)通过数学建模,以物理模型与概率模型相结合的技术手段,整体描述空间中目标物在不同传感器下的反射特性。这种方式更关注场景中目标物对传感器信号的反射状态,而不是对整个场景的反射情况进行仿真,需要依据传感器的实验数据来进行建模与标定。

2.规控模块开发与验证中的场景仿真

规控算法的输入通常为目标列表的状态信号,其描述了周围相关目标物的不同属性信息。但由于规控算法更加关注动态的场景内容,如不同疏密程度的交通流的状态变化、交通设施的信号变化,以及道路起伏、曲率变化等,所以需要在场景仿真的过程中,将场景中元素的信息做统一输出。

由上文的阐述可知,仿真场景中的目标物是自带真值的,所以对于这部分场景信息的仿真相对比较简单,这也是各类场景仿真工具中最基础的功能。通过场景自定义工具,设计好场景中元素的动作流程,通常有按照时间序列与按照触发动作两种设计方式。按照场景的描述,可以仿真设计出切入、切出、紧急停车等各类场景。

规控模块开发对于动力学、闭环等内容的仿真需求,在此不做叙述。