ViCANdo新版本釋出(PART4)| QML整合

hirain_md發表於2020-03-03
        大家好,疫情肆虐,首先企盼早日雲開霧散。此時此刻響應號召,就安靜地看一看文章,為不久後馬力全開的工作,積蓄更多的技術儲備。
 
        這一篇我們介紹一下如何在我們的智慧駕駛開發、測試平臺上面方便快捷地自定義功能。大家也可以藉此機會學習瞭解一下QML。
 
 
QML模組介面
 
        當我們在做任何的測試開發的工作的時候,我們都需要將各類資料採集下來,然後針對我們要做的測試或者開發對資料進行分析和使用,然而對於人類而言,枯燥的數字總難以直觀方便的表現出我們想要獲取的資訊,誠然,在現實條件限制下,人們有很大的能動性可以去習得這個能力,正如駭客帝國中的資料終端一樣,直接從數字符號中讀取資訊。然而如果我們可以簡單的實現資料的資訊化轉換與呈現,又有什麼樣的理由去為難自己呢。
 

What is QML

        首先簡單說一下什麼是QML,在維基百科的QML英文介面稱作Qt Modeling Language,貌似曾經的名稱是Qt Meta Language,我們姑且兼而用之吧,畢竟在網站上沒有找到對於QML語言的明確定義(也可能是因為沒有仔細的去找)。
 
        QML是一種宣告式語言(declarative language),它透過使用者介面的可視元件以及它們之間的相互互動和關聯的關係來描述使用者介面。它是一種高可讀的語言,旨在使元件能夠以動態方式互連,並且允許在使用者介面中輕鬆重用和自定義元件。QML基於JavaScript,屬於QtQuick的一部分。在QML文件中描述了一個關於QML元素的物件樹,Qt附帶的QML元素有一組複雜的基礎構建模組(如矩形、影像)和行為(如狀態、過渡、動畫等)構成。
 
        使用QtQuick模組,透過QML元素的組合,設計人員和開發人員可以輕鬆地在QML中構建從簡單按鈕、滑塊到完全支援Internet功能的複雜程式。
 
        而這也是為什麼我們選擇在ViCANdo中整合QML的原因。透過QtQuick模組任何人都可以很方便的實現自定義的使用者介面的開發。如下面的截圖展示了一個透過QML實現的CAN報文傳送介面。
 
 

Hello World

        在ViCANdo中加在QML模組非常的容易,一個簡單的QML模組程式碼展示如下:
 
 
        有興趣的讀者可以將上面的程式碼複製到一個文字文件中,然後儲存成副檔名qml的檔案,然後開啟ViCANdo建立一個工程,在軟體的Presentation選單中,選擇QML Quick 2.x presenter,然後在彈出的對話方塊中選擇剛剛儲存的QML檔案。
 
 
 
        在ViCANdo的主視窗中就會呈現出來剛剛新增的QML模組:Hello World。
 
        Hello World is easy,但是現在你已經有能力在ViCANdo內建立任何需要的QML元件了。
 
 
        細心的讀者有可能已經發現截圖的軟體視窗和選單和你們正在使用的有所不同,是的當前使用的是MAC版的ViCANdo軟體,ViCANdo不僅僅支援Windows、Linux作業系統,也同樣的支援蘋果的macOS,即便是最新的Catalina。抓緊拿出手裡的電腦,下載軟體嘗試一下吧。(下載地址:)
 

VideoView

        在智慧駕駛相關的功能測試中,影片、攝像頭資料是非常重要的一環,因此能夠在ViCANdo的介面針對影片資料進行處理操作是必要且必須的,比如如下的截圖所展示的。我們同時監控兩個攝像頭資料,並在影片顯示視窗疊加顯示標尺,標尺可以根據需要任意調整。這在典型的測距、間距檢測應用中是十分方便的(這裡沒有顯示影片的資料,因為想要給大家保留第一次顯示出影片時的驚喜)。
 
 
        對於這樣的介面顯示實現是非常簡單的。首先我們在Qt中建立一個工程,透過拖拽控制元件的方式建立如下圖所示的介面(或者任意想要的介面形式)。
 
 
        然後我們在程式碼編輯介面對剛才建立的工程的程式碼進行簡單的完善,如下圖所示,儲存之後的qml檔案就可以如hello world的例子一樣載入進入ViCANdo工程中了。
 
        “ 篇幅關係,我們沒有附上所有的程式碼,如果有需要可以在公眾號留言並留下郵箱我們會提供本例子中的完整程式碼給大家。”
 
 

其他的資料來源

        除了剛剛提到的影片資料,我們更多接觸到的是匯流排上傳輸的各種訊號,同樣的在ViCANdo的QML功能中,我們可以方便的處理各種需要的訊號。
 
        如下的例項中我們建立了一個展示車輛各種資訊的元件。可以方便的顯示當前的車輛狀態、速度等。
 
 
        如下的例項中:
        我們可以以前視、俯視、側視等不同的角度顯示感測器的識別資訊和影片資訊(前視)。
 
 
        好了,關於ViCANdo的QML整合功能就給大家介紹到這裡了,更多的有意思的功能大家可以自己去探索一下。
        
        QML外掛是ViCANdo二次開發的一個強大的功能,而對於更加複雜的、隨心所欲的實現任意的功能的方式,就不能囿於QML,我們還提供開放的SDK可以更靈活的實現各種定製的功能。
 

ViCANdo

        ViCANdo Suite是針對智慧駕駛功能的開發和測試平臺,能夠同步的採集所需的各類資料,同時工具整合OpenCV,工程師可以直接使用OpenCV的相關函式來進行開發。
 
        ViCANdo具有一個開放的SDK,允許建立自定義介面,還允許將正在開發中的演算法用作ViCANdo本身的一部分,以非常高的效能執行。透過使用ViCANSim中的 Matlab/Simulink擴充套件,或者利用內建模擬引擎進行網路模擬或影片演算法開發
 

ViCANdo Suite直接支援的資料來源

 
•   示例應用:
        在VICANdo內實時車道線識別與實時顯示,透過在ViCANdo內部直接整合車道線識別演算法,方便直觀的展示車道線識別演算法的識別情況,並利用ViCANdo的擴充套件功能將識別的車道線、航向等資訊與影片疊加展示,可以方便的進行演算法的除錯。
 
 
        在上圖的工程中,我們新增了一路攝像頭採集道路資訊,同時用兩路CAN通道採集車輛資訊,透過影像提取車道線資訊,同時結合車輛的狀態資訊,在影像上實時疊加顯示識別的車道線資訊和車輛的航線資訊。
 
•   示例應用:
        環視攝像頭拼接與實時顯示,首先透過ViCANdo對LVDS攝像頭的支援,可以直接將一般的車載攝像頭的影片資料接入到平臺中,對於開發的工程師而言不必要再去投入精力到不必要的驅動開發等工作中,在ViCANdo中直接整合基於OpenCV的影片拼接演算法,並將拼接結果直接的展示在ViCANdo介面中。
 
 
        在上圖的工程中,我們透過LVDS板卡實時採集四路車載攝像頭的影片資訊(非後裝攝像頭,可以保證演算法應用的引數即為原車攝像頭的引數),在軟體中載入影像拼接演算法,並在軟體視窗中直接顯示,同時顯示車載魚眼攝像頭的原始影像。
 

ViCANdo Suite 產品介紹

        ViCANdo Suite是針對智慧駕駛功能的開發和測試平臺軟體套裝。
 
 
軟體包含如下元件:
 
 
•   ViCANdo:
        ViCANdo是一款跨平臺的,針對AD/ADAS開發的資料記錄和分析工具,支援執行在Windows、Linux、MacOS等作業系統,支援X86、ARM等平臺。
 
•   ViCANlog:
        設計用於車端路試採集的軟體,可以執行在任何基於linux的硬體裝置上,無人值守採集資料。除了一般計算機外,也支援Nvidia TX-2、Xavier,Nexcom等裝置。
 
•   ViCANdroid:
        安卓端的APP,可以採集CAN匯流排和影片、音訊、GPS等資料,內建FTP服務,可以自動的上傳資料到伺服器。便於方便的對資料進行處理分析。
 
•   ViCANsim:
        透過與OpenCV和Matlab/Simulink™等的整合,方便使用者部署自己的演算法在ViCANsim上,於此同時也具有與Matlab/Simulink™的介面。
 
•   ViCANbedded:
        ViCANbedded的目標是應用於嵌入式環境,與ViCANdo 相同。它旨在輕鬆地將原始碼從 PC 平臺移植到到嵌入式環境。目前,它可支援 QTEmbedded 4.X及更高版本、QNX、Velocity、VxWorks等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31535135/viewspace-2678214/,如需轉載,請註明出處,否則將追究法律責任。

相關文章