APP下载

基于UE4的在线驾驶仿真系统设计与实现

2022-03-30雷一鸣陈雨人

计算机测量与控制 2022年2期
关键词:交通流可视化建模

雷一鸣,陈雨人,汪 凡

(同济大学 道路与交通工程教育部重点实验室,上海 201804)

0 引言

随着我国经济的高速增长和城市化进程中路网规模的不断扩大,道路交通安全越发受到人们重视,采用驾驶仿真系统来进行道路交通试验测试与安全评估已成为了一种主流方法和应用热点[1]。近些年来,驾驶仿真技术已被广泛应用于道路交通安全领域,并展现出了良好的应用前景,具体表现在用模拟仿真技术来评估道路线形安全[2-4]、评估道路交通基础设施[5-7]、评估交通流模型[8-11]等。相对于实车试验而言,采用驾驶仿真系统可以有效模拟实车运动特性和载具结构[12],方便地进行道路交通环境的设置与危险驾驶行为的分析,有着效率高、成本低、节省人力物力以及安全性高等诸多优势[13-14]。目前,驾驶仿真软件系统大多依赖于商业平台,例如SCANeRTMStudio、SiLab等,这些驾驶仿真系统往往存在一定的局限性,例如道路建模流程复杂受限[15]、光照渲染乃至交通流仿真的沉浸感不高[16]、没有很好地将模拟驾驶与交通流仿真很好地融合、采用C/S架构需要配置特定的环境进行安装、功能高度封装使得交互性较差[17]等。

针对上述局限性,设计开发了一个基于虚幻引擎(UE4,unreal engine 4)的在线轻量化驾驶仿真系统。系统采用蓝图可视化脚本与C++编程方式开发各项仿真功能模块,实现根据原始道路线形和交通流资料快速高效搭建仿真场景,在驾驶试验过程中实时将驾驶行为数据存储到MySQL数据库;采用虚幻引擎的像素流送技术完成视频帧到前端的传输,实现轻量化的道路三维建模与在线模拟驾驶;通过寻路、感知、环境查询等逻辑构建车辆AI行为树实现交通流的仿真驱动;并采用前后端分离的方式开发了驾驶仿真信息管理与数据可视化系统。经部署与测试使用,系统达到了预期要求,能够为驾驶仿真与道路安全分析提供新的技术支持,具有重要的现实意义。

1 系统整体设计

1.1 需求分析

基于Web的驾驶模拟仿真实验,要求快速搭建出符合具体实验要求的三维道路模型与交通流环境,有效集成方向盘、油门等硬件设备,通过访问浏览器即可在仿真环境中进行高逼真度的模拟驾驶,支持驾驶行为数据的科学采集、存储与可视化,进而驱动行车环境的安全评估与优化设计。另外,作为具有普适性的轻量化实验平台,需要能够对每次驾驶实验的人-车-路-环境各类信息进行查阅与管理,即能够根据数据库索引快速定位到受试者的性别、年龄、驾龄等信息,受试车辆的类型、最大扭矩、最大转速等信息,道路几何线形的平纵设计参数、行车道和路肩宽度等信息,以及行车环境中的天气气候、噪声情况、交通流量、是否存在突发状况等特征信息。在系统中要求不仅能够灵活设置以上各类信息参数,还能够实时存储到数据库,从而对每次实验的信息数据进行有效归档与回溯。

1.2 设计方案

系统的设计方案与主体架构如图1所示。

图1 在线驾驶仿真系统技术架构

驾驶仿真各项功能模块通过虚幻引擎的蓝图-可视化脚本与C++编程实现。其中道路自动化三维建模模块基于原始道路几何设计方案生成道路中心线,再采用Spline Mesh样条网格体组件生成三维道路模型。车道级真实交通流场景还原模块通过车辆载具开发、车辆生成蓝图开发实现。模拟驾驶与数据采集模块通过Airsim模块集成、行车环境数据计算与存储来实现。硬件设备集成模块通过设置方向盘、油门、制动踏板等各项轴属性映射实现。

数据库设计完成后,将虚幻引擎与MySQL服务器异步连接,存储行车过程的驾驶行为数据。通过Windows身份验证系统以及数据库服务器身份验证系统与服务器的异步连接,可确保在连接耗费时间的情况下驾驶仿真系统主线程不会被阻塞。采用像素流送技术,将驾驶仿真过程中的视频帧随同音频一同流送到Web前端。

基于J2EE技术,采用前后端分离框架来开发驾驶仿真信息管理与可视化平台,内置人-车-路-环境信息管理、道路三维模型漫游、在线驾驶仿真、实验数据导出与图表可视化、自定义数据权限、服务监控与日志管理等功能模块。

2 系统详细设计

2.1 道路自动化建模模块

道路自动化建模是指根据基本的几何线形原始资料自动生成道路三维模型的过程,也是构建高逼真度驾驶仿真场景的基础。原始资料包括道路平面线形(控制点平面坐标、前后缓和曲线长度、圆曲线半径),纵断面线形(变坡点桩号、变坡点高程、竖曲线半径)和横断面线形(行车道宽度、路肩宽度等),通过数学几何计算自动求出道路三维中心线的逐桩坐标,之后在UE4中基于Spline Mesh样条网格体获取逐桩坐标在样条线上的位置和切线朝向、断面类型,开发道路建模蓝图,即可自动化生成需要的道路三维模型。具体流程见图2。

图2 道路自动化建模流程图

2.2 车道级真实交通流场景还原模块

系统需要结合驾驶仿真的应用需求,有效还原精确到车道级别的真实交通流场景,同时保证周边交通流能对模拟驾驶车辆做出真实有效的反馈。首先需要使用轮式载具(Wheeled Vehicle)蓝图类创建车辆载具,包括常见的小客车、大货车等车型,设置车辆的骨架网格体、物理资源、动画蓝图等。交通流车辆载具开发完毕后,开发车辆的行驶功能,以及设置AI行为树来编辑行驶规则,保证添加的周边交通流能够对模拟驾驶车辆以及其余车辆、障碍物等做出真实的反馈。主要涉及到的变量,见表1。

表1 开发交通流载具主要变量

通过设置寻路、感知、环境查询、构建AI行为树决策流程实现与真实交通流相适应的行驶车辆的仿真驱动,主要逻辑可简化为图3。

图3 交通流场景仿真流程图

选取某城市道路作为示例,根据原始交通流资料设置各个车道的交通流参数后,仿真示意图见图4。图中展示了交通流中部分车辆的运行状况。

车辆1:正常直行,开启直行检测射线,未检测到前方存在车辆或障碍物,直行检测射线显示为绿色;

车辆2:开始减速,检测到前方较近处驶入车辆(车辆3),直行检测射线由绿色转为红色;

车辆3:处于正常转向过程,直行检测射线和转向检测射线均未检测到障碍物;

车辆4:即将向左转向,开启转向检测射线,直行检测射线和转向检测射线均未检测到有效障碍物。

图4 交通流运行示意图

为了方便实验人员进行交通流设置,开发如图GUI交互界面,在实验前对实验场景中不同行驶路径的交通流进行简单的设置,相关变量包括车辆的最小与最大生成间隔、最小与最大目标车速、不同车辆类型的所占比例等,以城市道路示范路段为例,交通流设置界面如图5所示。

图5 交通流设置界面

2.3 驾驶仿真与数据采集模块

Airsim是微软开发的一款基于虚幻引擎构建的无人机、汽车等模拟器的开源平台,它提供了基本的车辆动力学引擎,支持使用仿真车辆进行模拟驾驶以及通过脚本控制车辆进行自动驾驶[18]。在虚幻引擎中集成Airsim,软件模块经过开发调试无误后,即可与硬件设备相集成。主要流程包括:将模拟驾驶硬件设备连接到主机上,安装相应的驱动程序,测试成功连接方向盘、制动踏板、油门等硬件;在虚幻引擎中启用“Windows RawInput”插件,与硬件输入相匹配,添加新设备配置;设置GenericUSBController的各类轴属性映射,完成后即可配合模拟驾驶器进行驾驶实验。

Airsim中采集的数据位于世界坐标系中,例如Vx,Vy,Vz,不能直接得到车辆运行过程中的轴向、横向和纵向车速。因此,在虚幻引擎中需完成世界坐标系到局部坐标系的转换。以四元数ow、ox、oy和oz作为入手点,将四元数转换为欧拉角,从而得到车辆的轴向、横向和纵向车速与加速度。四元数使用一个三维向量表示转轴,和一个角度分量表示绕此转轴的旋转角度,例如四元数(w,x,y,z),其中x、y、z代表的是向量的三维坐标,w代表的是角度。根据四元数即可求出欧拉角或者旋转矩阵,根据ow、ox、oy、oz即可将坐标系旋转到当前局部坐标系,获得车辆运行时的朝向,从而计算出对应的速度与三轴加速度。在UE4中编写对应的数据接口,将需要的驾驶仿真数据按固定频率进行采集。

2.4 数据库设计

数据库表存储多层次信息,包括用户信息表、车辆参数表、道路线形表、驾驶实验表、实验数据表、数据权限表、操作日志表等。

其中用户信息表用于校验登录用户身份与权限,以驾驶员身份为例,表中字段包括驾驶员的编号ID、姓名、性别、年龄、驾龄、性格评估、个人备注等,用户信息表会与数据权限表、驾驶实验表相关联。车辆参数表的字段有车辆名称、类型、轴距、最大扭矩、最高转速、差速器类型等,以适应不同的驾驶仿真实验。道路线形表中的字段包括控制点平面坐标、前后缓和曲线长度、圆曲线半径、纵坡坡度、竖曲线半径、行车道宽度、路肩宽度等。驾驶实验表中的字段包括驾驶员编号、车辆编号、实验环境、工程背景、实验时间、实验备注等。实验数据表的字段包括驾驶试验编号、世界坐标位置、车速、三轴加速度、档位、转速、行驶里程、时间戳等。

2.5 系统前端设计

系统前端信息管理与可视化模块采用Vue.js、Element UI、Echarts等框架设计与开发,可实现人-车-路-环境的信息查看与修改,实验数据的查看与导出,图表图像的可视化等功能。通过对Axios进行封装,用户能够对各项UI组件进行数据交互,在请求的过程中使用的Json作为前后端数据传输的格式。作为一种轻量级数据交换格式,Json易于读写与解析,且由于格式压缩,占用带宽小[19]。

前端的在线驾驶仿真模块使用虚幻引擎的像素流送技术来实现。像素流送使用WebRTC点对点通信框架,保证系统使用者和虚幻引擎应用程序之间的延迟很低。像素流送技术的原理是使用H.264视频压缩方式对每个渲染帧的最终结果进行编码,将生成的视频帧随音频一同打包到媒体流送中,进而发送到一个或多个连线的浏览器上。信令和Web服务器则负责交涉 浏览器和像素流送插件之间的连接,向Web端提供HTML和JavaScript环境,从而将虚幻引擎中的驾驶仿真环境实时在线传输到前端页面,流程见图6。根据UE4内置的emitUIInteraction函数进行二次开发,从而提供与用户的界面交互。只需要输入相应的IP地址,即可让任何人通过任何设备的浏览器进行轻量化的驾驶仿真实验,从而实现驾驶仿真的轻量化、无插件、跨平台特性[20]。

图6 像素流送流程图

2.6 系统后端设计

系统后端为Web前端提供服务支持,采用经典技术组合(Spring Boot、Spring Security、MyBatis、Redis等)进行开发,应用MVC框架(模型-Model、视图-View、控制器-Controller)将代码逻辑解耦。在程序执行期间,驾驶仿真系统用户将请求发送到控制器,控制器根据请求类型将指令发送到相应的模型层。模型层与数据库交互完成之后,根据业务的逻辑选择相应的视图进行显示,用户就获得了这次交互的反馈信息,从而增加代码的扩展性与复用性[21]。

针对系统的访问权限问题,由于系统涉及到多个角色,包括驾驶实验受试人员、驾驶实验数据分析人员、平台管理维护人员,每个角色拥有的功能菜单和访问权限是不同的,例如驾驶实验受试人员可以进行在线的驾驶仿真,而实验数据分析人员则可以进行实验数据的查看与处理,然后系统后台管理人员才可以对用户进行管理,因此采用RBAC思想进行权限控制,即一个用户能够拥有若干角色,每一个角色能够拥有若干个菜单,并通过设置对应的权限,来构造成“用户-角色-菜单”的授权模型,不同类型的角色能够访问的平台功能是不同的,用户与角色、角色与菜单之间构成了多对多的关系。

针对系统的数据存储问题,数据持久层采用MyBatis,能够支持个性化Sql语句与存储过程,将JDBC具体的细节掩盖,能够灵活高效地对驾驶仿真信息进行查询[22]。数据库采用关系型数据库MySQL与缓存数据库Redis相结合的方式,MySQL用来存储驾驶员-车-路-环境等信息,将它们持久化存储到硬盘内。考虑到由于仿真场景能够基于Web进行漫游,系统的并发量可能较高,采用Redis将用户登录信息、数据库常用字段的键值对参数存储到缓存中,可以有效减少直接访问数据库的次数,提高数据加载与查询效率。

3 实现效果

经过虚幻引擎内部逻辑开发、数据库表间关系设计、系统架构开发和前后端接口联调,系统已经能够平稳运行且具备了较好的实现效果。

在道路自动化三维建模页面,输入的道路几何线形原始资料可自动计算出道路中心线的逐桩坐标,再结合道路横断面类型特征进行物理材质参数化设置,在Spline Mesh组件上进行网格体生成,以某林区道路为例,道路自动化建模如图7所示。

图7 某林区道路自动化三维建模

在模拟驾驶页面,使用者无需安装特定软件,通过浏览器即可进行在线的模拟驾驶,在实验前设置驾驶实验是否需要加入交通流,以分别适应需要自由流和非自由流的驾驶仿真环境。此外,设置是否需要将本次实验的驾驶行为数据存储进数据库,以分别适应需要存储数据的正式实验与不需要存储数据的测试性实验,并且可以填写记录到数据库的采集频率和实验备注,其中采集频率可以精确到0.1 s,之后即可正式进行驾驶仿真实验,如图8,图9所示。

图8 实验基本信息填写

图9 基于Web的在线驾驶仿真实验

如果勾选了“是否需要存储到数据库”选项,平台则会按照指定频率采集驾驶行为数据,可在平台的“驾驶数据”菜单栏中查看原始记录,同时,可导出数据为对应的.csv文件供进一步分析,其中实时记录的部分类型行车数据见图10。

图10 驾驶实验中的行车数据预览

并且,通过对数据库中数据进行格式化管理,进而对不同指标维度的仿真数据进行通用接口配置,系统提供了高质量、高拓展性的数据分析接口与可视化平台,为实验用户提供了轻量高效的数据查询与展示服务。以对上海市中环的北虹立交进行的驾驶仿真实验为例,见图11,系统能够根据用户需求配置对应的可视化图表,并调用后端对应算法计算出各个匝道路段单元的安全指数等分析指标。

图11 北虹立交驾驶仿真信息可视化平台

4 结束语

文章针对传统驾驶仿真软件存在的建模受限、配置冗余等一系列局限性,基于UE4开发并测试了道路数字化建模与在线驾驶仿真系统。实现的功能模块有:角色用户管理、道路自动化三维建模、驾驶员-车辆-道路-环境信息管理、真实交通流场景还原、在线进行驾驶仿真实验、驾驶实验数据实时采集与可视化等。系统经过测试确保能平稳运行,满足轻量化、自动化、智能化的业务功能需求,且能够有效减少驾驶实验成本、扩大数据样本,为研究人员提供一个具有普适性的轻量化实验平台。此外,系统还提供了数据接口,可针对特定需求进行二次开发。随着智能化技术的不断发展,未来如何更有效地融合虚拟现实、大数据、人工智能等新技术对驾驶仿真系统进行精细化完善,驱动行车环境安全评估与优化设计,是需要进一步研究的重点。

猜你喜欢

交通流可视化建模
数据可视化设计在美妆类APP中的应用
思维可视化
物理建模在教与学实践中的应用
在经历中发现在探究中建模
思维建模在连续型随机变量中的应用
求距求值方程建模
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学
复变函数共形映射的可视化实验教学