国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

無(wú)人機(jī)載光電吊艙顯控軟件的設(shè)計(jì)與實(shí)現(xiàn)

2021-04-08 09:25馬希超魏志強(qiáng)
電視技術(shù) 2021年1期
關(guān)鍵詞:視頻流吊艙線程

馬希超,魏志強(qiáng),葛 珊

(中國(guó)電子科技集團(tuán)公司第三研究所,北京 100015)

0 引 言

隨著無(wú)人直升機(jī)在偵察、監(jiān)視、消防及安保等領(lǐng)域的推廣應(yīng)用,無(wú)人機(jī)載光電吊艙的重要性日漸凸顯[1-2]。作為無(wú)人機(jī)的關(guān)鍵載荷之一,光電吊艙通常集成可見光相機(jī)、紅外熱像儀等傳感器,在采集并記錄實(shí)時(shí)視頻圖像的同時(shí),可實(shí)現(xiàn)手動(dòng)搜索、自動(dòng)跟蹤及掃描等功能[3-4]。通常,光電吊艙裝載在無(wú)人直升機(jī)上,通過(guò)有線或無(wú)線傳輸鏈路與地面操控臺(tái)通信,下傳實(shí)時(shí)視頻流和設(shè)備狀態(tài)信息,并接收操控指令。運(yùn)行于地面操控臺(tái)的顯控軟件用于實(shí)時(shí)解碼和顯示下傳的視頻,并實(shí)現(xiàn)人機(jī)交互[5]。

除光電吊艙本身的設(shè)備性能外,顯控軟件的設(shè)計(jì)和性能也對(duì)設(shè)備的使用體驗(yàn)具有重要作用[6]。良好的軟件設(shè)計(jì)可最大程度地發(fā)揮硬件設(shè)備的性能,提高設(shè)備的易用性和靈活性。顯控軟件在運(yùn)行中需同時(shí)處理視頻流的接收、解碼及顯示,設(shè)備狀態(tài)的接收、解析及顯示,控制指令的產(chǎn)生和發(fā)送,軟件界面人機(jī)交互,外設(shè)操縱桿動(dòng)作響應(yīng)等多項(xiàng)任務(wù)。由于顯控軟件需要同時(shí)處理的流程和任務(wù)繁多,因此必須合理設(shè)計(jì)規(guī)劃多線程執(zhí)行方式,保證各項(xiàng)流程的實(shí)時(shí)并行處理。

為此,設(shè)計(jì)并實(shí)現(xiàn)了一種基于C++語(yǔ)言和Qt框架的無(wú)人機(jī)載光電吊艙顯控軟件,通過(guò)對(duì)多線程結(jié)構(gòu)和數(shù)據(jù)傳遞流程的合理設(shè)計(jì),實(shí)現(xiàn)了軟件的高效、可靠、穩(wěn)定運(yùn)行,同時(shí)具有友好易用的人機(jī)交互界面。

1 軟件設(shè)計(jì)

1.1 功能設(shè)計(jì)

根據(jù)光電吊艙的設(shè)備功能、傳輸鏈路的連接形式以及實(shí)際使用的需要,顯控軟件應(yīng)具備如下功能:通過(guò)UDP 網(wǎng)絡(luò)通信方式接收包含視頻流的數(shù)據(jù)包,并從中提取可見光視頻流和紅外視頻流;實(shí)時(shí)解碼并顯示可見光視頻和紅外視頻;通過(guò)串口接收設(shè)備狀態(tài)數(shù)據(jù),并進(jìn)行解析顯示;通過(guò)串口發(fā)送設(shè)備控制指令;響應(yīng)軟件界面的人機(jī)交互操作;響應(yīng)外設(shè)操縱桿的動(dòng)作,并轉(zhuǎn)換為設(shè)備控制指令;其他軟件功能,如視頻記錄、數(shù)據(jù)記錄等。

1.2 模塊設(shè)計(jì)

根據(jù)功能要求進(jìn)行軟件的功能模塊設(shè)計(jì),如圖1 所示。各模塊的具體功能,如表1 所示。

圖1 功能模塊圖

表1 軟件模塊功能表

光電吊艙下傳的視頻流數(shù)據(jù)中既包含可見光視頻流也包含紅外視頻流,通過(guò)數(shù)據(jù)包幀頭的狀態(tài)字進(jìn)行區(qū)分。因此,視頻流接收模塊需對(duì)數(shù)據(jù)包進(jìn)行解析,將提取出的兩路視頻流分別存入各自的數(shù)據(jù)緩存中??梢?,光視頻解碼模塊和紅外視頻解碼模塊分別從各自的數(shù)據(jù)緩存中讀取視頻流數(shù)據(jù),通過(guò)解碼得到原始YUV 格式圖像,再經(jīng)過(guò)格式轉(zhuǎn)換得到可顯示的RGB 圖像數(shù)據(jù)并傳遞至顯示模塊,進(jìn)而在軟件界面上實(shí)現(xiàn)實(shí)時(shí)顯示。

光電吊艙通過(guò)串口下傳設(shè)備狀態(tài)信息,由串口收發(fā)模塊接收并解析后,通過(guò)顯示模塊以字符或圖形方式顯示到軟件界面上。人機(jī)交互模塊和操縱桿響應(yīng)模塊捕獲操作人員通過(guò)軟件界面或操縱桿進(jìn)行的操作動(dòng)作,并生成對(duì)應(yīng)的控制指令,然后由串口收發(fā)模塊發(fā)送給光電吊艙。

2 軟件實(shí)現(xiàn)

2.1 開發(fā)環(huán)境和界面設(shè)計(jì)

軟件的開發(fā)環(huán)境為Visual Studio 2015,編程語(yǔ)言為C++,采用Qt 5.11作為圖形界面設(shè)計(jì)開發(fā)框架。軟件的界面設(shè)計(jì)如圖2 所示。

圖2 軟件界面設(shè)計(jì)

軟件界面分為傳感器控制、吊艙控制、記錄儀/激光控制、系統(tǒng)狀態(tài)顯示及軟件啟動(dòng)控制等5 個(gè)主要區(qū)域,通過(guò)合理的功能分區(qū)提高軟件的易用性。此外,視頻顯示為單獨(dú)窗口,可切換可見光和紅外顯示,便于在多屏設(shè)備上實(shí)現(xiàn)分屏顯示。

2.2 線程設(shè)計(jì)

軟件采用多線程方式實(shí)現(xiàn)各個(gè)功能模塊的并行處理,線程設(shè)計(jì)如圖3 所示。

圖3 線程設(shè)計(jì)

按照Qt 的規(guī)定,軟件界面的顯示和交互只能在主線程執(zhí)行,因此主線程運(yùn)行顯示模塊和人機(jī)交互模塊。軟件啟動(dòng)后,主線程開始運(yùn)行,創(chuàng)建5 個(gè)子線程,以并行方式運(yùn)行其余5 個(gè)功能模塊。線程之間的數(shù)據(jù)通信采用Qt 的signal/slot(即信號(hào)/槽)機(jī)制實(shí)現(xiàn)。該機(jī)制靈活安全,可有效避免大量采用全局變量可能引起的線程沖突和代碼混亂。在軟件停止運(yùn)行前,主線程停止并銷毀各子線程,釋放占用的資源。

各個(gè)線程的創(chuàng)建均在功能模塊的類內(nèi)實(shí)現(xiàn)。以可見光視頻解碼模塊為例,首先定義解碼器類Decoder。該類繼承自QObject,具有signal/slot 機(jī)制。定義該類所需的成員變量和成員函數(shù),如開始解碼startDecoding、停止解碼stopDecoding 等。此外,需定義一個(gè)線程變量,即QThread thread,線程的起止函數(shù)分別為void start()和void stop()。在Decoder 類的構(gòu)造函數(shù)中需包含以下處理:

connect(&thread, &QThread::started, this,&Decoder::startDecoding);

connect(&thread, &QThread::finished, this,&Decoder::stopDecoding);

moveToThread(&thread);

上述代碼首先將線程的啟動(dòng)信號(hào)started 和Decoder 的開始執(zhí)行函數(shù)startDecoding 相關(guān)聯(lián),將線程的停止信號(hào)finished 和Decoder 的結(jié)束執(zhí)行函數(shù)stopDecoding 相關(guān)聯(lián),然后將Decoder 類移動(dòng)到線程thread 中執(zhí)行。這樣對(duì)于Decoder 類的對(duì)象如tvDecoder,在需要啟動(dòng)解碼器時(shí),只需啟動(dòng)線程thread.start()。線程將發(fā)送啟動(dòng)信號(hào)started,進(jìn)而觸發(fā)startDecoding 函數(shù),開始在thread 線程中執(zhí)行。當(dāng)需要停止解碼器時(shí),只需調(diào)用thread.quit(),線程會(huì)發(fā)送停止信號(hào)finished,并觸發(fā)stopDecoding 函數(shù)執(zhí)行相關(guān)的釋放操作。

類內(nèi)線程創(chuàng)建處理不影響模塊類的各項(xiàng)功能實(shí)現(xiàn),簡(jiǎn)化了程序設(shè)計(jì),使得程序結(jié)構(gòu)清晰易懂。

3 軟件測(cè)試

軟件設(shè)計(jì)開發(fā)完成后,與光電吊艙配合搭載于某型無(wú)人直升機(jī)。吊艙與地面操控臺(tái)的通信采用無(wú)線傳輸鏈路,最大支持8 Mb/s 的傳輸速率。經(jīng)多次掛飛實(shí)驗(yàn)驗(yàn)證,軟件運(yùn)行穩(wěn)定,可同時(shí)解碼并顯示可見光視頻和紅外視頻(視頻截圖如圖4 和圖5 所示),延遲較低,無(wú)明顯卡頓現(xiàn)象,同時(shí)設(shè)備狀態(tài)和控制指令收發(fā)正常,軟件無(wú)閃退、報(bào)錯(cuò)等現(xiàn)象。

圖4 可見光視頻截圖

圖5 紅外視頻截圖

4 結(jié) 語(yǔ)

本文設(shè)計(jì)了一種用于無(wú)人機(jī)載光電吊艙地面操控臺(tái)的顯控軟件,可通過(guò)網(wǎng)絡(luò)通信接收視頻流數(shù)據(jù)并解碼顯示,通過(guò)串口收發(fā)設(shè)備狀態(tài)和控制指令。軟件采用C++語(yǔ)言和Qt 框架編程實(shí)現(xiàn),采用多線程架構(gòu),通過(guò)功能模塊類內(nèi)創(chuàng)建線程,并充分發(fā)揮signal/slot 機(jī)制的靈活性,使得程序結(jié)構(gòu)清晰易懂。經(jīng)掛飛實(shí)驗(yàn)驗(yàn)證,本軟件運(yùn)行穩(wěn)定,各項(xiàng)功能正常有效,無(wú)閃退、報(bào)錯(cuò)等現(xiàn)象。

猜你喜歡
視頻流吊艙線程
邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
戰(zhàn)機(jī)吊艙火力賦能“神器”
基于視頻流傳輸中的擁塞控制研究
基于國(guó)產(chǎn)化環(huán)境的線程池模型研究與實(shí)現(xiàn)
鐵路貨場(chǎng)智能大門集裝箱全景圖像采集方法研究
NEO—2X光電吊艙
淺談linux多線程協(xié)作
美國(guó)視頻流市場(chǎng)首現(xiàn)飽和征兆
吊艙式電力推進(jìn)船舶螺旋槳匹配設(shè)計(jì)仿真研究
某電子設(shè)備機(jī)載吊艙的氣動(dòng)特性分析
广南县| 乐安县| 项城市| 新蔡县| 定陶县| 满城县| 张家界市| 额济纳旗| 兴隆县| 柘荣县| 西峡县| 斗六市| 射阳县| 南溪县| 三台县| 延安市| 遂宁市| 荔波县| 高邑县| 出国| 元谋县| 陆川县| 溧水县| 临夏市| 大悟县| 定襄县| 扶风县| 镇江市| 长武县| 新干县| 乐亭县| 金溪县| 普兰县| 乌拉特中旗| 江油市| 木里| 庐江县| 仙居县| 抚远县| 沁水县| 东乡|