QML模塊界面
當我們在做任何的測試開發的工作的時候,我們都需要將各類數據采集下來,然后針對我們要做的測試或者開發對數據進行分析和使用,然而對于人類而言,枯燥的數字總難以直觀方便的表現出我們想要獲取的信息,誠然,在現實條件限制下,人們有大的能動性可以去習得這個能力,正如黑客帝國中的數據終端一樣,直接從數字符號中讀取信息。然而如果我們可以簡單的實現數據的信息化轉換與呈現,又有什么樣的理由去為難自己呢。
What is QML
首先簡單說一下什么是QML,在維基百科的QML英文界面稱作Qt Modeling Language,貌似曾經的名稱是Qt Meta Language,我們姑且兼而用之吧,畢竟在www.qt.io網站上沒有找到對于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。抓緊拿出手里的電腦,下載軟件嘗試一下吧。(下載地址:www.zuragon.com)
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等。
更多ViCANdo相關功能內容,將在后續的文章中發布,敬請關注微信公眾號。
經緯恒潤
北京市海淀區知春路7號致真大廈D座6層
郵箱:market_dept@hirain.com
網址:www.hirain.com