?

自主空中加油分布式仿真系統設計*

2023-12-06 03:00施明健王大勇鄭文軒王延祥王宏倫
指揮控制與仿真 2023年6期
關鍵詞:錐套空中加油油機

施明健,王大勇,鄭文軒,任 斌,王延祥,4,王宏倫?

(1. 沈陽飛機設計研究所,遼寧 沈陽 110035;2. 北京航空航天大學自動化科學與電氣工程學院,北京 100191;3. 北京航空航天大學飛行器控制一體化技術重點實驗室,北京 100191;4. 北京航空航天大學未來空天技術學院/高等理工學院,北京 100191)

空中加油(Aerial Refueling)是利用加油機在空中為飛行中的其他飛行器補充燃料的技術,是增大飛行器作戰半徑和滯空時間,提高載彈量,解決起飛重量與飛行性能間矛盾的重要手段[1]。近幾十年,隨著無人系統技術的不斷發展,無人機被逐步應用于軍事領域和民用領域。在上述背景下,無人機空中加/受油的需求也在日益增加。傳統空中加油技術雖然為無人機空中加油提供了一定的技術支持,但又不完全適用于無人機空中加油問題。相較于有飛行員參與的傳統空中加油,自主空中加油的無人化特點要求必須設計受油機的精確對接控制律,從而使得受油機具備與加油機完成自主對接的能力。因此,針對無人機空中加油問題,自主空中加油(Automated Aerial Refueling,AAR)技術得到了專門研究[2-7]。

在自主空中加油技術的研究過程中,地面仿真試驗是進行技術驗證的重要途徑,在驗證技術路線可行性,保證任務安全性,提高任務成功率等方面起著不可忽視的作用。一般而言,仿真條件越符合實際情況,仿真結果的可參考性就越強。但自主空中加油系統的組成十分復雜,包括六自由度、非線性、變質量的加/受油機系統;柔性的加油軟管-錐套組合體;由加油機尾流、受油機前擾波和大氣紊流組成的復雜氣流干擾系統等[8]。在如此復雜的系統組成下,一方面,單一計算機系統對自主空中加油技術進行單線程仿真時很難達到實時仿真;另一方面,單一計算機系統也難以逼真模擬自主空中加油任務中加、受油機之間以及飛行控制器與飛機之間的通信。而通過分布式仿真(Distributed Simulation)技術,一方面可以實現并行實時計算;另一方面,按照實際物理系統劃分各仿真節點則更加接近真實系統,且能將系統之間的通信納入仿真過程,亦能為接入半物理仿真以及其他系統留出可擴展空間。針對分布式仿真的需求,國際上先后發展出了DIS(Distributed Interactive Simulation)、ALSP(Aggregation Level Simulation Protocol)以及HLA(High Level Architecture)三個標準[9]。漢諾威大學的ACOSAR項目組也研發了自己的DCP(Distributed Co-Simulation Protocol)協議并將其開源[10-11],開源界也有一些諸如coral的分布式仿真框架。但這些標準和框架有一個共同的特點:定義了充足的可擴展的協議功能和接口,導致整體邏輯復雜,實現困難,并且有很多的功能對于小型項目來說是用不到的。因此,有許多人員選擇基于TCP(Transmission Control Protocol,傳輸控制協議)或者ZeroMQ等輕量級框架開發簡單的分布式仿真系統[12-13],并根據項目的具體需求定制系統功能。

本文在對自主空中加油技術研究的基礎上,基于目前行業內對空中加油技術地面實時仿真系統的需求,基于ZeroMQ和C++/Qt開發了一套無人自主空中加油分布式仿真系統。本系統能夠實現對自主空中加油過程的實時仿真,并具有良好的人機交互界面。

1 仿真通信網絡

分布式仿真系統的核心部分是通信網絡。對于網絡通信,目前絕大多數網絡都基于TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)構建,其中包括TCP、UDP(User Datagram Protocol,用戶數據包協議)、FTP(File Transfer Protocol,文件傳輸協議)等多個協議。對于傳輸仿真數據的需求,可以使用各類網絡通信中間件實現,包括ActiveMQ、RabbitMQ、ZeroMQ、Kafka等。本文利用ZeroMQ進行通信網絡的構建,接下來對ZeroMQ的特點做簡單介紹。

1.1 ZeroMQ簡介

ZeroMQ是一種消息隊列中間件,它具有很多適用于分布式系統架構的特點[14]:

1)簡單

ZeroMQ將底層的Socket、多線程、緩沖區等內容封裝起來,提供了更高層面的API,且從初始化到發送消息也僅需要數行代碼,遠低于繁雜的原生Socket接口。

2)多種消息模式

ZeroMQ支持請求回應、發布訂閱、管道以及獨占對共4種消息模式,它們之間還能組合出更多的模式以實現從一對一到多對多的通信模式。

3)高性能

ZeroMQ的協議簡單,且性能遠超ActiveMQ等同類軟件。

4)無須消息服務器

ActiveMQ等同類軟件需要有獨立的消息服務器以實現消息的持久化存儲,保證即使在處理節點離線的情況下也能將消息緩存等待節點上線后處理。而仿真環境的數據都是實時產生并消耗的,不需要中間存儲。

5)通信數據原子化

原子化的含義是,通過ZeroMQ發送的一組數據,要么完全沒有收到,要么收到完整的數據包。也就是說ZeroMQ會自動處理并保證接收到完整的數據而無須再手動拆包拼包。再結合基于TCP的通信以及局域網穩定的環境,可以認為ZeroMQ能夠提供穩定可靠的數據傳輸。

1.2 程序框架

為了實現分布式仿真,本文設計兩類節點——管理節點和仿真節點,以及兩種話題——指令話題和數據話題。

管理節點負責統籌管理各仿真節點,提供節點注冊、仿真管理等功能;而仿真節點則專注于實現仿真工作,在管理節點的指令下執行仿真動作,并收發仿真數據。

其中,管理節點可發布指令話題,用于發布各類指令,各仿真節點通過訂閱該話題來接收相應指令。仿真節點也可發布指令話題,用于發布對管理節點指令的回復消息,管理節點通過訂閱該話題來接收回復消息。

此外,各個仿真節點還能夠發布自己所產生的數據話題,需要使用對應數據的節點來訂閱該數據話題,實現節點間的數據流動。對于數據話題,需要進一步明確話題的名稱、話題的發布者以及話題所在的端口。

程序框架如圖1所示。圖中箭頭表示發布或訂閱的話題,而虛線框的“若干仿真數據話題”是為了便于理解和繪圖設置的,實際上并不存在一個“話題的集合”,而是由每個仿真節點分別發布了若干話題,再根據自己所需訂閱了若干話題。

對于仿真節點和管理節點之間傳輸的指令數據,本文還定義了一定的數據幀格式以方便數據的傳輸處理,數據幀格式如圖2所示。其中節點編號為各個仿真節點的編號;指令代碼為預定義的一系列指令;數據長度標識了后續的附加數據的字節數;附加數據則包含了指令的詳細內容,例如,初始化時會包含所有節點的相關信息。而對于仿真節點之間傳送的仿真數據,則直接以原始數據發布,不再添加額外的幀頭。

同時,分布式仿真程序中還預定義了一系列指令,包括初始化、注冊、開始仿真、推進仿真、暫停、結束等,而上述定義的指令幀格式也為后續擴展指令保留了充足的擴展空間。

1.3 管理節點

管理節點是仿真網絡的核心節點,主要負責管理注冊節點信息,發送指令等。管理節點對外部提供的功能接口包括:設置指令接收、發送端口;獲取仿真節點信息列表;獲取仿真數據話題信息列表;設置仿真時長和仿真步長;設置錄制與回放;設置仿真速度;初始化仿真;開始、暫停、停止、單步推進仿真;節點初始化、注冊、仿真推進和發生錯誤等事件的回調函數等。

管理節點的運行邏輯框圖如圖3所示。

圖3 管理節點程序邏輯框圖Fig.3 Logical block diagram of management node program

管理節點啟動后,等待仿真節點發送注冊消息,待所有節點注冊完畢后可手動進行初始化操作。在啟動仿真后,管理節點將啟動一個周期為1 ms的定時器,循環檢查當前時間是否到達了仿真時間,再檢查各個節點完成情況,都滿足條件后發出下一步仿真的指令。

1.4 仿真節點

仿真節點是用于實現仿真程序的節點,主要負責在管理節點的指令驅動下完成仿真動作。仿真節點主要提供的功能接口有:設置指令發送、接收端口及管理節點IP用于連接到管理節點;設置本節點IP及數據話題起始端口,用于仿真節點之間的仿真數據話題的相互連接;添加仿真數據話題;設置仿真初始化、推進、后退、結束等仿真操作的回調函數。

仿真節點相比管理節點所需的設置和接口要少很多,只需要提供用于連接管理節點和仿真節點之間互聯的信息即可,此外,還需要設置仿真相關的數據話題和回調函數用于仿真的各階段調用。仿真節點運行的邏輯框圖如圖4所示。

圖4 仿真節點程序邏輯框圖Fig.4 Logic block diagram of simulation node program

通過上述流程框圖不難看出,仿真節點的主體邏輯與接收各類消息密切相關。與管理節點類似,仿真節點也使用一個子線程處理所有消息的接收,包括來自管理節點的指令和來自其他仿真節點的仿真數據。在有數據到來時,將根據數據類型分別處理管理節點指令或者是更新仿真數據,如果是仿真指令則會調用對應的仿真函數,并在結束后將自己產生的仿真數據廣播出去。

同時,仿真節點還實現了錄制和回放功能。如果管理節點選擇了錄制本次仿真,仿真節點會自動將本節點每步仿真產生的數據以二進制數據文件的形式保存在硬盤上;而如果管理節點選擇了回放仿真,仿真節點會加載對應的錄制文件,并在每步仿真時讀取對應的數據。

需要注意的是,各仿真函數的調用處于子線程中,考慮到用戶可能會在其他線程對數據進行進一步處理操作,就需要對仿真數據做相應的處理以避免沖突。對于本節點發布的數據,在調用仿真函數結束后立刻將其廣播發布出去即可;而對于要接收的數據,需要額外建立緩沖區,在接收到數據時先保存至緩沖區,在調用仿真函數之前再將其更新至用戶數據區。

1.5 仿真數據話題

每個仿真節點都會產生一定的仿真數據,也會需要讀取若干其他節點產生的數據,各仿真節點之間會形成復雜的數據依賴關系。對于每個仿真數據話題,需要明確其由哪個節點產生,包括該節點的IP、發布話題的端口號,這些信息會在節點注冊時發送給管理節點,再在初始化時由管理節點廣播給所有節點。各仿真節點收到初始化信息后,就可以根據自身需要對所需的數據話題建立監聽鏈接。

用戶在對某個仿真節點創建仿真數據話題時,需要明確數據名稱即話題名稱、數據的容量、該節點是發布還是讀取該數據,其余參數由程序自動確定。

2 仿真程序

在前文所述作為底層的通信網絡基礎上,本節將介紹本文中開發的仿真管理節點及各個仿真節點的應用程序。

各仿真節點不僅要完成數字仿真工作,還需要提供一定的人機接口進行仿真設置、指令輸入、查看仿真數據等,因此還需要構建用戶圖形界面(Graphical User Interface,GUI),以提供良好的交互體驗??紤]到仿真通信網絡使用C++編寫,本文選擇了同樣基于C++的Qt框架。

2.1 管理節點程序

仿真管理節點主要負責整個仿真過程的配置與調度管理,它對用戶來講相當于控制臺,可以很好地控制整個仿真的過程。管理節點掌握著仿真時鐘,仿真運行后,每隔一個仿真周期,管理節點會向各仿真應用節點發送仿真推進指令,各仿真應用節點接收到仿真推進指令后,分別調用各自的仿真過程函數,完成一個周期的仿真,并交互必要的仿真數據。管理節點程序界面如圖5所示。

圖5 管理節點程序界面Fig.5 Management node program interface

圖5中展示了有兩個測試仿真節點時的管理節點界面。其中上方工具欄中的按鈕依次為搜索節點、初始化、開始仿真、暫停仿真、終止仿真、仿真加速、仿真減速和仿真設置。這些按鈕通過Qt中的QPushButton類實現,在程序中通過Qt的信號/槽機制將按鈕事件連接到管理節點類對應的功能代碼中。仿真設置按鈕則連接到仿真設置窗口的打開動作上。

中間區域為節點信息展示區,以樹狀圖的形式展示各個節點的信息,包括節點名稱、IP、端口、初始化狀態和當前步數,以及節點中包含的仿真數據話題的名稱、IP和端口以及所有權信息。這部分展示內容使用Qt的QTreeWidget樹狀圖控件實現,同時向管理節點類注冊了節點信息更新的回調函數,在節點注冊、節點仿真推進等情況下會調用該函數,并在函數中根據相關信息更新圖表。

最下方顯示了當前仿真相關信息,包括:

1)仿真步長:每推進一步需要的時間,也是仿真程序中的離散步長;

2)仿真速度:仿真時間與真實時間的比例,100%即為實時仿真;

3)仿真類型:包括仿真若干秒的定時長仿真和不設時長的自由仿真兩種;

4)仿真狀態:當前整個系統的狀態,包括等待注冊、初始化中、仿真中、暫停中、仿真結束等;

5)仿真時間:仿真程序內部的時間;

6)實際速度:當前仿真推進的速度與真實時間的比例,100%為實時仿真;

7)仿真狀態進度條:如果仿真類型為定時長仿真,則會顯示一個不斷推進的進度,自由仿真則會顯示不斷滾動的忙碌進度條;

8)錄制重播狀態:即當前仿真進程是否啟用了錄制或者重播功能。

2.2 仿真節點程序

2.2.1 仿真節點GUI界面

仿真節點的基本界面,包括文字顯示、輸入框、選擇框、按鈕等都可以直接使用Qt的GUI工具搭建,但仍有一些界面無法用Qt的基本控件實現,因此,本文引入一些第三方控件來實現仿真節點GUI界面的搭建。

仿真過程中會產生大量的仿真數據,需要實時展示以供監控狀態、觀察數據。Qwt(Qt Widgets for Technical Applications)是一個基于Qt框架開發的用于科學應用的控件庫[15],包含了各類圖表、按鈕、旋鈕等控件,效率極高,能夠滿足本文的實時顯示仿真數據的需求。

對于飛行姿態數據,如果仍以折線圖或者數字形式顯示則不夠直觀。本文中采用名為QFlightInstrument的飛行儀表盤控件展示飛行姿態,如圖6所示,左側為空速,右側為高度和升降速率,下方為航向,中間則可綜合顯示俯仰、滾轉、側滑等角度。

圖6 飛行儀表盤控件Fig.6 Flight instrument panel control

同樣的,飛行軌跡如果直接以數字或者曲線表示也不夠直觀,因此,本文將地圖嵌入程序中,利用地圖的JavaScript API接口,并結合Qt的QWebChannel模塊實現C++與JavaScript程序的相互調用,將飛機坐標以相對地圖上某一固定點的位置的形式顯示在地圖上,同時可以顯示實時飛行軌跡、預定航線、障礙物等信息。航跡地圖示例如圖7所示。

圖7 航跡地圖示意圖Fig.7 Schematic diagram of track map

2.2.2 仿真節點

在前文所述的仿真通信網絡、仿真節點GUI界面構建的基礎上,本節將展示本文中構建的分布式仿真系統的仿真節點。根據實際系統物理意義和計算量,本文將整個仿真系統分為以下幾個節點:受油機數字飛機節點、指揮控制節點、飛行控制節點、風擾節點、軟管錐套節點和錐套數據中轉節點。

以仿真20 s為例,管理節點及各仿真節點的運行界面如下所示,其中管理節點為圖8,可以看到其中列出了各個節點的名稱、步數以及包含的數據話題信息。

圖8 仿真過程中的管理節點Fig.8 Management nodes in the simulation process

各個仿真節點如圖9—圖14所示,分別利用前述編程工具實現了GUI界面,展示了對應的仿真數據。

圖9 數字飛機節點Fig.9 Digital aircraft node

圖10 指揮控制節點Fig.10 Command and control node

圖11 飛行控制節點Fig.11 Flight control node

圖12 風擾節點Fig.12 Wind disturbance node

圖13 軟管錐套節點Fig.13 Hose-Drogue assembly node

圖14 錐套數據中轉節點Fig.14 Drogue data transfer node

數字飛機節點可接收飛行控制系統產生的控制指令以及風擾節點產生的大氣紊流和加油機尾流數據。通過對考慮了風擾、參數攝動以及燃油質量變化的六自由度非線性剛體飛機模型進行計算得到飛行狀態。此外,受油機的數字飛機部分還包括受油插頭模型、接收飛機重心位置和姿態信息、產生受油插頭的位置信息。圖9展示了數字飛機節點的程序界面,用于顯示加/受油機的各狀態量。界面左側區域是狀態選擇區域,用戶可選擇需要顯示的狀態量,界面右側區域為狀態顯示區域,可以將被選擇的狀態量的變化曲線顯示出來。

指揮控制節點以可視化控件實時監控飛機的飛行軌跡以及重要飛行狀態,程序界面如圖10所示。指揮控制節點的左側區域是地圖,用于顯示飛機的位置及軌跡,右上方區域為飛行儀表盤。同時,由于儀表盤分辨率較低,界面右下方以數字形式將飛機重要參數顯示出來。

飛行控制節點的功能是根據飛行狀態和環境參數等信息計算對飛機的控制指令。以受油機為例,對接控制系統接收錐套位置信息和數字飛機節點產生的飛行狀態信息,通過設計好的控制律產生控制指令。飛行控制節點程序界面如圖11所示。

風擾節點負責計算產生大氣紊流、受油機前擾波和加油機尾流等氣流擾動參數,其程序界面如圖12所示。

加油機軟管錐套節點負責計算加油機飛行狀態以及受加油機牽引和氣流擾動作用的加油軟管-錐套組合體的運動狀態。加油軟管錐套節點的程序界面如圖13所示,加油機和加油錐套的各項數據以曲線形式表示出來。

錐套數據中轉節點用于在對接段的半物理仿真中與錐套的半物理仿真設備對接,將仿真的錐套數據發送給控制錐套運動的機械臂,并將機器視覺識別的錐套位置信息接收并反饋給仿真系統??梢栽诔绦蛑星袚Q是否接入半物理仿真系統,接入時錐套數據為視覺識別數據,否則為仿真數據。

3 結束語

本文基于ZeroMQ和C++/Qt開發了自主空中加油技術分布式仿真系統。該系統能夠對復雜的自主空中加油系統進行實時仿真,并方便接入半物理仿真設備,對驗證空中加油控制方法有重要作用。

猜你喜歡
錐套空中加油油機
一種農機用錐套式帶輪的設計
基于計算流體力學的空中回收錐套氣動特性分析
大數據中心高壓油機供電模式探討
10kV油機在大型數據中心的并機控制與切換方案探討
增穩錐套與軟管二級擺建模與仿真
基于CRUISE軟件1.6L油機匹配某輕卡動力總成分析
大型集裝箱船舶分油機仿真系統
軍人畫軍機(六)
空中加油錐套支柱數對穩定傘阻力系數影響研究
無人機空中加油自主會合導引律研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合