999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

高級駕駛輔助測試可視化系統開發

2021-03-08 09:41:28楊軍典陳凌珊
軟件工程 2021年1期
關鍵詞:可視化

楊軍典 陳凌珊

摘? 要:為了在高級駕駛輔助系統(ADAS)中對車輛控制算法進行驗證,可以利用維克托(Vector)工具鏈對汽車電子控制器(ECU)內部的變量進行記錄,生成MDF(原版光盤映像文件)格式的測試數據文件,然后進行離線分析。利用Qt公司開發的豐富的可視化圖形控件Qt(跨平臺軟件開發框架)和Python(一種計算機程序設計語言)的強大數據處理能力,本文開發了一種可以對MDF文件進行解析并且可視化的軟件。該軟件可以實現變量的篩選功能,支持變量的樹狀顯示、多個變量測量值的二維時域圖形表示。特別地,ADAS感知到的環境目標,本軟件可以觀察其二維坐標隨時間的運動過程,并且支持畫面與用戶的交互操作。經過測試,本軟件運行可靠,在某公司推廣使用。

關鍵詞:ADAS;測試;MDF解析;Qt;可視化

中圖分類號:TP311.52? ? ?文獻標識碼:A

文章編號:2096-1472(2021)-01-39-03

Abstract: In order to verify the vehicle control algorithm in the Advanced Driver Assistance System (ADAS), Vector's tool chain can be used to record variables inside the automotive Electronic Control Unit (ECU). Then, a test data file in MDF (Measurement Data Format) format is generated, and offline analysis can be performed. This paper proposes to develop a software that can analyze and visualize MDF files by utilizing Qt (the cross-platform software development framework) and Python (a computer programming language) developed by Qt Company. This software can realize the variable filtering function, support tree displays of variables and two-dimensional time-domain graphical representation of measured values of the multiple variables. In particular, the proposed software can observe the movement process of its two-dimensional coordinates over time for the environmental targets that ADAS perceives, and it supports the interactive operation of screen and user. Testing results show that the proposed software runs reliably and is being used by a company.

Keywords: ADAS; testing; MDF analysis; Qt; visualization

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基礎上進行樹狀模型的定制。

QStandardItemModel是一種基于數據項的數據結構,由用戶組織數據項的結構。數據項的類型是QStandardItem,保存著數據、文字、圖標等顯示信息,并且可以設置為是否可編輯、選取等。根據圖2所示,將DG、CG、CN均表示成一個數據項,然后使用QStandardItemModel的setItem函數對數據項進行排布,形成樹狀結構。如圖7所示為使用上述方法導入一個示例MF4文件后,變量的樹狀和表格顯示結果。

4.2.2? ?二維時域顯示

除了可以使用表格的形式顯示變量外,更直觀的方法是使用二維圖形表示。當用戶更新了選擇的變量時,二維圖形也可以動態地更新。除此之外,當用戶點擊圖形中的某個采樣點時,可以將采樣點處的數據標注出來,并且可以自由地使用鼠標進行圖形的縮放、平移。為了滿足這些人機交互功能,這里采用PyQtGraph進行開發。

PyQtGraph工具庫自帶了支持鼠標交互操作的后臺,因此,這一模塊開發的重點在于如何動態地更新二維圖形的數量和采樣點處的數據顯示。PyQtGraph工具庫和Qt圖形框架的本質是一樣的,圖形顯示的原理是首先生成一塊畫布,所有的圖形元素按照一樣的布局在畫布上放置。當用戶選擇的變量變化時,首先需要使用布局畫布變量GraphicsLayout的clear函數清除畫布中已有變量的二維圖形,然后再生成新變量的二維圖形。當鼠標點擊曲線中的某個采樣點時,使用PyQtGraph.CurvePoint建立一個錨點,然后以這個錨點為基準新建一個標簽顯示采樣值。為了實現采樣數據的動態更新,每次鼠標重新選擇采樣點時,從畫布包含的圖形元素中篩選并移除所有CurevePoint類型的錨點元素,最后再生成新采樣點處的錨點和數據標簽。如圖8所示為某一MF4文件中選取三個變量的二維時域顯示圖形。

4.2.3? ?三維播放功能

在ADAS中,汽車的傳感器會將車輛周圍環境中目標的坐標、速度、加速度等狀態信息發送給ECU,然后控制算法會根據感知信息作出相應的動作。隨著時間的不斷前進,目標的二維坐標值會隨著發生變化。因此,對這些信息,需要使用播放功能表達。

實現三維播放功能有兩個難點:(1)如何在所有變量中提取環境目標的坐標值;(2)如何設置播放功能。每家公司的變量名都有一定的命名規范,因此通過查找公司的相關文件,對MDF文件中解析出來的變量名稱建立符合環境目標命名規

范的正則表達式,就可以提取出環境目標的變量名。找到變量名之后,可以建立一個二維列表樣式的數據結構,每一行是[采樣時刻,目標1-x坐標,目標1-y坐標,目標2-x坐標,目標2-y坐標,...],這樣就可以獲得所需要的數據,解決了難點(1)的問題。針對難點(2),需要設計一個簡單的播放器狀態機,為了實現播放進程和單幀進行的功能,可以設計一個滑動條和按鈕進行控制。利用上述方法導入某MF4文件后的三維動態顯示結果如圖9所示,當目標動態運動時,使用前文中方法顯示目標的一些動態屬性,如瞬時速度、加速度等,并在右側使用表格和樹狀結構顯示了一些目標的屬性值。

5? ?結論(Conclusion)

本文介紹了一種使用Qt可視化高級駕駛輔助系統測試數據的方法。本方法簡單、快速,使用開源工具包,而且可以針對ADAS測試過程中的需求進行定制。經某公司驗證,該軟件簡單、實用,運行穩定,為ADAS控制算法的開發、驗證工作提供了保障。

參考文獻(References)

[1] 任銀行,張建龍,殷承良.基于XCP協議支持多總線的ECU標定系統的實現[J].電子技術應用,2018,44(5):72-76.

[2] 宋維群,楊世春,李明,等.基于ASAM標準的標定數據庫邏輯分析與編程實現[J].汽車技術,2012(1):10-13.

[3] 董新宇,張春,姜承賦,等.MDF存儲格式在柴油機匹配標定軟件中的應用[J].現代車用動力,2011(2):29-31.

[4] PyQtGraph官方文檔及API[EB/OL]. https://pyqtgraph.readthedocs.io/en/latest,2020-6-10.

[5] ASAM. MDF標準官方維基百科[EB/OL]. https://www.asam.net/standards/detail/mdf/wiki,2020-6-10.

[6] Mdfreader-基于Python的MDF文件解析工具[EB/OL]. https://github.com/ratal/mdfreader.git.

[7] 王碩,孫洋洋.PyQt5快速開發與實戰[M].北京:電子工業出版社,2017.

[8] 陸文周.Qt5開發及實例(第3版)[M].北京:電子工業出版社,2017.

作者簡介:

楊軍典(1990-),男,碩士生.研究領域:ADAS感知系統及控制策略算法.

陳凌珊(1966-),女,博士,教授.研究領域:新能源汽車技術,智能駕駛控制技術.

猜你喜歡
可視化
無錫市“三項舉措”探索執法可視化新路徑
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
三維可視化信息管理系統在選煤生產中的應用
選煤技術(2022年2期)2022-06-06 09:13:12
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
基于CGAL和OpenGL的海底地形三維可視化
可視化閱讀:新媒體語境下信息可視化新趨勢
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 国产精品美乳| 国产真实二区一区在线亚洲| 中文字幕永久在线看| 成人无码一区二区三区视频在线观看| 一区二区日韩国产精久久| 日韩精品成人网页视频在线| 亚洲国产系列| 麻豆国产原创视频在线播放| 国产精品网拍在线| 任我操在线视频| 综合久久五月天| 一区二区三区国产| 嫩草在线视频| 夜夜操天天摸| 国产精品三级av及在线观看| 国产成人精品三级| 99九九成人免费视频精品| 在线日韩一区二区| 美女潮喷出白浆在线观看视频| 亚洲专区一区二区在线观看| 最新精品国偷自产在线| 精品少妇人妻av无码久久| 中文字幕在线永久在线视频2020| 日韩精品一区二区深田咏美| 麻豆国产在线不卡一区二区| 国产精品久久久久鬼色| 呦女亚洲一区精品| 97亚洲色综久久精品| 久久成人18免费| 日韩毛片免费| 三区在线视频| 国产精品主播| 老熟妇喷水一区二区三区| 国产精品jizz在线观看软件| 波多野结衣一区二区三区四区| 国产成人精品一区二区免费看京| 国产自无码视频在线观看| 国产打屁股免费区网站| 亚洲天堂.com| 乱人伦99久久| 亚洲毛片一级带毛片基地| 亚洲首页国产精品丝袜| 91精品国产丝袜| 成人久久18免费网站| 在线无码九区| 久久精品视频亚洲| 亚洲色图在线观看| 色成人亚洲| 国产乱人视频免费观看| 55夜色66夜色国产精品视频| 国产在线一二三区| a级毛片免费播放| 91探花国产综合在线精品| 日韩欧美中文| 精品国产一区二区三区在线观看| 亚洲91在线精品| 超清无码一区二区三区| 日韩高清在线观看不卡一区二区| 亚洲天堂免费| 九色视频在线免费观看| 72种姿势欧美久久久大黄蕉| 99在线观看免费视频| 美女无遮挡免费网站| 亚洲成在线观看 | 欧美啪啪网| 亚洲美女操| 9久久伊人精品综合| 国产不卡网| 亚洲第一精品福利| 精品无码人妻一区二区| 色综合久久无码网| 国产欧美一区二区三区视频在线观看| 成人久久18免费网站| 福利一区三区| 国产手机在线小视频免费观看| 四虎国产在线观看| 国产色图在线观看| 国产AV毛片| 免费播放毛片| 国产亚洲一区二区三区在线| 精品综合久久久久久97| 97精品久久久大香线焦|