基于虚拟校园的自动驾驶仿真测试平台设计与实现
作者: 杨心悦 刘向东 郭宏宇 张缘 张志伟 李程昊
摘要:针对自动驾驶中实车道路测试成本高、场景局限性大等问题,围绕校园特殊场景下自动驾驶训练的需求,提出并实现了一种基于校园环境的自动驾驶虚拟仿真测试平台设计方案。采用基于无人机倾斜摄影的三维重建技术搭建出校园建筑物模型;基于虚幻引擎进行平台场景搭建;基于像素流送技术开发了轻量级Web客户端;基于AirSim开发了机器学习训练接口。设计了两项模拟实验,经过测试,系统能够平稳运行,实现了直观、方便地进行自动驾驶仿真测试的目的,具有较强的实践价值。
关键词:自动驾驶;虚拟仿真;虚幻引擎;AirSim;像素流送
中图分类号:TP311.5 文献标识码:A
文章编号:1009-3044(2022)30-0023-04
开放科学(资源服务)标识码(OSID):
1 引言
随着自动驾驶技术的发展,对于自动驾驶汽车的测试需求也逐渐提高。目前,自动驾驶汽车的测试评价体系主要包括两种技术,即传统的道路场地测试和虚拟仿真测试。由于传统的实车道路场地测试需要极高的时间和资金成本,并且具有一定的危险性,完全使用实车道路测试并不符合实际需求。相比之下,基于场景的虚拟仿真测试成本较低,可以节约大量人力物力,且安全性更高[1]。因此,虚拟仿真测试技术已经成为自动驾驶车辆测试不可或缺的手段,将其与实车道路场地测试结合,可以取得非常贴近实际的测试效果[2]。目前国内外众多科研机构对此展开了广泛的研究。例如,百度公司开发的Apollo仿真平台,微软研究院开发的无人机及自动驾驶模拟平台Airsim等。
基于场景的自动驾驶虚拟仿真测试主要包含三个方面的内容:测试场景、虚拟测试平台、加速测试方法[3]。其中测试场景是虚拟仿真测试的核心。为了确保自动驾驶汽车测试能够覆盖足够多的道路、环境、交通等情况,需要建立丰富的测试场景库,以便在不同的场景下进行自动驾驶的训练。
基于上述背景,本文面向应用于校园特殊场景的自动驾驶测试需要,依托虚幻引擎(Unreal Engine)设计并实现了一个基于校园场景的自动驾驶仿真系统。平台采用吉林大学中心校区虚拟校园环境作为仿真测试场景;通过构建AI行为树实现行人及交通流的仿真;采用蓝图可视化脚本编写车辆动态仿真模型;集成Airsim插件用于自动驾驶算法的测试;使用VR技术可在车辆行驶时观察周围环境及评价测试效果;采用像素流送技术完成视频帧到Web端的传输,实现轻量级的在线测试客户端。
经过部署和测试使用,平台达到了预期的要求,可以为自动驾驶仿真测试和道路安全分析提供技术支持,具有较高的使用价值。
2 系统架构
系统采用C/S和B/S混合架构进行开发,主体架构如图1所示。
平台的架构大致分为三个部分,即场景搭建、系统前端设计与部署以及机器学习算法训练器。
其中场景搭建是指搭建出虚拟校园环境。虚拟校园环境作为模拟车辆行驶的场景,是整个自动驾驶仿真平台的基础,其主要包括两部分,即静态场景和动态场景。静态场景指校园建筑物、道路、植被、湖水以及静止的人和车辆等;动态场景指天气、季节、光线变化以及处于运动状态的行人、行驶的车辆等。其中校园建筑物建模采用基于无人机倾斜摄影的三维重建技术实现,其他场景元素采用UE4中蓝图—可视化脚本和C++编程实现。
系统前端完成与用户的交互工作,系统采用C/S和B/S混合架构,除了实现默认的本地客户端外,还实现了一个轻量级的Web前端。用户可以根据需求和设备情况选择对应的客户端。
Web前端采用UE4的像素流送技术实现,其原理是在用户不可见的主机上运行UE4应用程序,该主机负责运行应用逻辑和渲染画面,并将此渲染输出编码到一个媒体流送中,再通过一个网页服务堆栈进行传递,用户就可以在电脑或移动设备上的浏览器中查看直播流送[4]。
其架构如图2所示。
使用该技术搭建系统前端具有非常明显的优点,用户可以使用配置较低的主机查看原本无法显示的高质量画面,且几乎不会占用用户本地的存储空间。用户只需要保证网络的稳定性,就可以使用低延迟、高质量、轻量级、跨平台的仿真系统。
本地客户端采用UE4项目默认打包生成的应用程序实现,相比于Web端,本地客户端的功能较为全面,如用户可以将HTC VIVE等程序支持的VR设备连接到主机并启动本地客户端,就可以在VR视角下实时观看无人机/车的行驶过程。
机器学习算法训练器采用编程接口的方式实现。基于AirSim,系统提供了机器学习训练的开放接口,通过实现该接口,用户可以方便地在场景中开展基于多种目的的机器学习训练,并且可以自由地选择对应的机器学习算法。
3 模拟环境构建
3.1 Unreal Engine 4和Airsim概述
Unreal Engine 4是由Epic Games开发的一款游戏引擎,具有强大的画面实时渲染能力,能够为开发者提供多种多样的接口,并且支持使用蓝图(Blue Prints)进行编程[5]。诸多强大、便捷的功能使其成为目前主流的游戏引擎之一。除了作为游戏开发平台,UE4也可以用于多种3D创作活动,如制作虚拟实验平台,开发建筑可视化漫游应用等。目前UE系列的全新版本UE 5已经发布,其具有比UE4更加真实的3D渲染效果、更加优质的画面质量。本文使用的UE4可以方便地与UE5进行对接,便于后续进一步开发。
AirSim是由微软开发的一个开源的、跨平台的无人机、汽车等的模拟器。它支持使用目前流行的飞行控制器(如PX4和ArduPilot等)进行软件在环模拟,以及使用PX4进行硬件在环仿真,从而实现物理和视觉上的模拟仿真[6]。AirSim作为UE4的插件,可以很方便地集成在UE4的项目中,为无人机/车提供仿真模拟。
3.2 自动建模
在模拟环境构建的过程中,将建筑物建模和校园整体环境构建分开进行处理。平台中校园场景的建筑物全部是参照现实中存在的建筑物搭建而成,因此考虑采用基于无人机倾斜摄影的三维重建方法来搭建建筑物模型。
首先采用倾斜摄影技术,利用无人机拍摄目标建筑物的影像。倾斜摄影除了能够获得垂直拍摄的图片以外,还可以从四个倾斜的角度获取到同一建筑物不同视角的影像,丰富了建筑物顶部及侧视的高分辨纹理,更为真实地反映建筑物及其周围环境的真实情况[7]。
另外,对建筑物每一面进行拍摄都需要获取到大量的图片。图片是还原建筑物的支撑,同一区域大量的图片能够减少模型出现空洞、塌陷等情况,也便于还原高精度的建筑物模型。倾斜摄影的具体操作过程是:首先确定建模区域并规划好无人机的飞行轨迹;然后将飞行轨迹导入无人机中,设置无人机拍摄的角度和拍摄的时间间隔;接下来放飞无人机进行拍摄;最后导出无人机拍摄的图片进行后续处理[8]。
第二个步骤是使用MetaShape软件进行三维重建。首先导入无人机拍摄的图片,对齐照片获取到拍摄区域的少量点云;然后通过密集点云获取到大量该区域的点云,此时能够看出建筑物的整体雏形;之后生成网格,即可获取该建筑物的灰度网格模型;最后生成纹理,生成的纹理能够准确地附在其对应的模型面片上,使得建筑物模型按比例地还原了原建筑,此时就生成了一个真实的三维模型。生成的一个实景模型如图3所示。但在生成的模型中除了建筑物,还有一部分多余的周围环境模型,将该模型导入到3DMAX中进行修剪和简单处理,即可获得一个完整的建筑物三维模型。另外,由于建筑物模型较大,组成模型的面片高达百万,可通过3DMAX对整体模型进行减面操作,使在不影响模型整体形象的情况下,获得一个较高精度的建筑物模型。
由于三维重建需要大量的图片且生成的模型所占内存较大,系统中也使用了SketchUp来手动进行建筑物模型搭建。参考建筑物图片对建筑物进行大体上的还原,再将建筑物图片中相应的建筑物纹理截取后,附在模型上相应的位置,使用SketchUp中的玻璃、金属等材质完善模型,即可获取到相应的建筑物模型。
基于倾斜摄影的三维重建可以获取到高精度的、真实的建筑物模型,其纹理效果、模型深度等与原建筑物完全相似;使用建模软件SketchUp得到的模型也能做到与原建筑很相似,使用其材质库中的材质来完善模型,可以使模型在光照下展现较为真实的光照效果,且建造的模型文件占用内存较小,但模型构建的过程中会缺乏原建筑物中的细节。
3.3 环境构建
环境构建指构建出除了建筑物之外的校园环境的过程。虚拟校园环境作为模拟车辆行驶的场景,是整个自动驾驶仿真平台的基础。
Twinmotion是一款面向建筑需求的实时渲染软件,多用于建筑设计、可视化领域,支持天气、植被、地形、室内控制等多种功能[9]。使用Twinmotion可以很方便地搭建出校园环境的整体模型的雏形。另外,虚幻引擎提供了非常丰富的环境组件,可以很方便地构建出校园内的环境,如道路、草地、湖水等[10]。因此,环境构建所采用的主要工具是Twinmotion和虚幻引擎。
校园环境构建的具体操作为:
1)在Twinmotion的加载环境选项中选择城市,在其所提供的地图中搜索并导出吉林大学前卫南区附近的地图模型,此时Twinmotion可以根据选择范围自动生成环境模型,但自动生成的地图模型均为灰色模型,需要后期完善。然后将该模型导入UE4中,此时就获得了一个基础的校园整体模型;
2)接下来使用UE4提供的datasmith插件将建造好的建筑物模型导入项目文件中,并替换掉原有的灰色建筑物模型;
3)之后用地形工具绘制地形作为校园的地面,并将地面材质更换为制作好的草地材质,同时添加两种不同的地形图层使材质看起来更真实;
4)参照实际地图在地形上使用样条线绘制马路、泥土路径和人行道,并分别更换样条网格体,将其材质替换为与现实中类似的材质;
5)使用地形雕刻工具来塑造地形,并使用地形—雕刻—平滑与地形—雕刻—平整将草坡修得较为平滑;
6)使用植物工具,绘制各式树木等植物;
7)将垃圾桶、路灯等模型加入环境,增强环境的真实性。
4 环境控制
4.1 模拟交通流
为了使得实验场景更加真实以满足在多种条件下的训练需求,向环境增加具有校园特殊环境中行为模式的行人以及车辆,以模拟校园环境下的随机交通流以及干扰交通流两种类型的真实交通流[11]。
1)行人
利用虚幻引擎中的蓝图可视化脚本系统进行程序编写,设计出可以按照规定路线行走或具有随机性行为的行人AI。
行人创建的具体步骤如下:
①首先建立继承虚幻第三人称人物类的人物蓝图,通过对人物蓝图的编写,实现对人物基本属性如大小、方向、行走速度等设置;利用ReadyPlayerMe插件创造人物模型,并且利用blender进行模型修改,最后利用Mixamo对人物模型获取模型动画,在虚幻引擎中集成,设计出不同形象的人物模型。
②然后是行为及行走路线控制程序编写,利用蓝图编写AIControl控制器控制行人AI,用Spline样条线组件进行路线规划,在设计的路线中生成一些刺激源,在AIControl中利用虚幻AI框架下的AI感知组件,对Spline样条线组件下的刺激源进行检测,实现行人沿着规划的路径不断地向有刺激源的点位行走,并且利用伪随机的方法让行人在如路口的情况下可以选择不同点位以达到随机交通流的效果。
③同时,对于一些特定的场景需求,引入了一些特殊的行人,通过导入不同动画,将其绑定于模型,让人物动作多元化,如打电话,或者交谈中的两人等;引入自行车模型与人物模型结合,搭配相应动作,使得更加符合校园场景。