基于i.MX6Q和OpenGL ES的汽车虚拟仪表的设计

2017-06-24 13:25李睿琦牛新环王征宇姚尧
河北工业大学学报 2017年2期
关键词:仪表投影界面

李睿琦,牛新环,王征宇,姚尧

(1.河北工业大学天津市电子材料与器件重点实验室,天津300130;2.天津大学电气与自动化工程学院,天津300072;3.天津市计量监督检测研究院,天津300192)

基于i.MX6Q和OpenGL ES的汽车虚拟仪表的设计

李睿琦1,牛新环1,王征宇2,姚尧3

(1.河北工业大学天津市电子材料与器件重点实验室,天津300130;2.天津大学电气与自动化工程学院,天津300072;3.天津市计量监督检测研究院,天津300192)

该新型汽车虚拟仪表,以恩智浦开发的i.MX6Q为核心处理器搭建硬件开发平台,降低了汽车仪表的开发成本,提升了GPU利用率,创建多线程程序,减小了物理空间.同时,以Linux系统构建软件开发环境,利用OpenGL ES对仪表系统进行设定VBO操作,3DS模型转换等图形界面开发,提高了人机交互界面的友好性.本文设计的新型虚拟仪表系统针对嵌入式系统相对较低的计算和图形处理能力、相对较小的存储空间、相对较低的显示分辨率等特点进行适应性改造,具有跨平台性、低成本,界面显示精美、可扩展性良好等优点.

虚拟仪表;i.MX6Q;OpenGL ES;3DS;图形界面开发

0 引言

汽车仪表作为提供汽车行驶过程中各项重要参数的人机交互界面[1],驾驶员能够通过仪表准确实时的获取汽车各系统部件的运行状态,通过有效的人机信息交互,保证了汽车的安全平稳运行,因此汽车仪表在汽车的整个系统中占据了重要的地位[2].传统机械仪表通过指针和刻度来实现必要的表盘显示信息,但其占用空间较大、仪表功能可靠性差,已经远远不能满足现代汽车高速发展的要求[3].汽车仪表经历了第1代机械式仪表,第2代电气式仪表,第3代模拟电路电子式仪表,现在正在向第四代全数字汽车仪表迈进[4].随着嵌入式系统及计算机软件系统的高速发展,具备指示精度高、界面数字化和智能化的虚拟仪表正在迅猛发展[5].但同时,现有的虚拟仪表也存在着可移植性较差、开发生产成本高、二次开发性较低以及显示界面功能单一等缺点,这些在一定程度上限制了其技术创新,阻碍了虚拟仪表的应用推广[6].

针对以上提出的仪表功能的不足之处,本文设计了一种基于Linux系统下以i.MX6Q为硬件运行平台,并采用OpenGL ES图形开发应用程序对虚拟仪表进行3D虚拟界面的绘制开发.此虚拟仪表具备可移植性高、表盘显示功能完善、仪表界面精美等优点.同时其对显卡的GPU利用率较高,运行流畅,具有很高的商业和应用价值.

1 i.MX6Q硬件运行平台

i.MX6Q是基于Cortex-A9内核架构的可扩展多核处理器[7],Cortex-A9架构的高效处理能力与尖端的3D和2D图形处理器相结合,带有四个着色器,其出色的3D图形引擎,能够高效的提供每秒2亿个三角形的生成能力[8].i.MX6Q有3个GPU,GC2000可以支持OpenGL ES3.0和OpenVG1.1,GC335可以实现Open-VG1.1,GC320完成2D拼接.多个GPU,使得显卡减少了对CPU的依赖,增加了工作效率,而且这款处理器可以支持2D、3D矢量图形加速,解决了滑动卡、动画不流畅、图片处理速度慢的问题,具有强大的运算能力和视频处理能力.同时开发板上扩出的各种调试串口能够为片上定制Linux系统提供有效的硬件支持[9].

2 Linux开发环境平台搭建

本文采用VMware虚拟机和Ubuntu操作系统,同时在此开发环境下安装交叉编译器ARM-linux-gcc 4.5.1,用来完成相关驱动程序的仪表应用程序以及图形库和系统内核的编译.移植嵌入式设备的系统引导程序U-boot,进行硬件平台相关驱动的编写[10];裁剪编译Linux内核,并在其中加载已编译好的相关驱动[11].

3 基于OpenGL ES的汽车虚拟仪表界面开发

OpenGL ES作为一种跨平台、跨编程语言的软件接口,其可为软件与图形加速器之间提供功能强大且灵活的底层交互途径.良好的可移植性也使得OpenGL ES广泛应用于3D图形界面的开发[12].本文设计的汽车虚拟仪表就是以OpenGL ES进行图形界面开发,其流程主要包括着色器绑定,设定VBO、VAO,深度测试,面剔除,3DS模型处理以及多线程程序.虚拟仪表界面开发流程图如图1所示.

图1 虚拟仪表界面开发流程图Fig.1 The flow chart of virtual instrument interface development

3.1 OpenGL ES处理提升GPU性能

着色器是运行在GPU上的程序,顶点着色器的输出经过图元装配和光栅化后进入片段着色器,成为片段着色器的输入,通过绑定着色器进行后期的图形渲染;在导入3D汽车模型时,通过深度测试使OpenGL ES决定覆盖像素与否;通过面剔除处理,忽略被物体前部遮挡的部分,不进行渲染.以上流程在未使用缓冲区渲染时,每一个顶点数据都需从CPU给GPU发送一次,数据量巨大且循环次数过多,导致渲染效率降低,GPU占用带宽大,直接造成了程序运行的卡顿.通过设定VAO、VBO,利用缓冲区对象管理其在GPU中对应的内存,以此储存大批的顶点属性.在图形绘制时可以直接从GPU的内存中读取出大批顶点信息和绘制顺序,大大加快了图形的绘制速度,使得GPU性能得到极大的提升.

3.2 3DS模型处理

3.2.1 建模流程

利用OpenGL ES绘制复杂的三维模型,工作量和难度较大.随着3D图形技术的发展,越来越多的3D建模软件应运而生,这些建模软件虽然操作简便,但却对模型难以进行交互控制.因此,本文使用的3D模型数据需要利用Deep Exploration软件将3DS模型文件转化为OpenGL ES可以理解的cpp数据文件,再对其进行交互和控制操作.OpenGL ES绘图流程如图2所示.

图2 简化的OpenGL ES绘图流水线Fig.2 The simple drawing pipeline of OpenGL ES

3.2.2 模型的几何变换及透视投影

在显示屏上的某个位置绘制出基本图元,往往不能满足用户对于界面显示的需求,所以,本文在绘制出基本图元的基础上,通过对图形的平移、旋转等几何变换,显著提高了界面显示的多样性,也提高了图形程序的开发率.在OpenGL ES图形学中,用esTranslate、esRotate两个函数对建立起来的模型进行平移、旋转操作,这实际上是矩阵变换的过程,之后通过调用OpenGL ES中矩阵函数esMatrixMultiply来调用这两个函数,进而实现对模型的平移、旋转.

透视投影与人眼观看现实世界所得到的景象很相近,因此透视投影更具有立体感和真实感.整个投影过程分为两个部分,第1部分是投影到近剪裁平面的过程,第2部分是由近剪裁平面缩放的过程.假设立椎体内1点在近剪裁平面上的投影是经过缩放后的最终坐标设为设所求的投影矩阵为M,根据矩阵乘法可知,如下等式成立:透视投影示意图如图3所示.图3中远裁剪平面距离原点距离为f,近裁剪平面距离原点距离为n.

图3 透视投影示意图Fig.3 The schematic diagram of perspective projection

图4 xoz平面示意图Fig.4 The schematic diagram of xoz

3.3 多线程程序

为了模拟实际车载系统,本文设计了包括摄像头线程、按键线程、串口线程等多个同步运行的子程序.提升了虚拟仪表的功能多样性,减小了实际的物理空间.如图5所示,摄像头线程在汽车拐弯时,通过前后视镜之间摄像头的切换,对图像视频进行采集处理,然后将处理结果反馈到显示屏上以供驾驶员实时了解车体周边路况;按键线程作为一种消息中断模式,在行车过程中可以用来控制如视频窗口切换、方向灯亮灭以及其他车载娱乐信息机制;串口线程中,输入包括仪表盘的两个指针,即车辆速度与转速,在输入数据时,在相应的数据后加“L”即代表传入数据为左侧指针数据,flag_rs_data置0,左侧指针进行旋转(速度0~265 km/h).在相应的数据后加“R”即代表传入数据为右侧指针数据flag_rs_data置1,此时右侧指针进行旋转(转速0~7.5 1 000 r/min).超出范围时,输入仪表将会把数据视为错误信息不予显示.

图5 摄像头采集图像视频流程图Fig.5 The flow chart of camera capture video image

4 试验结果及数据分析

本文设计的虚拟仪表系统在基于i.MX6Q处理器的开发板上运行效果如图6所示.该虚拟仪表盘界面显示精美,仪表功能完善,同时在开发板上运行流畅.在控制板子的终端中,以root的身份输入export VIV_PROFILE=1即可在程序目录下生成VPD文件格式的性能数据文件.用Vivante VAnalyzer软件对数据文件进行读取即可得到性能分析曲线如图7所示.同时本文运行一个OpenGL ES3.0的范例作为对比,对比程序为一球型的玻璃体对环境贴图的反射效果程序,利用了3D纹理,属于比较复杂的范例程序.导出它的运行数据性能曲线如图8所示.

图6 基于i.MX6Q虚拟仪表界面Fig.6 The automobile virtual instrument interface on i.MX6Q

Chart1中,红线为Frame time(帧周期),绿线为Driver time(驱动器周期).

Chart2中,蓝线为GPU cycle(GPU周期),灰线为GPU idle cycle(GPU空闲周期).

由于数据量较大,可根据性能曲线总结各参数的主要变化范围如表1所示.

表1 性能曲线各参数变化范围Tab.1 Variation range of parameters of performance curve

对比程序的主要参数变化范围如表2所示.

表2 对比程序各参数主要变化范围Tab.2 Variation range of parameters of contrast system

通过以上系统设计界面的展示以及与较复杂范例程序的运行数据对比,使用OpenGL ES进行汽车虚拟仪表的设计优势较多,本程序的平均帧率为40帧左右,基本符合人眼对于流畅运行的最低要求,不会有卡顿感和跳帧感.本设计中对着色器的利用率为90%左右,利用率较高,在3DMAX汽车模型运行阶段,GPU的利用率较高,达到了60%~80%,运行流畅,说明程序中对于复杂操作简化的优化效果较好.

图7 本系统程序运行的性能曲线Fig.7 Performance curve of the system program

图8 对比程序的运行性能曲线Fig.8 Performance curve of the contrast program

5 结论

本汽车虚拟仪表系统以i.MX6Q核心处理器开发板为硬件平台,包括了串口程序,按键程序和视频程序,对于底层驱动的调用较多,驱动利用率较高.设计中包含有较为复杂的3DMAX汽车模型以及数据量较大的视频窗口显示,利用OpenGL ES对图形界面进行开发,同时通过VBO、VAO,将众多的操作简化为GPU中着色器的简单重复运算,减少了对CPU的占用,提高了GPU的利用率,程序运行较为流畅.本设计开发的汽车虚拟仪表对于减少仪表开发成本,降低仪表研发复杂度,提高仪表界面人性化显示等方面具有重要的意义.

[1]郑孟.电动汽车的发展趋势分析[J].科技资讯,2013,27:74-75.

[2]Kang J T,Gan YD,QuaIl Q Q.The method of developing viaual instrument platform[J].Automous Decentralized Systems,2010:64-67.

[3]金有娟.基于虚拟仪器技术的汽车仪表盘设计[J].机械研究与应用,2012,122(6):135-137.

[4]王兴,秦齐.车载平视显示技术[J].电光与控制,2014,21(1):55-58.

[5]刘宝义.浅谈自动化仪表与控制系统[J].科技论坛,2014,32:125.

[6]Zhao X J,Su H X.Remote monitor and control system based on ARM9 and CAN bus[J].Computer Engineer,2013,36(5):231-233.

[7]Koppanalil J,Yeung G,O’Driscoll D,et al.A 1.6GHZ dual-core ARM Cortex A9 implementat-ion on a low power high metal gate 32nm process[C]// International Symposium on VLSI Desig-n,Automation and Test.IEEE,2011:1-4.

[8]Freescale Semiconductor.i.MX6 Dual/6Quad Applications Processor Reference Manual[Z].2014.

[9]Freescale Semiconductor.i.MX6 Dual/6Quad Applications Processor Reference for Industrial Products[Z].2014.

[10]温尚书,陈刚,冯利美.在实践中学嵌入式Linux应用程序开发[M].北京:电子工业出版社,2012.

[11]聂和平.基于ARM9的嵌入式Linux系统移植与驱动开发[D].南京:南京邮电大学,2013:6-33.

[12]徐青松.智能车载设备嵌入式操作系统裁剪研究[D].长沙:长沙理工大学,2013:17-37.

[责任编辑 代俊秋]

Design of automobile virtual instrument based on i.MX6Q and OpenGL ES

LI Ruiqi1,NIU Xinhuan1,WANG Zhengyu2,YAO Yao3
(1.Tianjin Key Laboratory of Electronic Materials and Devices,Hebei University of Technology,Tianjin 300130,China;2.School of Electrical and Automation Engineering,Tianjin University,Tianjin 300072,China;3.Tianjin Metrology Supervision and Testing Research Institute,Tianjin 300192,China)

A new type of virtual instrument was designed in this paper.The board was developed by NXP,using i.MX6Q as the core processor of hardware platform.It can reduce the development cost of the automobile instrument and improve the GPU utilization,create a multi-threaded program can reduce physical space.At the same time,basing on Linux system as a software development platform,OpenGL ES was used for virtual instrument graphic interface development which involved set the VBO and the 3DS model conversion.It can enhance the friendliness of user interface.This kind of new virtual instrument system has the advantages of cross-platform,low cost,elegant interface,good scalability,etc.In view of the embedded system has a low computing and graphics processing power,smaller storage space,lower display resolution.

virtual instrument;i.MX6Q;OpenGL ES;3DS;graphical interface development

TP391

A

1007-2373(2017)02-0001-05

10.14081/j.cnki.hgdxb.2017.02.001

2016-12-13

国家02重大专项(2016ZX02301003-004-007);天津市自然科学基金(16JCYBJC16100);天津市科技计划项目(10ZCKFGX01300)

李睿琦(1989-),女,硕士研究生.通讯作者:牛新环(1973-),女,教授.

猜你喜欢
仪表投影界面
◆ 仪表
仪表
解变分不等式的一种二次投影算法
国企党委前置研究的“四个界面”
基于最大相关熵的簇稀疏仿射投影算法
一种可用于潮湿界面碳纤维加固配套用底胶的研究
找投影
找投影
热工仪表自动化安装探讨的认识
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究