高端学术
您当前的位置:核心期刊咨询网电子信息论文》高级驾驶辅助测试可视化系统开发

高级驾驶辅助测试可视化系统开发

来源:核心期刊咨询网时间:12

摘要:摘 要:为了在高级驾驶辅助系统(ADAS)中对车辆控制算法进行验证,可以利用维克托(Vector)工具链对汽车电子控制器(ECU)内部的变量进行记录,生成MDF(原版光盘映像文件)格式的测试数据文件,然后进行离线分析。利用Qt公司开发的丰富的可视化图形控件Qt(跨平台

  摘 要:为了在高级驾驶辅助系统(ADAS)中对车辆控制算法进行验证,可以利用维克托(Vector)工具链对汽车电子控制器(ECU)内部的变量进行记录,生成MDF(原版光盘映像文件)格式的测试数据文件,然后进行离线分析。利用Qt公司开发的丰富的可视化图形控件Qt(跨平台软件开发框架)和Python(一种计算机程序设计语言)的强大数据处理能力,本文开发了一种可以对MDF文件进行解析并且可视化的软件。该软件可以实现变量的筛选功能,支持变量的树状显示、多个变量测量值的二维时域图形表示。特别地,ADAS感知到的环境目标,本软件可以观察其二维坐标随时间的运动过程,并且支持画面与用户的交互操作。经过测试,本软件运行可靠,在某公司推广使用。

  關键词:ADAS;测试;MDF解析;Qt;可视化

科技论文发表

  1 引言(Introduction)

  在ADAS系统车辆ECU软件的开发过程中,控制算法需要经过不断的设计、测试、修改迭代才能完成。在测试这一环节中,包括软件在环测试(SIL)、硬件在环测试(HIL)和实车测试三种。在实车测试过程中,需要提前将软件烧写入汽车ECU,在汽车行驶过程中,通过XCP协议[1]和Vector公司的CAN工具,ECU可以记录内部变量,然后生成符合自动化及测量系统标准协会(ASAM[2])标准的MDF[3]文件。通过将记录的MDF文件回传到算法开发人员手中,开发人员可以离线进行算法的验证工作。因此,MDF文件的解析和可视化对算法的设计开发非常重要。虽然Vector公司已经有对MDF文件进行解析和可视化的商业工具,但是其价格昂贵并且无法进行二次开发。本文的目标是设计一个可视化软件,可以解析MDF文件,并且对文件中的变量进行二维显示和三维的动态播放。

  本文首先利用Python丰富的第三方工具包对MDF文件进行解析,然后使用Python的Numpy等数据科学包对MDF中的数据进行处理。由于需要存储的变量较多,查询、筛选频繁,因此选用小型的SQLite3关系数据库来组织文件中的数据。最后使用Qt丰富的控件库,实现软件的整体可视化界面设计。其中,在与用户的交互操作模块上,利用了强大的兼容Qt平台的PyQtGraph[4]图形库,加快了开发过程。

  2 MDF文件介绍和解析(The introduction and parse of MDF file)

  2.1 历史、版本及用途

  MDF文件格式是20世纪90年代由欧洲的Bosch、Vector联合大众等汽车公司专门为汽车行业设计的一种通用文件格式,主要用于汽车电子ECU的开发、标定和测试领域,已经成为该领域事实上的工业标准。由于测量数据的快速增长,在ASAM组织修订下,MDF文件从2.0版本逐渐升级为目前的4.x版本,生成的数据文件后缀名为“.MF4”。MDF文件中记录的典型数据有汽车传感器信号、ECU内部变量状态等。这些存储在MDF文件中的状态信号,可以被算法人员回放,进行算法的验证工作。本文主要专注于最新的MDF 4.x版本文件(即*.MF4文件)的解析和可视化。

  2 .2 MF4文件介绍

  一个MF4文件由若干个二进制模块组合而成,每个模块主要包含三个部分:文件头、链接部分和数据部分,如图1[5]所示。

  模块的类型有很多种,每种类型都定义了模块的用途和内容,由二位的大写字母表示。主要的模块类型有:ID(用于标识MDF文件)、HD(MDF文件的通用描述)、TX(记录变量长度的字符容器)、CH(定义通道的逻辑结构)、DG(描述数据分组)、CG(描述通道组)、CN(描述通道)、CC(描述每个通道数据的转换)、DT(每个数据记录的单个值)等。这些模块按照一定的结构存储起来,便可以组成一个MDF文件,图2描述了一个简单模块的物理存储和层次结构[5]。

  由图2可知,所有的变量在逻辑上是按照树状层级分布的,一个CN相当于一个变量名,描述了测量值的存放位置、字节数等信息。同一个CG是若干个变量名的集合,并且有相同的采样率。DT是真正存储数据值的地方,其内部数据的布局如图3所示[5]。

  2.3 MDF文件解析

  Python是一种动态的计算机语言,可以用于数据计算、软件开发等。mdfreader[6]是Python的一个第三方开源工具包,可以用于读取解析MDF文件格式,具体使用方法见文献[6]。

  使用mdfreader解析出MDF文件获取的只是最原始的数据,需要按照一定的逻辑层次对数据进行筛选、整理、变换、存储等操作。对于数据处理这部分,可以利用Python中著名的Numpy包进行数学运算。由于解析出来的数据存储在内存中,不能永久保存,因此在下节中使用数据库技术来解决这一问题。

  3 技术框架(Technical framework)

  3.1 Qt和PyQt简介

  Qt是一个著名的面向对象、跨平台的C++图形界面开发框架,可用于开发GUI程序,目前已经更新到5.13版本。由于在上文中使用Python语言解析MDF文件,为了避免混合语言编程,本文选用Python语言开发GUI界面。

  PyQt是由Python和Qt库融合而成的一个工具包,允许开发者使用Python调用Qt库中的应用程序接口(API)创建GUI应用程序。在本软件开发中,使用与Qt5对应的PyQt5模块设计本软件。

  3.2 SQLite3数据库

  SQLite3是一个轻型,支持SQL语法的开源关系数据库。关系数据库使用多张二维表来存储数据,每张表可以通过主关键字唯一确定一行数据。SQL是用于访问和处理数据的标准计算机语言,通过在Python程序中调用SQL语言的接口,可以对SQLite3中的数据库进行表格创建、数据查询、筛选等,完成对MDF中测量数据的永久存储和读取。

  3.3 PyQtGraph交互可视化库

  前文介绍了使用PyQt5进行GUI应用程序的设计,但是Qt自带的图形库中进行用户交互的函数较少。PyQtGraph是一个基于PyQt/PySide和Numpy的纯Python开源图形GUI函数库,补充了Qt在数据图形与用户交互方面能力不足的缺点,并且提供了帮助快速开发应用程序的工具。因此,在本软件需要与用户交互的模块中,使用PyQtGraph代替Qt进行快速开发。

  4 软件架构(Software architecture )

  常用的软件架构一般分为三层:界面、服务和数据库。界面负责与用户的直接交互,需要布局合理、美观。服务是软件后台对用户界面中按钮的功能实现,不对用户开放。数据库是用来保存软件中所产生的大量数据,与服务进行交互,提供存储、提取功能。按照这一逻辑,设计本软件的架构层次如图4所示。其中Python调用SQLite3数据库的方法可以在参考文献[7]中进行查询,数据与服务端的交互逻辑在前文中进行了穿插介绍。

  4.1 界面设计

  使用PyQt5写GUI界面可以通过直接手写Python代码实现,但更方便的办法是使用Qt Designer进行按钮的拖拉放置和布局设计。使用Qt Designer可以实现软件界面和逻辑的分离,加速开发速度,生成的*.ui文件可以通过PyQt5自带的pyuic5工具自动转换成对应的Python代码。因此,本文采用这种方法进行如图4所示三个界面的开发任务。

  在变量树状、表格显示界面,需要实现文件的导入,后台服务将文件解析之后将文件内部的变量以树状的形式展示给用户。使用Qt Designer设计此界面如图5所示。当用户想要查看某些变量的值时,可以通过在树状图中选择某些变量,然后点击表格显示按钮,实现在右上侧的观察。界面的右下侧显示了被测试车辆的长宽高、传感器安装位置有关的几何静态参数。使用同样的方法设计其余两个界面,具体过程不再赘述。

  4.2 服务实现

  在界面的设计中实现了许多按钮,比如导入文件等操作,这些按钮背后的具体操作需要在服务中实现。对于实现点击按钮打开文件等简单的操作,可以在文献[7]中进行查询,以下着重阐述数据的树状、表格显示,二维时域显示和三维播放功能。

  4.2.1 树状、表格显示

  在Qt5上面用于界面组件显示与编辑的数据结构是模型/视图结构(Model/View)。视图是用来可视化和编辑数据的界面组件,模型是视图与数据可视化的接口,数据通过代理与编辑,可以把数据和界面分离开来,如图6[8]所示。Qt自带的QSqlQueryModel可直接执行SQL语句,从数据库中读取数据,然后使用QTableView將读取的数据以表格的形式显示出来,详细使用见文献[8]。由于Qt的数据结构只给出了QTreeView,因此树状数据显示的难点在于从QStandardItemModel基础上进行树状模型的定制。

  推荐阅读:仿生机器人科技论文发表指导

转载请注明来自:http://www.qikan2017.com/lunwen/dzi/18819.html

相关论文阅读

论文发表技巧

期刊论文问答区

电子信息优质期刊

最新期刊更新

精品推荐