APP下载

驾驶模拟器可调节后视镜仿真方法研究*

2020-04-24刘晶郁刘新亮杨炜李子然宋晓妍

汽车技术 2020年4期
关键词:后视镜视点模拟器

刘晶郁 刘新亮 杨炜 李子然 宋晓妍

(长安大学,西安 710064)

主题词:驾驶模拟器 微软基础类库 后视镜 串口通信 离屏渲染

1 前言

汽车驾驶模拟器是一种模拟车辆驾驶操作和动力学特性,提供驾驶训练和驾驶员特性分析功能的现代化设备[1-3]。视景仿真的真实程度是评价驾驶模拟器的重要指标,而后视镜显示的车外有效视野是视景仿真和人机交互的重要体现[4]。驾驶模拟时,需要将后视镜视景实时地渲染在显示器上,并且不同场景下后视镜需求往往不同,所以实现后视镜的可调节和实时显示对于提高驾驶模拟的视野舒适度有重要意义。

针对驾驶模拟器的后视镜仿真,研究人员提出了多种方法:杨秀杰等[5]提出了一种多视口显示后视镜的方法,将后视镜显示在屏幕的上方,但这种后视镜限制了前方驾驶视野,不符合驾驶员的观察习惯;刘志强等[6]提出了一种基于动态纹理映射的后视镜可视化方法,通过指向后视镜的函数实现了后视镜成像,但仅实现了单一后视镜成像;曾诚等[7]使用人机工程学方法对三联屏后视镜进行布置,在提高驾驶员视觉效率的同时改善了视觉舒适度。但使用以上方法设计的后视镜均不具备调节性,对不同驾驶工况下后方视野的适应性不高。

基于此,本文提出一种基于微软基础类库(Microsoft Foundation Classes,MFC)的可调节后视镜实现方法,使用开放图形库(Open Graphics Library,OpenGL)中的离屏渲染技术将后视镜显示在虚拟视景中,实现后视镜形状及视景显示的设计,同时,编写后视镜视野调节代码以实现后视镜的可调节控制,并基于驾驶模拟器对后视镜成像效果进行验证。

2 系统总体结构

系统结构由硬件部分、软件部分和后视镜成像视景组成,如图1 所示。硬件部分由后视镜调节按钮、Arduino数据采集板组成;软件部分由后视镜调节模型、MFC多线程运行模块、后视镜视景渲染模块组成,使用MultiGen Creator 建立三维驾驶场景,利用Vega Prime结合MFC 多线程框架联合编写后视镜调节代码,实现虚拟后视镜的控制;驾驶模拟器后视镜中的成像视景是图形处理器实时渲染的图形。

图1 后视镜成像系统

3 硬件部分

使用Arduino 单片机对后视镜按钮信号进行采集。通过模拟控制信号,实现外部硬件对虚拟车辆后视镜的控制[8]。Arduino 与PC 端通过USB 串口建立通信,PC 端程序新建第三方串口CnComm 类Com,对Arduino 的数据进行读取,硬件通信方式如图2所示。

图2 硬件通信方式

通过Arduino 单片机对控制信号进行采集,并使用串口通信(Serial)库将信号封装成数据帧,进而实现与PC 端之间的通信。采集的按钮信号见图2。后视镜调节按钮布置在驾驶模拟器的控制台上,符合驾驶员在模拟驾驶时对后视镜调节操作的真实感受。

Arduino 单片机与按钮硬件的连接电路如图3 所示。按钮触发信号为数字信号,占用Arduino 单片机6个AD(模拟量转变为数字量)引脚,同时包含1个5 V引脚、1个接地引脚。

图3 Arduino与硬件按钮连接电路

4 软件部分

4.1 可调节后视镜软件框架

在硬件的基础上,软件部分与硬件信号和后视镜调节模型相连接。软件采用基于MFC 的多线程框架,使其能在Windows 平台上对Vega Prime(VP)进行二次开发,程序框架主要分为MFC 主控线程、VP 仿真线程和串口通信线程,软件运行框架如图4所示。

图4 软件框架

VP仿真线程通过调用VP制作的acf文件实现场景渲染和视景驱动,在该线程中编写程序代码实现后视镜的调节和实时渲染。VP仿真线程与串口通信线程的通信方式如图5所示。串口通信线程和VP仿真线程的数据交互是控制后视镜的基础,在VP 仿真线程完成系统初始化、定义配置后[9],VP 线程一直检测控制参数的变化,并实时计算更新,进行视景渲染。

图5 VP线程与串口通信线程通信框架

4.2 后视镜调节模型

本文设计的后视镜调节模型可以模拟视野范围的变化以达到实时改变后视镜视景的目的。后视镜的初始参数,如视点和视野范围,需要在VP中设置后视镜坐标变换(Mirror Transform)和后视镜通道(Mirror Channel)的参数,完成初始化。需要注意的是,后视镜中Mirror Transform的数据是绑定车辆后,相对于车辆坐标系的位置信息。后视镜调节模型如图6所示。

图6 后视镜调节模型

4.3 后视镜成像原理

后视镜的虚拟视景渲染使用离屏渲染技术,依赖OpenGL 中额外创建的帧缓存区对象(Frame Buffer Object,FBO)。OpenGL 可以将原先绘制到窗口的Mirror Channel 帧缓存区重定向到FBO中。通过将FBO与渲染图像(Renderbuffer Images)绑定,OpenGL 执行离屏渲染将后视镜视景显示在虚拟视景中,提高了三维渲染速度[10]。在后视镜显示前使用迭代器对FBO 对象中的纹理进行镜像操作。后视镜成像过程如图7所示。

图7 后视镜成像过程

4.4 后视镜视景的显示

为了获得后视镜的显示效果,需要确定后视镜视点和视野范围参数。后视镜视点依据主视点和后视镜的位置获得,其选择符合光的反射原理,如图8所示,假设后视镜为平面镜,主视点A关于镜面对称的虚拟视点A'与主视点A是等效视点,对于驾驶模拟仿真来说,虚拟视点A'即为后视镜视点。

图8 后视镜视点

后视镜视点的位置应为真实视点相对于后视镜镜像后绕垂直于地面的轴线逆时针旋转180°形成的虚拟视点位置。这样形成的后视镜角度满足最佳后视镜视野的要求[11]。后视镜的视点参数在VP的Transform中通过函数setTransform 和setRotate 设置,在车辆笛卡尔坐标系下,前者设置视点相对坐标系的空间位置参数X、Y、Z,后者设置相对旋转参数橫摆(Heading)、俯仰(Pitch)、侧倾(Roll)。

确定后视镜视点后,需要设置后视镜视野范围。人对物体的视觉感受满足视点成像原理,符合近大远小的视觉习惯,构造的视觉截锥体如图9所示。根据视点成像原理,在固定视点后,视野范围由视野角度和视野深度等因素决定。由图9 可知,在确定视野范围后,后视镜图像为后视镜视点视野近平面、远平面投影所形成的透视投影图像,并通过驾驶模拟器将虚拟视景图像显示在屏幕上[12]。图9 中,α为视角垂直方向夹角,β为视角水平方向夹角,ZNear为近平面距离,ZFar为远平面距离。

图9 视觉截锥体

在 VP 中的后视镜通道中使用函数setFOVSymmetric(θ,-1)和setNearFar(ZNear,ZFar)设置后视镜的视野角度和视野深度最终获得投影矩阵MP。利用setFOVSymmetric 函数设置后视镜的纵横比即宽高比为1,因此在后视镜的透视投影成像中,后视镜投影变换矩阵MP为:

使用后视镜投影变换矩阵获得二维像素存储数组,即后视镜虚拟视景。

5 后视镜成像效果验证

在城市公路场景和高速公路场景下对后视镜成像效果进行仿真验证。仿真系统的硬件配置为Intel i7-8700 处理器、RAM 16G内存、GTX1070 6G显卡、Arduino 采集板卡;软件配置为Windows 10 操作系统、VS2010开发环境、MultiGen Creator 14.0建模工具、Vega Prime 14.0 驱动工具;显示设备为某型曲面屏显示器,分辨率为5 120 像素×1 440 像素。驾驶模拟器如图10所示。

图10 驾驶模拟器

参照GB 15804—2013,某型轿车在固定座椅条件下的驾驶员眼点在H点垂直向上635 mm,Y向±32.5 mm位置,使用95 百分位眼椭圆建立后视镜视点的透视投影视景,眼椭圆尺寸为173.8 mm×60.3 mm×93.4 mm,侧视图长轴倾角为12°。选择2个眼点的中点作为主视点建立固定后视镜模型,选择95 百分位眼椭圆作为主视点区域建立可调节后视镜模型。

可调节后视镜中的左、右外后视镜设计有2个旋转自由度,车内后视镜只设计了1 个Heading 旋转自由度。固定后视镜的参数在各场景中保持不变,并根据视点区域对可调节后视镜预设了调节限制。

根据城市公路、高速公路、倒车和转弯4 种驾驶工况下的后视野要求,使用驾驶模拟器进行验证,对比固定后视镜与可调后视镜在不同工况下的后方视野效果。测试中10 名男性驾驶员对该驾驶模拟器进行体验,身高范围为165~180 cm,所有驾驶员在测试时精神状态良好。驾驶员分别在固定后视镜和可调节后视镜条件下进行4 种工况的测试,每种工况测试时长为3 min,并进行满意度评分。满意度评分为0~10之间的整数,数值越大代表满意度越高,并规定满意度达到7 或以上为正面评价。试验驾驶员的满意度和正面评价人数如图11 和图12 所示。

图11 驾驶员平均满意度

由于驾驶员操作习惯及模拟环境存在差异,在相似的模拟环境下,不同驾驶员得出的满意度评分可能不同,但驾驶员的主观评分依然可以体现后视镜视野的舒适程度。由试验结果可知,可调节后视镜在城市公路、高速公路和倒车工况下的满意度和正面评价人数都优于固定后视镜,虽然在弯道工况下的正面评价人数与固定后视镜相等,但平均满意度仍高于固定后视镜。相反,固定后视镜在不同场景下的平均满意度和正面评价人数波动更大,对驾驶工况的适应性较差。由此说明可调节后视镜在不同工况下的后方视野舒适度更好,满足驾驶员对不同驾驶环境和驾驶工况下的后方视野要求。

图12 驾驶员正面评价人数

后视镜成像视景不仅要满足驾驶员对后方视野的需求,同时要满足视景仿真的实时性要求。仿真时,对一位驾驶员在漫游驾驶工况下的仿真帧率进行采集,结果如图13 所示,在高速公路驾驶模拟中,平均帧率为107 帧/s,最高帧率为146 帧/s,最低帧率为71 帧/s;在城市公路场景下的平均帧率为48 帧/s,最高帧率为77 帧/s;在设置有3 个后视镜的情况下,各工况帧率保持在33 帧/s 以上。仿真结果表明,本文提出的车辆后视镜仿真方法不仅可以满足驾驶员对后方视野的需求,同时能够保持较高的帧率,满足驾驶仿真的需求。

图13 漫游驾驶工况下的仿真帧率

6 结束语

本文基于MFC多线程程序框架设计可调节后视镜仿真方法,并在此基础上利用串口通信技术实现Arduino 硬件电路控制后视镜视景,通过模拟视点和视野范围的变化设计了后视镜调节模型,利用视点成像特性推导出后视镜投影变换矩阵,从而获得后视镜投影图像,最终通过镜像处理和离屏渲染技术获得理想的后视镜视景。对比试验结果表明,提出的后视镜仿真方法成像效果和对不同驾驶环境的适应性更好,同时可以满足实时性要求,提高了汽车驾驶模拟的逼真度和后方视野的舒适度。

本文在假设后视镜镜面为平面镜的基础上,使用视点成像原理,对后视镜视点进行了理想化假设。未来可着重研究具有凸面镜效果和模拟双眼成像的后视镜模型,以开展优化。同时,由于时间和条件限制,仅10 名驾驶员参加了测试,未来可通过增加驾驶员数量保证测试结果的普适性。

猜你喜欢

后视镜视点模拟器
驾驶模拟器转向系统的设计与研究
虚拟视点插值中参考视图选择策略
盲盒模拟器
下雨天,车窗和后视镜起雾怎么办
车辆防雾后视镜
中国首个自主研发的地球模拟器投入使用
臂戴后视镜
环境视点
回忆是……
寻找新的视点