张文胜,岳 康
1.石家庄铁道大学 交通运输学院,石家庄 050043
2.河北省交通安全与控制重点实验室,石家庄 050043
随着社会经济的快速发展,我国汽车保有量及驾驶员数量迅猛增长。截至2019年,全国汽车保有量达2.62亿辆,机动车驾驶人达4.22亿人。汽车保有量与驾驶员数量的上升,增加了交通事故的发生概率。2019年,全国道路交通事故万车死亡人数高达1.80人[1],交通事故俨然成为全社会不可忽视的一个重大问题。相关研究表明,驾驶员因素是造成交通事故发生的主要因素,其中驾驶员的驾驶前风险容忍度及驾驶中的不安全驾驶行为是引发交通事故的主要人为因素[2]。因此,针对违规驾驶员以及驾驶学习者进行驾驶安全教育意义重大。
传统的驾驶安全教育,受时间、场地、安全、成本等因素限制,培训效果难达到预期。因此,改进传统驾驶安全教育方式是提高驾驶员交通安全素养的重要途径。Goodge等[3]研究发现虚拟现实技术在道路危险感知培训和评估方面较2D技术更具优势;Bari等[4]研究发现基于虚拟现实的训练削弱了人们对平交路口和超速行驶的冒险态度,证明了VR技术在促进交通安全方面的潜力;赵晓华等[5]基于VR技术,针对典型的违法驾驶行为,构建了动态教育模式的驾驶安全教育系统;Cutello等[6]通过让年轻司机使用VR技术观看道路安全电影,以减少年轻司机的危险驾驶行为;Hsu等[7]使用Unity3D开发了一款Android手机游戏,通过VR游戏的方式增强驾驶安全的学习效果;León-Paredes等[8]开发了基于VR的系统,让用户从旁观者角度识别虚拟司机可能犯下的错误,并允许其进行有意识的控制,以此提高用户学习能力;Xie等[9]应用VR技术,构建了多种灾难类型中的汽车事故案例,用以培养驾驶员在事故中的安全意识。
然而,上述研究主要集中于对驾驶员进行游戏式的教育,增加了学习的趣味性,但应用场景单一、系统交互性不足、教育内容存在局限性,教育目的没有从造成交通事故的驾驶员本身因素分析,缺乏对驾驶员安全认知的深层教育。本文在引发交通事故的人因理论基础上,提出基于VR技术的驾驶仿真及安全教育系统,根据不同的人为因素,开发具有针对性的学习模块,建立安全高效的学习模式,从而提升驾驶员危险感知能力及驾驶安全素养,对减少交通事故发生具有较强的实际应用性。
驾驶仿真及安全教育系统采用C/S架构,以Unity3D游戏引擎作为系统开发平台。Unity3D作为实时3D内容的创作平台,被广泛应用于工业、教育等行业[10-11]。系统凭借其强大的渲染及资源整合能力,联合3ds Max、SUMO等软件,构建驾驶仿真及安全教育系统,系统总体架构如图1所示。
图1 系统总体架构Fig.1 System architecture
系统通过3ds Max及道路BIM构建逼真的虚拟训练场景,将其导入Unity3D内,通过联合SUMO软件仿真道路车流,搭建科学合理的虚拟驾驶环境;使用HTC Vive及Logitech G29等沉浸式设备作为交互端,进行驾驶行为仿真;同时根据驾驶风险认知及不安全驾驶行为教育需求,基于Unity3D实现屏幕特效,建立违规触发机制,设计安全教育、风险驾驶模拟、三维全景视图三大模块,对各类驾驶员进行针对性教育,综合提升驾驶员驾驶素养及风险规避能力。
高红丽等[12]在分析国家车辆事故深度调查体系数据库内的2 384起案例基础上,将交通事故中的驾驶员因素分为三类,即驾驶前的风险容忍行为、驾驶中的不安全行为以及驾驶后的不安全行为。风险容忍指驾驶员为达成驾驶目的而对不规范驾驶行为的接受程度,而对于驾驶行为的规范教育,传统教育方式多采用大厅宣教及图文教育等方式,并以答题为考核方式,忽略了学员对学习内容的理解认知过程,无法使学员对违规驾驶及交通事故后果严重性形成深刻认识,考核也难以反映学习者对不安全驾驶行为的实际认知程度。基于此,本系统分别设计了安全教育、风险驾驶模拟、三维全景视图三大模块,在保留VR教育系统安全性等优点的同时,使得模块设计更加科学合理,符合驾驶安全教育目的。
安全教育模块引入学习-练习模式,使学员通过UI学习安全规则,再进行相应场景VR模拟训练,深化学员对规则的认识理解。风险驾驶模拟模块设计多种屏幕特效,用于模拟不正常驾驶状态或环境下的驾驶员视景变化,让学员深切感知风险驾驶行为危害,端正学员驾驶态度。三维全景视图体验模块主要通过基于照片构建的三维全景还原交通事故现场,使学员身临其境地观察事故现场,加深对学员的视觉冲击,培养学员对交通安全的敬畏心。三大模块相辅相成,区别于传统的教育方式,强化了其中的薄弱环节,帮助学员强化驾驶技能、增强风险认知能力、提升驾驶安全素养。
驾驶仿真与安全教育系统流程设计如图2所示。
图2 系统设计流程图Fig.2 System design flowchart
启动系统后,学员进入模式选择,根据培训需求选择进入安全教育模块或风险驾驶模拟模块。进入模块后,选择关卡,系统开始加载关卡场景。学员进入安全教育模块,系统通过UI展示及语音播报进行规则教育,学员确定后,进行该规则场景VR模拟训练。学员进入风险驾驶模块,系统播报模拟内容及该风险驾驶危害,播报完成进入模拟驾驶过程。当上述场景触发事故后,系统播报并记录,待确定后选择是否进入VR实景模块或返回关卡选择。系统应用VR技术,将不易理解的学习内容过程转变为实践学习,沉浸式、强交互的学习过程,直接高效,强化学员学习效果。
逼真的虚拟场景增强用户的沉浸性体验,动静结合的虚拟场景更能模拟真实的驾驶环境,有助于用户的知识迁移。如图3所示,驾驶场景中的三维模型主要分为两类:静态模型和动态模型。静态模型一般不发生改变,动态模型在场景中会根据条件变化发生变化,该变化一般以脚本定义。
图3 驾驶训练环境三维模型设计Fig.3 3D model design of driving training environment
2.1.1 虚拟场景搭建
目前关于VR技术在驾驶安全教育的研究中,虚拟场景类型无法满足实际应用需求,应用场景单一。系统为满足应用需求,构建了丰富、全面的安全教育场景。场景中模型基于道路实景数据,采用BIM技术构建道路模型,以3ds Max作为建模软件构建建筑、树木等模型,建成的模型轻量化后导入Unity3D,以此构建高还原度的虚拟场景。同时为场景添加光照、风区、天空盒等元素,使用AudioSource音源组件,为汽车、行人等添加相应音效,营造环境沉浸感。部分场景效果如图4所示。
图4 虚拟场景Fig.4 Virtual scene
2.1.2 道路交通流仿真
模拟驾驶过程中,逼真的沉浸环境能增加用户控制车辆的模拟保真度。而目前针对驾驶仿真的研究及系统开发,对于道路车辆等影响驾驶行为的重要因素考虑不足。虚拟环境对于道路车流的仿真主要通过两种方法:第一种是利用数字孪生技术映射真实车流。第二种是构建虚拟车流的方法。映射实际车流虽然能够很好地反映真实车流状况,但降低了学员驾驶的测试车辆同微观交通间的交互。综合比较,构建虚拟仿真车流的方法最为合适,实现相对简单、满足驾驶交互需求。而在Unity3D中构建虚拟车流,大都使用简单的路径移动脚本来实现,不具备超车、换道等算法,忽略了车辆运动的随机性和多样性等要素,难以反映真实复杂的真实交通。为构建更加真实的车流环境,本文研究了SUMO与Unity3D的联合仿真。
SUMO作为一款开源交通仿真软件,可实现对路网、交通流、信号灯、行人等道路交通元素的仿真构建,其基于物理机理的交通建模,能够正确合理地描述交通状况。SUMO为开发者提供的基于TCP传输协议的TraCI工具(traffic control interface),允许访问正在运行的交通模拟,并通过检索模拟对象的值操纵它们。联合SUMO与Unity3D的仿真构建,即以SUMO作为服务器,Unity3D作为客户端,实现SUMO仿真与Unity3D虚拟场景间信息的实时通信。
相较于道路车辆沿设置路径机械行驶的方式,SUMO的车辆运动模型算法更为接近实际车辆运动过程。在车辆纵向运动中,SUMO的速度计算方法,考虑了车辆当前速度v、车辆最大加速度a、驾驶员熟练度ϵ以及道路安全速度vs速度限值vdes,计算方法如下所示:
其中,ϵ取值范围为0~1,现实意义为驾驶员操作误差。
在车辆横向运动中,SUMO提供了恒定车速变道和瞬间变道两种模型。恒定车速变道模型中,车辆横向运动考虑车道间距离及变道时间;瞬间变道模型则不考虑上述因素,车辆瞬间完成横向车道间移动[13]。系统构建过程中,为更好地仿真实际道路状况,采用恒定速度变道模型。
在Unity3D具体实现中,通过读取路网文件,编辑道路环境,并同步红绿灯状态变化,建立测试车辆与交通流车辆的双向映射,联合仿真驾驶效果如图5所示。需要注意的是,由于测试车辆存在违反SUMO规则限定的行为可能,测试车辆应当设计存在违反交通规则的几率,比如压实线、闯红灯等。
图5 联合仿真驾驶示例Fig.5 Co-simulation driving example
风险驾驶认识是系统降低驾驶员风险容忍度的主要方式,屏幕特效是其实现的关键技术。传统的风险驾驶行为教育大多采用文字警示等方式,存在不形象、不深刻等缺陷。而前述基于VR技术的驾驶安全研究则基本忽略了该内容。系统从认知教育出发,通过屏幕特效及仿真技术,模拟驾驶员疲劳、醉酒、超速及各种时间天气状况下的驾驶体验与视景变化,从而使驾驶员对风险驾驶行为的后果形成深刻的认知。
屏幕特效的实现,主要通过对屏幕空间内像素进行后处理。Unity3D内置的可编程渲染管线(scriptable render pipeline,SRP),允许编码自定义渲染的执行方式,对Alpha测试、模板测试、深度测试等过程自定义像素绘制方式,从而改变最终渲染画面,创造性地实现疲劳、醉酒、超速等状态下的眼睑闭合、视线模糊、扭曲、视野变窄等效果[14-15]。
以视线模糊实现为例,对屏幕空间像素的处理过程,主要通过对屏幕图像进行卷积计算操作,重新定义原像素。如图6所示,将一个3×3的四方形结构作为一个卷积核,在对屏幕空间某个像素进行卷积时,把卷积核中心放置在该像素上,翻转核之后再重新计算像素值,从而得到该位置的新像素值。
图6 卷积核与卷积Fig.6 Convolution kernel and convolution
以高斯模糊为例,其卷积核是一个正方形大小的滤波核,其各元素计算基于公式(3)高斯方程:
其中,δ为标准方差,取值为1,x和y分别对应计算位置到卷积核中心整数距离。为保证滤波后图像亮度不变,需对卷积核中权重进行归一化,如图7所示为高斯模糊一个5×5大小的卷积核。由卷积核可以得出受邻域像素影响,距离越近,影响越大。以该计算方式重新定义Shader渲染过程,处理后的图像从而呈现模糊效果,如图8所示。
图7 5×5的高斯模糊卷积核Fig.7 5×5 Gaussian blur convolution kernel
图8 高斯模糊处理效果Fig.8 Gaussian blur effect
交通事故现场能直接高效地表现事故危害程度,警示学员交通事故严重性。大量研究通过构建事故虚拟场景或制作3D电影达到警示目的,而本系统采用三维全景视图,还原交通事故现场。三维全景视图通过照片方式展现三维场景,从而达到沉浸式阅览效果,相较于虚拟场景更具有沉浸性,同时相较于3D电影更加简单高效,基于Unity3D实现更为简单。
三维全景视图所需全景图像数据,与普通图像不同,在全景图像中,为了表现实际场景中物体的空间约束关系,需要将其投影到具有一定空间特效的曲面上。比较常见的投影方式有球面投影、柱面投影和立方体投影。其中球面模型相较于其他,更易在Unity3D内实现,因此系统采用球面投影作为全景视图实现方式。
平面图像向球面投影,需要正确表达图像上的点与球面对应点的位置关系,该过程主要通过全景图像的拍摄方向及相机投影模型技术得出。平面图像多采用针孔投影模型,其相机坐标系到图像坐标系之间的映射关系有如下公式表示:
(Xc,Yc,Zc)表示相机坐标系下空间内的点,(x,y)表示图像坐标系下对应的点,f为相机的焦距。要在Unity3D内实现三维全景,鱼眼投影相比于针孔投影更适于构建系统所用图像。一般而言,鱼眼投影首先需要将三维点投影到球面,再经过针孔投影模型投影。系统使用带有鱼眼镜头的相机进行拍摄,可以得到如图9所示具有畸变特性的全景图像,有利于表现拍摄画面的长景深效果。
图9 全景图像示意图Fig.9 Schematic diagram of panoramic image
其最终三维全景图像实现方式也较为简单,在Unity3D内创建三维球体,将其Shader修改为Alpha Blended,然后将全景图作为材质的纹理赋予球体,将Camera放置球体内部,通过头戴显示器,即可观察到由图像构成的三维实景。
在安全教育及风险驾驶模拟关卡中,系统需要对驾驶行为进行监测,判断车辆行驶中是否违反规则或发生事故,碰撞检测是实现违规触发的最佳方式。模拟过程中车辆行为及事故检测基于包围盒碰撞检测技术实现。其算法是采用近似规则碰撞器表示复杂外形结构体,通过检测其边界是否发生相交,从而判断发生碰撞[16],其碰撞检测原理如图10所示。
图10 碰撞检测原理示意图Fig.10 Schematic diagram of collision detection principle
图中绿色斜线区域为结构体A与结构体B的重叠区域,而在三维空间下,下式成立,即发生了碰撞。
而在各关卡中,系统广泛采用Box Collider触发器布置触发检测点,其可以实现在不影响车辆行为及不改变场景的情况下,仅通过C#脚本定义碰撞发生事件,实现违规触发机制,准确高效地监测模拟驾驶过程。
驾驶过程中,恶劣的自然天气会影响驾驶员对于行车路况及标志标线等道路环境的信息获取与判断。在前述研究中,忽略了天气因素对驾驶安全的影响,系统基于WeatherMake插件进行改进,实现虚拟场景内天气、时间的模拟。驾驶过程中,可以根据模拟需求,通过与天气系统的交互,控制场景内天气、时间等因素。如图11所示,分别模拟了早晨、中午、傍晚三个时间段及晴天、大雾、雨天等天气。
图11 系统时间、天气模拟Fig.11 System time,weather simulation
为验证驾驶仿真及安全教育系统的实际应用效果,发现系统设计不足,招募了20位志愿者进行系统仿真度测试及实用性评估,被试人员组成见表1,根据驾驶经验差异分为三组,A组人员编号A1~A10,B组人员编号B1~B8,C组人员编号C1、C2。
表1 被试人员组成Table 1 Composition of subjects
系统采用Logitech G29方向盘套装及HTC Vive作为交互设备,相较于驾驶模拟器,HTC Vive头戴显示器能更好地呈现虚拟三维空间,并保证用户不被周围环境所分散注意力,为用户提供更加身临其境的体验[17]。系统启动后,进入模式选择界面,可分别选择进入安全教育、风险驾驶模拟及三维全景视图模块。在安全教育模块,通过学习规则且在实际案例中理解应用,实现学习效果强化,熟练驾驶技能,结合VR训练的学习过程更加具有趣味性,更有利于理论知识向实际认知迁移,测试示例如图12所示。
图12 安全教育关卡测试示例Fig.12 Safety education level test example
风险驾驶模拟模块,通过模拟体验,更加直观地理解风险驾驶行为,结合事故现场三维全景体验,认识驾驶事故危害,降低对风险驾驶的容忍度,具有良好的沉浸性及应用价值,测试如图13、14所示。
图13 风险驾驶模拟Fig.13 Risky driving simulation
图14 全景体验及VR驾驶Fig.14 Panoramic experience and VR driving
20位志愿者分别使用Logitech G29及HTC Vive等设备,依次对系统三大模块进行测试,根据虚拟场景的仿真程度及驾驶沉浸感对系统仿真度做出打分,同时根据个人使用体验对系统实用性做出打分,范围为0~10分,0分为最低分,代表评估结果十分消极,10分为满分,代表评估结果十分积极。
系统测试结果如图15所示,20位志愿者对系统仿真度平均打分为7.45分,对系统实用性平均打分为7.95分。表明志愿者认为系统仿真还原度高且对系统实用性持积极态度。
图15 测试打分统计图Fig.15 Statistical chart of test scoring
本文使用Unit3D引擎联合SUMO开发了基于VR的驾驶仿真及安全教育系统,为驾驶技能学习者提供了安全多样的驾驶环境,使驾驶安全教育更加具体、深刻、高效且易于理解。系统基于道路实景数据,构建了更具真实感的驾驶三维场景,联合SUMO仿真道路驾驶状况,实现了不同道路环境、交通状况下的驾驶模拟;创新性地通过屏幕特效技术让驾驶员通过交互设备体验在醉酒、疲劳等风险状况下的视觉变化,帮助驾驶员在清醒状况下体验风险驾车危害;并在Unity3D内构建了基于图像的交通事故三维全景。通过20位志愿者对系统进行测试,驾驶场景仿真度较高,运用该系统,提高了驾驶学习效率,提高了驾驶安全素养。在将来,可进一步开发学习过程记录模块,为学员个体提供更具针对性的教育内容。