高级驾驶辅助测试可视化系统开发
来源:核心期刊咨询网时间: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
相关论文阅读
- 2022-09-28创新要素对涉农科技型企业发展质量的影响
- 2022-09-19“一带一路”建设框架下中非经贸合作的机遇与挑战
- 2022-07-14多媒体计算机技术在广播电视工程中的应用
- 2022-07-12高校教务管理信息化的优势及发展趋势
- 2022-07-04探讨光伏发电技术中分布式控制的有效应用
- 2022-07-02计算机通信网络安全维护措施研究
- 2022-06-30在线实训教学模式在电子商务教学中的应用研究
- 2022-06-25低代码数据接口开发架构的研究与实现
- 2022-06-24区块链技术对审计模式优化的探索
- 2022-05-28云网安全防护运维管控的研究
期刊论文问答区
- 2025-05-13教师职称评审级别及所需学术成果材料
- 2025-04-24英文期刊发表论文几个版面起发
- 2025-01-21论文顺利通过审稿的8个操作
- 2025-01-11管理学类30本期刊(国自然基金委员会认定)
- 2025-01-02电刺激治疗相关文章选题推荐
- 2024-12-17植物学比较热门的论文选题
- 2024-12-03人事管理方面文章选题推荐和发表期刊
- 2024-11-18金融学专业的论文选题方向推荐
- 2024-11-01教育核心期刊有哪些
- 2024-07-12学术论文初审是谁在审?审什么?审多久?
电子信息优质期刊
- 1国家级《计算机与网络》
- 2国家级《解放军理论学习》
- 3省级《工程技术研究》
- 4核心级《无线电通信技术》
- 5省级《常州工学院学报》
- 6省级《计算力学学报》
- 7核心级《电子技术与软件工程》
- 8省级《天津大学学报:自然科学与工程技术版》
- 1国家级《计算机与网络》
- 2国家级《解放军理论学习》
- 3国家级《机电元件》
- 4国家级《中国电子科学研究院学报》
- 5国家级《电子科学学刊:英文版》
- 6国家级《材料科学技术学报:英文版》
- 7国家级《电光与控制 》
- 8国家级《测绘学报》
- 1省级《工程技术研究》
- 2省级《常州工学院学报》
- 3省级《计算力学学报》
- 4省级《天津大学学报:自然科学与工程技术版》
- 5省级《福建电脑》
- 6省级《计算机技术与发展》
- 7省级《深圳大学学报:理工版》
- 8省级《测绘科学与工程》
- 1核心级《无线电通信技术》
- 2核心级《电子技术与软件工程》
- 3核心级《润滑与密封》
- 4核心级《计算机应用与软件》
- 5核心级《电讯技术》
- 6核心级《固体电子学研究与进展》
- 7核心级《自动化学报》
- 8核心级《内蒙古大学学报:自然科学版》
最新期刊更新
- 《中国政府采购》
- 《中国政府采购》
- 《农业图书情报学刊》
- 《农业技术经济》
- 《水文地质工程地质》
- 《房地产世界》
- 《中央民族大学学报:哲》
- 《广州化学》
- 《物理学报》
- 《东方宝宝》
- 《新能源进展》
- 《热带农业科学》
- 《建筑经济》
- 《中国学校卫生》
精品推荐
- 12022-09-28创新要素对涉农科技型企业发展质量的影响
- 22022-09-19“一带一路”建设框架下中非经贸合作的机遇与挑战
- 32022-07-14多媒体计算机技术在广播电视工程中的应用
- 42022-07-12高校教务管理信息化的优势及发展趋势
- 52022-07-04探讨光伏发电技术中分布式控制的有效应用
- 62022-07-02计算机通信网络安全维护措施研究
- 72022-06-30在线实训教学模式在电子商务教学中的应用研究
- 82022-06-25低代码数据接口开发架构的研究与实现
- 12018-05-06机器人研究方向有哪些核心期刊比较好投
- 22017-09-07国内电气工程方面的普刊有哪些?
- 32018-03-02电气审稿较快的期刊
- 42022-02-26人工智能在财会领域的运用与应对策略
- 52021-11-17港口码头系统智能化应用的现状与发展
- 62022-02-26电气工程及其自动化技术在电力系统中的应用分析
- 72022-03-01数据管理视角下的内控信息化建设
- 82022-06-30在线实训教学模式在电子商务教学中的应用研究
- 12025-05-13教师职称评审级别及所需学术成果材料
- 22025-05-08人力资源专业论文发ssci
- 32025-05-08评职称著作合著快还是独著快
- 42025-04-24英文期刊发表论文几个版面起发
- 52025-04-24声音与振动杂志JOURNAL OF SOUND AND VIBRATION期刊收稿方向
- 62025-02-12“互联网+”时代的农产品营销与农业经济发展
- 72025-02-12羊肉消费市场调研
- 82025-02-12文创产品营销策略
- 12021-05-24刊号字母G、G0、G1、G2、G3、G4、G8是什么意思
- 22021-05-06论文引用率不能超过多少
- 32018-09-11语法翻译法的运用以及优缺点分析
- 42020-03-08发表在期刊上的论文一般多少字
- 52020-09-21疾控中心工作怎么评职称
- 62020-01-03新北大核心什么时候更新,几年更新一次
- 72020-03-08通讯作者和二作哪个含金量比较高
- 82021-02-23发表的期刊论文见刊的时候可以在知网查到吗