滚动新闻

LG电子美国研发中心介绍一种高保真度自动驾驶模拟器LGSVL

对于自动驾驶仿真,LGSVL 是主流的仿真器之一。这篇由LGSVL开发者(主要来自LG电子美国研发中心)撰写的《LGSVL Simulator-A High Fidelity Simulator for Autonomous Driving》这篇文章对LGSVL进行了详细的介绍。概括

在真正的自动驾驶汽车上测试自动驾驶算法的成本高得令人望而却步,许多研究人员和开发人员不一定有资金购买真正的汽车和相应的传感器。尽管有一些免费和开源的自动驾驶系统,如 Autoware 和 Apollo,但与它们一起使用的开源模拟器的选择是有限的。本文介绍了高保真自动驾驶模拟器 LGSVL。该仿真器提供端到端的全栈仿真,并准备好连接到 Autoware 和 Apollo。此外,模拟器工具自带核心模拟引擎,用户可以轻松定制传感器,创建新型可控对象,替换核心模拟器中的部分模块,创建特定环境的数字孪生。

1 简介

自动驾驶汽车在过去几年取得了长足的进步。研究表明,自动驾驶汽车必须行驶数十亿英里才能证明其可靠性 [1],如果没有模拟的帮助,这将是不可能的。从自动驾驶研究一开始[2],模拟器就在自动驾驶系统的开发和测试中发挥了关键作用。仿真使开发人员能够在不驾驶真实车辆的情况下快速测试新算法。模拟与道路测试相比有几个重要的优势:它比真实道路测试更安全,尤其是对于某些危险场景(例如行人乱穿马路),它可以生成现实世界中很少遇到的场景。极端情况(如极端天气)。此外,

当今的自动驾驶系统在越来越多的模块中使用深度神经网络 (DNN) 来帮助提高性能。训练 DNN 模型需要大量的标记数据。传统的自动驾驶数据集,例如 KITTI [3] 和 Cityscapes [4],没有足够的数据让 DNN 处理复杂的场景。尽管最近学术界 [5] 和自动驾驶公司 [6]、[7]、[8] 发布了一些大型数据集,但这些数据集通常是手动从现实世界中收集的(通常借助一些自动化工具)。下面),这是缓慢、昂贵且容易出错的。对于像像素分割或光流这样的真实类型,手动标记数据非常困难或不可能。在云平台的帮助下,模拟器可以轻松生成数量级更大的准确标记数据集。

本文介绍 LGSVL 模拟器。核心仿真引擎使用 Unity [9],它是开源的,源代码可在 GitHub 上免费获得。该模拟器支持ROS、ROS2和Cyber​​ RT,可以与Autoware和百度Apollo一起使用。提供地图工具来导入和导出用于自动驾驶的高清地图,格式包括 Lanelet2 [10]、OpenDRIVE 和 Apollo 高清地图。图 1 显示了来自 LGSVL 模拟器的一些渲染示例。

本文的其余部分结构如下:第 2 节回顾了以前的相关工作,第 3 节提供了 LGSVL 模拟器的详细概述,第 4 节列出了该模拟器的应用示例,第 5 节总结了本文的工作方向。

2 相关工作

仿真广泛用于汽车行业,尤其​​是在车辆动力学方面。一些著名的例子是:CarMaker [11]、CarSim [12] 和 ADAMS [13]。自动驾驶需要的不仅仅是车辆动力学。还必须考虑复杂的环境设置、不同的传感器布置和配置以及模拟的车辆和行人交通等因素。一些早期的模拟器 [14]、[15] 在虚拟环境中运行自动驾驶汽车,但缺乏一些重要元素,例如支持不同的传感器和行人模拟。

Gazebo [16] 是机器人学及相关研究领域最流行的仿真平台之一。其模块化设计允许不同的传感器模型和物理引擎插入模拟器。但是用 Gazebo 很难创建大型复杂的环境,也很难达到 Unreal [17] 和 Unity 等现代游戏引擎的渲染效果。

还有一些其他流行的自动驾驶开源模拟器,例如 AirSim [18]、CARLA [19] 和 Deepdrive [20]。这些模拟器通常被创建为研究平台,以支持用于强化学习或机器学习的合成数据生成,通常需要大量额外的工作来集成用户的自动驾驶系统和通信模块。

还有一些商用车辆模拟器,包括 ANSYS [21]、dSPACE [22]、PreScan [23]、rFpro [24]、Cognata [25]、Metamoto [26] 和 NVIDIA 的 Drive Constellation [27]。然而,由于这些模拟器不是开源的,用户很难定制以满足自己的特定需求或研究目标。

今天,与驾驶相关的商业视频游戏提供了逼真的环境。研究人员使用 Grand Theft Auto V 等游戏来生成合成数据集 [28]、[29]、[30]。但是,这通常需要进行一些黑客攻击才能访问游戏内资源,并且可能违反用户许可协议。此外,除了摄像头以外的传感器,难以可靠地控制车辆以及行人和交通等非玩家角色。

3 LGSVL 模拟器概述

图 2 说明了由 LGSVL 模拟器实现的自动驾驶模拟工作流程。每个组件的详细信息在本节下方进行说明。

A. 用户的自动驾驶系统

用户的自动驾驶系统是用户希望通过仿真开发、测试和验证的系统。LGSVL Simulator 目前提供与开源平台 Apolloll、Autoware.AI 和 Autoware.Auto5 的即用型参考集成。

用户的自动驾驶系统通过通信接口连接到 LGSVL。百度的 Apollo 平台使用了一个名为 Cyber​​ RT 的框架,它为模拟器提供了一个自定义的桥梁。在 ROS 和 ROS2 上运行的 Autoware.AI 和 Autoware.Auto 可以通过标准的开源 ROS 和 ROS2 桥接器连接到 LGSVL。图 3 显示了 Autoware、Apollo 和 LGSVL 一起运行。

B. 仿真引擎

LGSVL 利用 Unity 的游戏引擎进行模拟,并利用 Unity 的最新技术部队炮车驾驶员模拟训练教具图,如高清渲染管道 (HDRP) 来模拟接近现实世界的虚拟环境。仿真引擎的功能可分为:环境仿真、传感器仿真、车辆动力学和控制仿真。图 4 显示了仿真引擎和自动驾驶系统之间的关系。

环境模拟包括交通模拟和天气、时间等物理环境模拟。这些方面是测试场景模拟的重要组成部分。环境模拟的各个方面都可以通过 Python API 进行控制。LGSVL 模型的仿真引擎是作为一个开源项目开发的。源代码在 GitHub 上公开可用,可执行文件可免费下载和使用。

C. 传感器和车辆模型

LGSVL 的自我车辆传感器配置是完全可定制的。例如,每个激光雷达传感器的光束数是可配置的。该模拟器有一组默认传感器可供选择,目前包括摄像头、激光雷达、毫米波雷达、GPS 和 IMU 以及地面实况传感器。用户还可以构建自己的自定义传感器并将它们作为传感器插件添加到模拟器中。图 5 显示了 LGSVL 中的一些传感器:左列显示了一些物理传感器,包括鱼眼摄像头传感器、激光雷达传感器和雷达传感器;右列显示了一些真实传感器,包括语义分割传感器、深度传感器和 3D 边界框传感器。

除了默认的参考传感器外,LGSVL 还支持用于自动驾驶系统的真实传感器模型。这些传感器插件的参数与它们的真实世界对应物(例如 Velodyne VLP-16 激光雷达)相匹配,并生成与真实传感器格式相同的点云。此外,用户可以创建自己的传感器插件来实现 LGSVL 默认不支持的新变体甚至新类型的传感器。

LGSVL 为 ego 汽车提供了一个基本的车辆动力学模型。另一方面,车辆动力学(FMI)的外部接口可以通过第三方接口加载到另一个仿真系统中(仿真程序可以与仿真程序进行交互)。因此,用户可以将 LGSVL 与第三方车辆动力学仿真工具相结合,以充分利用这两个系统。

D. 3D环境和高清地图

虚拟环境是自动驾驶仿真系统的重要组成部分,可为自动驾驶系统提供各种输入。作为所有传感器的输入源,环境影响着自动驾驶系统的感知、预测和跟踪模块。环境影响车辆动力学,这是车辆控制模块中的关键因素。它还通过更改高清地图来影响定位和规划模块,具体取决于实际的 3D 环境。最后,3D环境是环境模拟的基础,包括天气、时间和动态物体。

我们还可以从记录的数据(图像、点云等)中创建真实场景的数字双胞胎,以复制和模拟真实世界。图 6 显示了我们为加利福尼亚州桑尼维尔的 Borregas Avenue 创建的数字孪生模拟环境。此外,我们与北加州、内华达州和犹他州合作,制作了 GoMentum 站 [32] 一部分的数字双胞胎。GoMentum 是位于加利福尼亚州康科德的自动驾驶测试场,拥有 19 英里的道路、48 个十字路口、8 个不同的测试区域,占地 2100 英亩。对于 GoMentum,我们在真实和虚拟场所进行了测试。

LGSVL 支持创建、编辑和导出现有 3D 环境的高清地图。此功能允许用户在 3D 环境中创建和编辑自定义高清地图注释。如图7所示,LGSVL的高清地图标注信息非常丰富,如车道、车道分界线、交通信号灯、交通标志、行人步行路线等。在图表的右侧,用户可以通过选择“创建模式”下的相应选项进行不同的注释。

高清地图注释可以导出为以下几种格式之一:Apollo 5.0 高清地图、Autoware 矢量地图、Lanelet2 和 OpenDrive 1.4,因此用户可以将地图文件用于自己的自动驾驶系统。另一方面,如果用户拥有支持格式的真实世界高清地图,他/她可以将地图导入 LGSVL 的 3D 环境。目前部队炮车驾驶员模拟训练教具图,支持导入的高清地图格式为 Apollo 5.0、Lanelet2 和 OpenDrive 1.4。借助地图标注的导入导出功能,用户可以从其他地方导入高清地图,编辑标注,然后再次导出,确保LGSVL中使用的高清地图与用户自动驾驶系统使用的地图匹配。

E. 测试场景

测试场景包括模拟可以放置自动驾驶系统以验证正确和预期行为的环境和情况。它包含许多变量,例如一天中的时间、天气、路况以及汽车、行人等移动物体的分布和运动。LGSVL 提供了一个 Python API,使用户能够与虚拟环境进行交互。用户可以编写脚本来根据自己的需要创建场景——生成和控制非玩家角色车辆和行人,以及设置环境参数。

4 应用实例

LGSVL 支持各种自动驾驶测试应用。本节列出了一些示例。由于 LGSVL 生态系统是一个开放的环境,我们相信用户会将这个范围扩展到更多不同的领域。

A. SIL 和 HIL 测试

LGSVL 支持自动驾驶系统的软件在环 (SIL) 和硬件在环 (HIL) 测试。对于 SIL 测试,LGSVL 为不同的传感器生成数据,例如来自摄像头传感器的图像和来自激光雷达传感器的点云数据,以及自动驾驶系统的感知和定位模块使用的 GPS 和 IMU 数据。这允许对用户的自动驾驶系统进行端到端测试。此外,LGSVL 为其他自动驾驶系统模块生成输入,以实现单模块(单元)测试。例如,可以生成一个3D边界框来模拟感知模块的输出作为规划模块的输入,这样用户就可以绕过感知模块(即假设完美感知)来测试规划模块。

LGSVL 支持一组底盘命令,因此运行 LGSVL 模拟器的机器可以与运行自动驾驶系统的另一台机器通信,后者可以使用这些底盘命令来控制模拟的 ego 车辆。这使得 HIL 测试成为可能,其中自动驾驶系统无法区分来自真实汽车的输入数据和模拟数据,并且可以向 LGSVL 发送控制命令,其方式与发送给真实汽车的方式相同。

为了验证我们模拟的有效性,我们与加州大学伯克利分校合作,在 GoMentum 站的数字孪生模型 [32] 中测试了 Scenic [33] 生成的数千个场景,并选择了几个在真实 GoMentum 站测试的代表性场景。有关详细信息,请参阅 [34]。

B. 机器学习和合成数据生成

LGSV 提供了一个易于使用的 Python API 来收集和存储相机图像和激光雷达数据以及各种真实信息 - 遮挡、截断、2D 边界框、3D 边界框、语义和实例分割等。用户可以编写用于配置传感器的内部和外部参数的 Python 脚本,以及以自己的格式生成标记数据以进行感知训练。GitHub 上提供了用于生成 KITTI 格式数据的示例 Python 脚本。

强化学习是自动驾驶和机器人研究的一个活跃领域。在强化学习中,代理在基于策略的环境中采取行动,通常以 DNN 的形式实现,并从环境中接收作为反馈的奖励,进而用于修改策略。在获得最佳解决方案之前,通常需要对大量事件重复此过程。LGSVL 通过 Python API 提供与 OpenAI Gym [35] 的开箱即用集成,使 LGSVL 成为可用于 OpenAI Gym 强化学习的环境。

C. V2X 系统

除了通过配备的传感器感知世界之外,自动驾驶汽车还可以受益于 V2X(车对一切)通信,例如通过 V2V(车对车)从其他车辆获取信息,更多通过 V2I(车对基础设施)环境信息. 在现实世界中测试 V2X 比测试独立汽车更困难,因为它需要其他车辆和基础设施的支持。研究人员通常使用模拟器来测试和验证 V2X 算法 [36]。LGSVL 支持创建真实或虚拟的传感器插件,使用户能够创建特殊的 V2X 传感器以获取来自其他车辆 (V2V)、行人 (V2P) 或周围基础设施 (V2I) 的信息。因此,LGSVL 可用于测试 V2X 系统,也可用于生成用于训练的合成数据。

D. 智慧城市

现代智慧城市系统使用路边传感器来监控交通流量。研究结果可用于控制交通信号灯,使交通更加顺畅。这样的系统需要不同的指标来评估交通状况。例如,我们要设置“停止”数量的指标。当车辆通过某个路口时,“停止”定义为在规定时间内车辆的速度低于某个值,我们需要统计“停止次数”。这些指标很难手动收集。LGSVL 也适用于这种应用。使用我们的传感器插件模型,用户可以定义一种新型传感器来计算汽车“停车”的数量,因为我们有准确的速度和位置信息。

5 总结

我们介绍了基于 Unity 的高保真自动驾驶模拟器 LGSVL 和相关系统。它已经可以与 Autoware 和 Apollo 自动驾驶系统集成以进行端到端测试,并且可以轻松扩展到其他类似系统。给出了几个应用示例来演示 LGSVL 的功能。

模拟引擎是开源的,整个生态系统是开放的,用户可以将 LGSVL 用于不同的应用程序,并为生态系统添加自己的贡献。模拟器将继续得到增强,以满足用户社区的新需求。