大好,疫情肆虐,首先企盼早日云開(kāi)霧散。此時(shí)此刻響應(yīng)號(hào)召,就安靜地看一看文章,為不久后馬力全開(kāi)的工作,積蓄更多的技術(shù)儲(chǔ)備。
這一篇我們介紹一下如何在我們的智能駕駛開(kāi)發(fā)、測(cè)試平臺(tái)上面方便快捷地自定義功能。大也可以借此機(jī)會(huì)學(xué)習(xí)了解一下QML。


QML模塊界面
當(dāng)我們?cè)谧鋈魏蔚臏y(cè)試開(kāi)發(fā)的工作的時(shí)候,我們都需要將各類(lèi)數(shù)據(jù)采集下來(lái),然后針對(duì)我們要做的測(cè)試或者開(kāi)發(fā)對(duì)數(shù)據(jù)進(jìn)行分析和使用,然而對(duì)于人類(lèi)而言,枯燥的數(shù)字總難以直觀方便的表現(xiàn)出我們想要獲取的信息,誠(chéng)然,在現(xiàn)實(shí)條件限制下,人們有極大的能動(dòng)性可以去習(xí)得這個(gè)能力,正如黑客帝國(guó)中的數(shù)據(jù)終端一樣,直接從數(shù)字符號(hào)中讀取信息。然而如果我們可以簡(jiǎn)單gao效的實(shí)現(xiàn)數(shù)據(jù)的信息化轉(zhuǎn)換與呈現(xiàn),又有什么樣的理由去為難自己呢。
What is QML
首先簡(jiǎn)單說(shuō)一下什么是QML,在維基百科的QML英文界面稱作Qt Modeling Language,貌似曾經(jīng)的名稱是Qt Meta Language,我們姑且兼而用之吧,畢竟在www.qt.io網(wǎng)站上沒(méi)有找到對(duì)于QML語(yǔ)言的明確定義(也可能是因?yàn)闆](méi)有仔細(xì)的去找)。
QML是一種聲明式語(yǔ)言(declarative language),它通過(guò)用戶界面的可視組件以及它們之間的相互交互和關(guān)聯(lián)的關(guān)系來(lái)描述用戶界面。它是一種高度可讀的語(yǔ)言,旨在使組件能夠以動(dòng)態(tài)方式互連,并且允許在用戶界面中輕松重用和自定義組件。QML基于JavaScript,屬于QtQuick的一部分。在QML文檔中描述了一個(gè)關(guān)于QML元素的對(duì)象樹(shù),Qt附帶的QML元素有一組復(fù)雜的基礎(chǔ)構(gòu)建模塊(如矩形、圖像)和行為(如狀態(tài)、過(guò)渡、動(dòng)畫(huà)等)構(gòu)成。
使用QtQuick模塊,通過(guò)QML元素的組合,設(shè)計(jì)人員和開(kāi)發(fā)人員可以輕松地在QML中構(gòu)建從簡(jiǎn)單按鈕、滑塊到支持Internet功能的復(fù)雜程序。
而這也是為什么我們選擇在ViCANdo中集成QML的原因。通過(guò)QtQuick模塊任何人都可以很方便的實(shí)現(xiàn)自定義的用戶界面的開(kāi)發(fā)。如下面的截圖展示了一個(gè)通過(guò)QML實(shí)現(xiàn)的CAN報(bào)文發(fā)送界面。

Hello World
在ViCANdo中加在QML模塊非常的容易,一個(gè)簡(jiǎn)單的QML模塊代碼展示如下:

有興趣的讀者可以將上面的代碼拷貝到一個(gè)文本文檔中,然后保存成擴(kuò)展名qml的文件,然后打開(kāi)ViCANdo創(chuàng)建一個(gè)工程,在軟件的Presentation菜單中,選擇QML Quick 2.x presenter,然后在彈出的對(duì)話框中選擇剛剛保存的QML文件。

在ViCANdo的主窗口中就會(huì)呈現(xiàn)出來(lái)剛剛添加的QML模塊:Hello World。
Hello World is easy,但是現(xiàn)在你已經(jīng)有能力在ViCANdo內(nèi)創(chuàng)建任何需要的QML組件了。

細(xì)心的讀者有可能已經(jīng)發(fā)現(xiàn)截圖的軟件窗口和菜單和你們正在使用的有所不同,是的當(dāng)前使用的是MAC版的ViCANdo軟件,ViCANdo不僅僅支持Windows、Linux操作系統(tǒng),也同樣的支持蘋(píng)果的macOS,即便是zui新的Catalina。抓緊拿出手里的電腦,下載軟件嘗試一下吧。(下載地址:www.zuragon.com)
VideoView
在智能駕駛相關(guān)的功能測(cè)試中,視頻、攝像頭數(shù)據(jù)是非常重要的一環(huán),因此能夠在ViCANdo的界面針對(duì)視頻數(shù)據(jù)進(jìn)行處理操作是必要且必須的,比如如下的截圖所展示的。我們同時(shí)監(jiān)控兩個(gè)攝像頭數(shù)據(jù),并在視頻顯示窗口疊加顯示標(biāo)尺,標(biāo)尺可以根據(jù)需要任意調(diào)整。這在典型的測(cè)距、間距檢測(cè)應(yīng)用中是十分方便的(這里沒(méi)有顯示視頻的數(shù)據(jù),因?yàn)橄胍o大保留di一次顯示出視頻時(shí)的)。

對(duì)于這樣的界面顯示實(shí)現(xiàn)是非常簡(jiǎn)單的。首先我們?cè)赒t中建立一個(gè)工程,通過(guò)拖拽控件的方式建立如下圖所示的界面(或者任意想要的界面形式)。

然后我們?cè)诖a編輯界面對(duì)剛才創(chuàng)建的工程的代碼進(jìn)行簡(jiǎn)單的完善,如下圖所示,保存之后的qml文件就可以如hello world的例子一樣加載進(jìn)入ViCANdo工程中了。
“ 篇幅關(guān)系,我們沒(méi)有附上所有的代碼,如果有需要可以在公眾號(hào)留言并留下郵箱我們會(huì)提供本例子中的完整代碼給大。”

其他的數(shù)據(jù)源
除了剛剛提到的視頻數(shù)據(jù),我們更多接觸到的是總線上傳輸?shù)母鞣N信號(hào),同樣的在ViCANdo的QML功能中,我們可以方便的處理各種需要的信號(hào)。
如下的實(shí)例中我們創(chuàng)建了一個(gè)展示車(chē)輛各種信息的組件??梢苑奖愕娘@示當(dāng)前的車(chē)輛狀態(tài)、速度等。

如下的實(shí)例中:
我們可以以前視、俯視、側(cè)視等不同的角度顯示傳感器的識(shí)別信息和視頻信息(前視)。

好了,關(guān)于ViCANdo的QML集成功能就給大介紹到這里了,更多的有意思的功能大可以自己去探索一下。
QML插件是ViCANdo二次開(kāi)發(fā)的一個(gè)強(qiáng)大的功能,而對(duì)于更加復(fù)雜的、隨心所欲的實(shí)現(xiàn)任意的功能的方式,就不能囿于QML,我們還提供開(kāi)放的SDK可以更靈活的實(shí)現(xiàn)各種的功能。
ViCANdo
ViCANdo Suite是針對(duì)智能駕駛功能的開(kāi)發(fā)和測(cè)試平臺(tái),能夠同步的采集所需的各類(lèi)數(shù)據(jù),同時(shí)工具集成OpenCV,工程師可以直接使用OpenCV的相關(guān)函數(shù)來(lái)進(jìn)行開(kāi)發(fā)。
ViCANdo具有一個(gè)開(kāi)放的SDK,允許創(chuàng)建自定義接口,還允許將正在開(kāi)發(fā)中的算法用作ViCANdo本身的一部分,以非常高的性能執(zhí)行。通過(guò)使用ViCANSim中的 Matlab/Simulink擴(kuò)展,或者利用內(nèi)置仿真引擎進(jìn)行網(wǎng)絡(luò)仿真或視頻算法開(kāi)發(fā)
ViCANdo Suite直接支持的數(shù)據(jù)源


? 示例應(yīng)用:
在VICANdo內(nèi)實(shí)時(shí)車(chē)道線識(shí)別與實(shí)時(shí)顯示,通過(guò)在ViCANdo內(nèi)部直接集成車(chē)道線識(shí)別算法,方便直觀的展示車(chē)道線識(shí)別算法的識(shí)別情況,并利用ViCANdo的擴(kuò)展功能將識(shí)別的車(chē)道線、航向等信息與視頻疊加展示,可以方便的進(jìn)行算法的調(diào)試。

在上圖的工程中,我們添加了一路攝像頭采集道路信息,同時(shí)用兩路CAN通道采集車(chē)輛信息,通過(guò)圖像提取車(chē)道線信息,同時(shí)結(jié)合車(chē)輛的狀態(tài)信息,在圖像上實(shí)時(shí)疊加顯示識(shí)別的車(chē)道線信息和車(chē)輛的航線信息。
? 示例應(yīng)用:
環(huán)視攝像頭拼接與實(shí)時(shí)顯示,首先通過(guò)ViCANdo對(duì)LVDS攝像頭的支持,可以直接將一般的車(chē)載攝像頭的視頻數(shù)據(jù)接入到平臺(tái)中,對(duì)于開(kāi)發(fā)的工程師而言不必要再去投入精力到不必要的驅(qū)動(dòng)開(kāi)發(fā)等工作中,在ViCANdo中直接集成基于OpenCV的視頻拼接算法,并將拼接結(jié)果直接的展示在ViCANdo界面中。

在上圖的工程中,我們通過(guò)LVDS板卡實(shí)時(shí)采集四路車(chē)載攝像頭的視頻信息(非后裝攝像頭,可以保證算法應(yīng)用的參數(shù)即為原車(chē)攝像頭的參數(shù)),在軟件中加載圖像拼接算法,并在軟件窗口中直接顯示,同時(shí)顯示車(chē)載魚(yú)眼攝像頭的原始圖像。
ViCANdo Suite 產(chǎn)品介紹
ViCANdo Suite是針對(duì)智能駕駛功能的開(kāi)發(fā)和測(cè)試平臺(tái)軟件套裝。

軟件包含如下組件:

? ViCANdo:
ViCANdo是一款跨平臺(tái)的,針對(duì)AD/ADAS開(kāi)發(fā)的數(shù)據(jù)記錄和分析工具,支持運(yùn)行在Windows、Linux、MacOS等操作系統(tǒng),支持X86、ARM等平臺(tái)。
? ViCANlog:
設(shè)計(jì)用于車(chē)端路試采集的軟件,可以運(yùn)行在任何基于linux的硬件設(shè)備上,無(wú)人值守采集數(shù)據(jù)。除了一般計(jì)算機(jī)外,也支持Nvidia TX-2、Xavier,Nexcom等設(shè)備。
? ViCANdroid:
安卓端的APP,可以采集CAN總線和視頻、音頻、GPS等數(shù)據(jù),內(nèi)建FTP服務(wù),可以自動(dòng)的上傳數(shù)據(jù)到服務(wù)器。便于方便的對(duì)數(shù)據(jù)進(jìn)行處理分析。
? ViCANsim:
通過(guò)與OpenCV和Matlab/Simulink?等的集成,方便用戶部署自己的算法在ViCANsim上,于此同時(shí)也具有與Matlab/Simulink?的接口。
? ViCANbedded:
ViCANbedded的目標(biāo)是應(yīng)用于嵌入式環(huán)境,與ViCANdo 相同。它旨在輕松地將源代碼從 PC 平臺(tái)移植到到嵌入式環(huán)境。目前,它可支持 QTEmbedded 4.X及更高版本、QNX、Velocity、VxWorks等。
更多ViCANdo相關(guān)功能內(nèi)容,將在后續(xù)的文章中發(fā)布,敬請(qǐng)關(guān)注微信公眾號(hào)。
