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

?

無人直升機地面監(jiān)控軟件模塊化設(shè)計與實現(xiàn)

2021-06-17 07:12:20宋樂
電子制作 2021年5期
關(guān)鍵詞:直升機無人組件

宋樂

(航空工業(yè)直升機設(shè)計研究所無人機事業(yè)部,江西景德鎮(zhèn),333001)

0 背景和意義

無人直升機研制最早始于上世紀50年代初。我國則在“七五”期間就開始重視無人直升機的設(shè)計和研制工作[1]。歷經(jīng)30多年的發(fā)展,無人直升機已經(jīng)被廣泛應(yīng)用于無線電偵測、地質(zhì)地貌測繪、航空影拍、電力施工、森林防火、應(yīng)急救災(zāi)、通信中繼、反恐偵查等諸多領(lǐng)域[2]。近年來,無人直升機的傷亡風險低、機動性好、起降條件少、使用方便等優(yōu)勢在民用市場需求中逐步顯現(xiàn)出來。我國民用無人機已經(jīng)進入了快速發(fā)展時期。越來越多的無人直升機系統(tǒng)研制已經(jīng)由“以平臺為中心”向“以任務(wù)為中心”的思想轉(zhuǎn)變[3]。如何提高無人直升機的多任務(wù)能力,如何降低無人直升機改裝的成本。這對無人機工業(yè)設(shè)計提出了更高的要求。

本文使用模塊化設(shè)計思想研發(fā)無人直升機地面監(jiān)控軟件,為降低無人直升機多任務(wù)改裝帶來的風險提供幫助。

1 設(shè)計原則

軟件模塊化旨在建立可重用的軟件構(gòu)件[4]。在不需要修改或少量修改的情況下,可再次組建成新的軟件。進而降低軟件的開發(fā)成本、提高軟件的可靠性和可維護性。軟件模塊的良好設(shè)計體現(xiàn)在以下幾個方面。

(1)要求軟件模塊具有較好彈性的同時不增加解決問題的復(fù)雜程度。

(2)要求軟件模塊具有較好的可移植性。

(3)要求軟件模塊具有更清晰的接口定義。

(4)要求軟件模塊具有更好的穩(wěn)定性。

(5)要求軟件模塊具有更好的獨立性。避免模塊間的過度依賴。

2 軟件模塊設(shè)計

無人直升機地面監(jiān)控軟件實現(xiàn)地面人員對無人直升機的遠程控制和監(jiān)視功能。通過數(shù)據(jù)通信系統(tǒng)將獲取的無人機下行遙測數(shù)據(jù)幀進行解析、分析和圖形化顯示。同時將控制指令編碼成上行遙控數(shù)據(jù)幀發(fā)送到無人機飛控系統(tǒng)中。

具有不同任務(wù)載荷的無人直升機在監(jiān)控數(shù)據(jù)和通信協(xié)議方面有所不同。根據(jù)模塊化設(shè)計原則將地面監(jiān)控軟件的基本功能進行底層抽象和數(shù)據(jù)分離。同時對用戶界面的圖形化顯示功能進行組件封裝。圖1說明地面監(jiān)控軟件的模塊化設(shè)計結(jié)構(gòu)。

圖1 地面監(jiān)控軟件模塊化設(shè)計結(jié)構(gòu)圖

■2.1 底層功能抽象

長期實踐表明,良好的軟件彈性來自于更多高層次的抽象。地面監(jiān)控軟件最為核心和固化的功能就是根據(jù)不同的協(xié)議對各種數(shù)據(jù)幀進行解析、組裝、分析和圖形化顯示。因此,將這些功能分成協(xié)議解析模塊、數(shù)據(jù)算法模塊、通信模塊和用戶界面組件模塊四大底層功能模塊。通過面向?qū)ο蟮脑O(shè)計方式各自形成四大互相獨立的類庫。這些類庫的設(shè)計具有以下的特點。

(1)采用單一職責[5]的類設(shè)計原則。不同職責的類相互獨立,沒有繼承或接口關(guān)系。

(2)相同職責的類實現(xiàn)同一接口、繼承同一父類。可以根據(jù)不同需要擴展新類增加軟件彈性。

下面以協(xié)議解析模塊為例。該模塊以AbstractSignal為基類抽象出十六進制字節(jié)數(shù)組與實際值的換算邏輯。而不同的換算邏輯實現(xiàn)在具體的子類中。比如AnalogSignal實現(xiàn)字節(jié)數(shù)組與數(shù)值的換算;TextSignal實現(xiàn)字節(jié)數(shù)組與文本的換算;DiscreteSignal實現(xiàn)字節(jié)數(shù)組與離散位狀態(tài)的換算等。Protocol類包含一組信號,實現(xiàn)幀數(shù)據(jù)的匹配、解析、過濾和校驗功能。圖2展現(xiàn)協(xié)議解析模塊的UML類圖。

圖2 協(xié)議解析模塊UML類圖

■2.2 數(shù)據(jù)協(xié)議分離

地面監(jiān)控軟件處理數(shù)據(jù)需要依據(jù)不同的幀數(shù)據(jù)協(xié)議。將協(xié)議數(shù)據(jù)與功能進行分離??梢允垢鞯讓幽K具有更好的獨立性,避免模塊間的過度依賴。同時將分離的協(xié)議數(shù)據(jù)結(jié)構(gòu)化和持久化存儲。有助于提高軟件的可配置性。降低因協(xié)議變化而造成軟件更改的風險。

協(xié)議數(shù)據(jù)結(jié)構(gòu)化和持久化存儲可以采用各種形式。比如XML結(jié)構(gòu)文件、JSON結(jié)構(gòu)文件、關(guān)系型數(shù)據(jù)庫等。圖3展現(xiàn)某協(xié)議的XML結(jié)構(gòu)。

圖3 協(xié)議XML結(jié)構(gòu)

■2.3 用戶界面組件化

地面監(jiān)控軟件最終目的是將解析和分析后的數(shù)據(jù)通過圖形用戶界面展現(xiàn)給用戶。不同項目軟件變化最大的部分就是圖形用戶界面(GUI)。將界面組件化能更好的降低UI設(shè)計中大量的重復(fù)性工作。

針對無人直升機的使用特點和習慣。我們抽象出了狀態(tài)燈、儀表盤、水平儀、刻度尺、游標尺、能量柱、雷達圖和開關(guān)按鈕等UI組件。這些組件具備以下三個特點。

(1)每個組件都是獨立的模塊,在修改時不會影響其他的組件。

(2)每個組件都是完整的功能閉環(huán)。具有獨立的尺寸、顏色和狀態(tài)設(shè)置邏輯。

(3)每個組件都可以通過布局與其他組件自由組合成更大的組件或界面。

下面介紹幾個使用QT開發(fā)的QWidget組件,如圖4所示。

圖4 組件可視化界面

水平儀用于顯示無人直升機的俯仰角、滾轉(zhuǎn)角和航向角等姿態(tài)信息。使用setDegValue(int)、setRollValue(int)等方法實現(xiàn)背景圖、刻度線和方向指示器的旋轉(zhuǎn)。

游標尺用于顯示無人直升機的速度和高度信息。使用setCursorValue(int)等方法實現(xiàn)游標刻度的上下移動,并在即將超出刻度范圍時刷新刻度軸。

儀表盤可以用于顯示各種發(fā)動機轉(zhuǎn)速、旋翼轉(zhuǎn)速等信息。能量組可以用于顯示各種燃油量、滑油溫度等信息。雷達圖可以顯示無人直升機起飛降落時的定位信息。狀態(tài)燈可以顯示無人機直升機的各種告警信息。

3 應(yīng)用實例

在某無線電監(jiān)測項目中。無人直升機下行遙測數(shù)據(jù)包含BCD格式的時間量需要解析顯示。針對需求變化,在地面監(jiān)控軟件的協(xié)議解析模塊中增加了繼承AbstractSignal 的BCDTimeSignal類。通過getRealValue()方法直接可以獲取解析后的時間數(shù)據(jù)顯示在用戶界面中。此次變更只需要完成BCDTimeSignal的單元測試和時間數(shù)據(jù)顯示的配置項測試即可。

在某海事項目中。需要控制無人直升機上的部分任務(wù)設(shè)備。針對需求變化,需要在上行控制指令增加新的內(nèi)容。為此,地面監(jiān)控軟件通過修改上行控制幀協(xié)議的格式。在沒有更新任何代碼的情況下實現(xiàn)了需求。此次變更只需要完成針對指令發(fā)送功能的配置項測試即可。

經(jīng)過長期的項目實踐證實了模塊化設(shè)計的地面監(jiān)控軟件有效的降低了研發(fā)成本。為降低無人直升機平臺改裝需求帶來的風險提供了幫助。

4 結(jié)束語

本文詳細介紹了無人直升機地面監(jiān)控軟件的模塊化設(shè)計與實現(xiàn)。并通過應(yīng)用實例說明經(jīng)過模塊化設(shè)計的地面監(jiān)控軟件具有更高的開發(fā)效率、更好的可配置能力和更低的研發(fā)成本。通過模塊組裝和參數(shù)配置,地面監(jiān)控軟件可以適應(yīng)更多具有不同任務(wù)載荷的無人直升機平臺。

猜你喜歡
直升機無人組件
直升機?
無人機智能巡檢在光伏電站組件診斷中的應(yīng)用
能源工程(2022年2期)2022-05-23 13:51:50
直升機
新型碎邊剪刀盤組件
重型機械(2020年2期)2020-07-24 08:16:16
U盾外殼組件注塑模具設(shè)計
無人戰(zhàn)士無人車
反擊無人機
詩到無人愛處工
岷峨詩稿(2017年4期)2017-04-20 06:26:43
無人超市會流行起來嗎?
風起新一代光伏組件膜層:SSG納米自清潔膜層
太陽能(2015年11期)2015-04-10 12:53:04
河北区| 大英县| 高雄县| 尼勒克县| 怀来县| 会泽县| 得荣县| 龙岩市| 志丹县| 庐江县| 黎城县| 千阳县| 七台河市| 东明县| 平塘县| 荔波县| 崇文区| 张家港市| 利津县| 景洪市| 新营市| 富民县| 分宜县| 凌海市| 加查县| 桐柏县| 汾阳市| 璧山县| 姜堰市| 黄平县| 慈溪市| 邻水| 邢台市| 焦作市| 镇原县| 浙江省| 利辛县| 武鸣县| 宁南县| 绵阳市| 慈利县|