基于虚拟校园的自动驾驶仿真测试平台设计与实现
来源:用户上传
作者:杨心悦 刘向东 郭宏宇 张缘 张志伟 李程昊
摘要:针对自动驾驶中实车道路测试成本高、场景局限性大等问题,围绕校园特殊场景下自动驾驶训练的需求,提出并实现了一种基于校园环境的自动驾驶虚拟仿真测试平台设计方案。采用基于无人机倾斜摄影的三维重建技术搭建出校园建筑物模型;基于虚幻引擎进行平台场景搭建;基于像素流送技术开发了轻量级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等)进行软件在环模拟,以及使用PX4M行硬件在环仿真,从而实现物理和视觉上的模拟仿真[6]。AirSim作为UE4的插件,可以很方便地集成在UE4的项目中,为无人机/车提供仿真模拟。
nlc202212091101
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样条线组件下的刺激源进行检测,实现行人沿着规划的路径不断地向有刺激源的点位行走,并且利用伪随机的方法让行人在如路口的情况下可以选择不同点位以达到随机交通流的效果。
③同时,对于一些特定的场景需求,引入了一些特殊的行人,通过导入不同动画,将其绑定于模型,让人物动作多元化,如打电话,或者交谈中的两人等;引入自行车模型与人物模型结合,搭配相应动作,使得更加符合校园场景。
nlc202212091101
2)车辆
利用虚幻引擎中的蓝图可视化脚本系统进行程序编写,设计出可以按照规定路线行驶的车辆。
车辆创建的具体步骤如下:
①首先建立继承虚幻载具类的车辆蓝图,通过继承,可以获得载具的基本行动功能。对蓝图进行设置,更改车辆大小、行进速度、扭矩、悬架等属性。
②编写车辆控制程序的蓝图,使用Spline样条线组件规划车辆路径,在设计好的路线上画出路线,然后利用AI move to函数,控制车辆沿着规划样条线移动。
对行人和车辆的行为控制,设计出了随机交通流以及干扰交通流的两种交通流模式,包括行人横穿马路,车辆横穿正常驾驶,人车混杂复杂路口等多种实验场景,充实了实验内容,实现了具有校园环境特征的包括行人、自行车及车辆的模拟交通流。
4.2 天气、昼夜控制
考虑到现实中天气及昼夜变化也会对自动驾驶训练效果产生影响,平台构建了完善的天气及昼夜调节系统[12]。利用虚幻引擎蓝图―可视化脚本与Airsim的天气粒子可以实现天气和昼夜的动态变化。
天气控制:第一步,将Airsim的天气粒子放入场景,并与界面蓝图绑定,在界面蓝图中添加按钮,并通过图像遮住和按钮隐藏让界面通过更好的效果来进行控制,将按钮的点击与天气粒子的可视性相绑定,通过天气粒子的是否可视达成在与不在的效果,第二步,找到player0即当前使用者位置,在每一帧均将使用者的位置传递给天气粒子,并将天气粒子的位置更改为改位置z轴加30,这样可以使使用者始终处于天气的覆盖范围,且不需要考虑对过多的粒子进行渲染时产生的问题[13]。天气控制的实现如图4所示。
昼夜控制:昼夜控制的核心是对场景中directlight的y轴进行转换,在界面蓝图中,将y轴的坐标与换条组件中的滑块进行绑定,使滑块的移动可以实时改变y轴改变昼夜情况,在关卡蓝图中,在每一帧对场景中的skylight进行更新,保证天空的展示实时与光照情况相匹配。昼夜控制的实现如图5所示。
5 模拟实验
为了测试系统的仿真模拟效果,设计了两项模拟实验,分别使用了深度学习和强化学习算法,以便从多个角度测试系统的可用性和稳定性。
5.1 基于深度学习的行人车辆目标检测实验
整体实验步骤是利用虚拟实验平台进行图像采集后获取训练集,对图片进行预处理,数据增强,训练深度学习后进行目标检测模型,对模型进行效果检测。
1)图像收集。利用Airsim的视频采集功能,将车辆实时采集的影像流实时转化为可被分析的图片数据,同时Airsim采集具有行人或无行人的图像作为模型训练的原始数据集。
2)进行图片预处理以及数据增强。对图片进行预处理可以消除图像中的无用数据。目标检测实验过程中,重要的预处理过程就是对于图像进行数据标注,对图像中的人物模型所处的区域图像框坐标进行标注,并添加标签指出其为行人。常见的面向目标检测的数据增强方法有对图像的裁剪、翻转、比例缩放、噪声处理等,这些方法可以增加训练的数据量,添加噪声数据还可以增强模型的鲁棒性。平台对于收集到的图像进行图片裁剪、翻转、增加噪点处理,并且将其扩充至原有的数据集中。
3)基于深度学习的目标检测方法模型训练,在百度飞桨云平台上进行在线模型训练,基于开源框架PaddlePaddle,使用行人运动数据集对YOLOv3神经网络模型进行数据训练。
4)最后是模型进行检测,利用Airsim的图像采集功能,以0.1s为时间间隔采集路况影像,将图像输入到模型中,输出的预测结果是行人处于图像位置的图像框的坐标。利用OpenCV将输出结果与收集图像结合,将图片以及标注信息以帧的形式拼接为视频,实时显示。实验结果如图6所示,可以看出,车辆成功识别出前方行人。
利用虚拟实验平台,可以轻松获取大规模的数据集,同时可以设计特定的场景进行数据集的验证。
5.2 基于强化学习的行车避障实验
该实验是通过对车辆曾经的相撞经历进行强化学习,使其在行车过程中遇到相同场景时能够自行进行避障的过程。
实验流程包括:
1)通过Python程序对行车进行控制,使车辆在场景中行驶。利用AirSim提供的接口,在行驶过程中每隔一段时间(约0.1s)拍摄一张车辆前方的图像,并保存最近拍摄的10张图像,直到车辆发生碰撞,程序结束运行,并将最后10张图片存储为jpg文件;
2)对10张图片应用强化学习算法进行训练,并储存训练模型;
3)再次通过Python程序使车辆按照原轨迹再次行驶,在运动过程中时拍摄车辆前方图片,并将该图片与之前10张图片进行训练后的结果进行比对, 当二者的相似度高过一定阈值时,车辆自动刹车,即表现为车辆自动避免碰撞。
6 结束语
本文针对自动驾驶测试中实车测试成本高、机制不灵活、场景限制多等局限性,使用UE4开发了一个基于校园场景的自动驾驶仿真测试系统。针对校园的特殊交通环境,系统搭建了一个真实且完整的校园仿真环境,并实现了轻量级的客户端,同时开放了算法测试接口。系统经过测试能够确保稳定运行,为自动驾驶虚拟仿真测试提供了直观、方便的实验平台。随着人工智能和虚拟现实技术的发展,将来可以进一步融合这些技术来完善和扩展系统功能,从而增强系统的仿真性和实用性。
参考文献:
[1] 王润民,赵祥模,徐志刚,等.一种自动驾驶整车在环虚拟仿真测试平台设计[J].汽车技术,2022(4):1-7.
[2] 上官伟,李鑫,曹越,等.基于虚实结合的自动驾驶仿真测试技术与应用[C].第十六届中国智能交通年会科技论文集,2021:490-499.
[3] 朱冰,张培兴,赵健,等.基于场景的自动驾驶汽车虚拟测试研究进展[J].中国公路学报,2019,32(6):1-19.
[4] 雷一鸣,陈雨人,汪凡.基于UE4的在线驾驶仿真系统设计与实现[J].计算机测量与控制,2022,30(2):179-185.
[5] 李浩铭,付战平,王志乐,等.基于UE4引擎的虚拟训练系统的设计与实现[J].信息技术,2022,46(1):84-89.
[6] 周游.基于AirSim仿真平台的无人机三维避障算法研究[D].成都:电子科技大学,2020.
[7] 王宇,邢希凯,赵胜楠.基于无人机倾斜摄影三维模型构建及网页发布[J].地理空间信息,2022,20(6):17-19,23.
[8] 曹琳.基于无人机倾斜摄影测量技术的三维建模及其精度分析[D].西安:西安科技大学,2016.
[9] 苏醒.浅析渲染软件在景观规划应用中的对比――以Lumion和Twinmotion软件为例[J].内蒙古科技与经济,2021(21):86-87,90.
[10] 杨文阳,孟青青.交互式数字校园虚拟漫游系统应用平台[J].计算机系统应用,2021,30(9):92-97.
[11] 花威,史庭俊,吕强.基于模型在环仿真的自动驾驶虚拟测试平台[J].电子技术与软件工程,2021(8):144-148.
[12] 王晓宇,孙卡.基于osgEarth的三维虚拟校园可视化[J].计算机与现代化,2020(11):89-93.
[13] 郝孜奇,张文胜.基于Unity3D的铁路实训虚拟仿真系统开发[J].计算机仿真,2020,37(6):99-103,241.
【通联编辑:谢媛媛】
nlc202212091101
转载注明来源:https://www.xzbu.com/8/view-15443064.htm