陳 浩,屈 藝,吳盤龍,蘇 鼎
(1.南京理工大學 自動化學院, 南京 210094; 2.中國人民解放軍66483部隊, 北京 100093)
在對來襲目標的攔截過程中,使用實測的目標航路數據和射表或微分方程擬合的彈道軌跡數據提前虛擬閉環[1]校射,可以提高后期對目標的攔截概率。其中彈目偏差的誤差大小是制約校射效果的主要因素。
隨著我國科技興軍戰略的提出,視景仿真技術與軍事領域的結合不斷緊密,視景仿真技術在軍事領域體現出了良好的可控性、安全性、無破壞性、不受空間和場地限制、費用低等優點[2]。采用視景仿真技術,直觀地顯示偏差數值,逼真地再現虛擬閉環較射過程,具有良好的人機交互性。
本文針對直線線性插值求取迎彈面上的彈著點誤差較大問題,采用三次樣條曲線插值[3],求取彈著點和彈目偏差,同時基于Vgea Prime的可視化仿真系統使得虛擬閉環校射過程直觀逼真,具有沉浸式的打擊感。
彈目偏差的定義是目標迎彈面上的有向二維矢量[4]。 目標迎彈面[5]的定義為與高炮到目標向量垂直的平面。通過目標以目標與觀測點連線作為法線的平面為觀目垂直面,通過目標以目標與火炮所在位置中心作為法線的平面為炮目垂直面,在實際情況中,我們可以把觀目垂直面近似看作炮目垂直面,因為目標觀測點和火炮位置中心的距離和目標和火炮中心位置的距離比值很小,這樣可以大大減少計算量。

(1)

圖1 炸目坐標系
基于彈丸軌跡是離散的數據點,即使彈道解算周期再短也難以保證恰好有數據點落在Q平面上。采用三次樣條插值算法,使用Q平面前后的數據點,擬合出恰好在Q平面上的數據點,用于計算彈目偏差。在工程實踐中經常用到插值,最簡單的插值是在相鄰的兩個數據點之間線性插值,顯然直線無法很好地擬合彈丸軌跡且精度低。
在已知的彈道數據有N個點,已知橫坐標a=x0 這N個數據點每兩個相鄰點xi、xi+1構成一個子區間[xi,xi+1],共有n個子區間。為了獲得精度高、比較平滑且符合彈道的曲線,使用3次樣條插值,第i個子區間的插值函數Si(x)為: Si(x)=a0+a1x+a2x2+a3x3 (2) 為了保證曲線的連續性和光滑性[7],必須對每個區間插值函數有一些要求,主要包括: 1) 連續性。除了兩個邊界節點外,任意一個節點xi同時屬于[xi-1,xi]和[xi,xi+1]區間,邊界的節點等于數據點的邊界值,有如下限制條件: Si(xi)=Si-1(xi),i=1,2,…,n-1 (3) S0(x0)=y0 (4) Sn-1(xn-1)=yn-1 (5) 2) 光滑性。除了兩個邊界節點外,任意一個中間節點的一階導數和二階導數連續,有如下限制條件: (6) (7) 根據前面所述,我們只需求出每個子區間的插值函數的4個系數a0、a1、a2、a3就能完全確認這n個插值函數。但在實際中,為了數學推導的方便,采用間接的表達方式,有: (8) 式(8)中:hi=xi+1-xi,i=0,1,…,n-1;x∈[xi,xi+1],φ(x)=(2x+1)(x-1)2,φ1(x)=x(x-1)2。 式(8)就是插值函數的最終表達式,其中只有mi是未知的,其他都可以根據已知條件求得。剩下就是如何求得mi,把式(8)代入約束式(3)~式(5)中,經過整理可得: λimi-1+2mi+μimi+1=gi,i=1,…,n-1 (9) 在此基礎上加入自然邊界條件進行約束:即兩個邊界點的二階導數為給定的值,其中最常見的為0,即在兩個邊界點上有: (10) 根據式(9),結合邊界條件式(11),可以推導出求解系數mi的矩陣為: (11) 式(11)中,除mi都是可以根據已知條件求得,矩陣可由追趕法求解[8]。為簡化計算,降低維數,將數據點的x坐標作為自變量,y、z作為因變量,假定Q平面在子區間k中,彈道與Q平面的交點Z*坐標為(xq,yq,zq),則可得如下條件: yq=SYk(xq) (12) zq=SZk(xq) (13) 式(12)、(13)中:SYk(·)在子區間k(可由數據點確定),是以x為自變量、y為因變量的插值函數;SZk(·)是在子區間k,是以x為自變量、z為因變量的插值函數。假定高炮觀測中心的坐標為(xg,yg,zg),目標坐標為(xt,yt,zt),基于Q平面和彈目連接線的垂直關系可得式(14)~(16)。 (14) (15) (16) 將式(14)~(15)代入式(16)中,再與式(12)~(13)聯立,即可求得Z*點的坐標。 已知Z*點、Tg點和O點都是基于地理直角坐標系下的,而彈目偏差定義在炸目坐標系下的,炸目坐標系是以O點為原點的地理直角坐標系經偏航β、俯仰ε、旋轉α和平移而得,變換公式為: (17) (18) 式(17)、(18)中:x、y、z對應當前坐標;x′、y′、z′對應變換后的坐標;ε、β、α分別為繞X、Y、Z軸的逆時針的旋轉角度;Δx、Δy、Δz分別為坐標系原點沿X,Y,Z軸的平移量。 經過變換,在炸目坐標系下的Z*點、Tg點和O點坐標可由上式變換求得,在圖1中,若O點坐標為(x0,y0,z0),Tg點坐標為(xg,yg,zg),Z*的坐標為(xz,yz,zz),則ΔεE和ΔβE為: (19) 彈目偏差實際使用時還需要改作地理坐標系中的方位角與高低角的增量Δεq和Δβq,即: (20) Vega Prime[9]作為一款功能強大的視景仿真開發工具,具有界面友好、簡單易用、面向對象等特點,在同類產品中處于領先地位,它的主要應用方向有軍事仿真渲染、儀器儀表界面、訓練模擬器和城市漫游渲染。用戶通過與視景仿真系統的交互,獲得與真實世界相同的響應。 基于Vega Prime的視景仿真框架[10]由模型構建、LynX Prime圖形界面配置和仿真程序設計3部分組成。 模型構建:使用Creator對所需地形場景和靜態實體模型建模。 LynX Prime圖形界面配置:通過圖形化界面根據Vgea Prime最簡流程基礎上,對仿真場景初始化參數設置,主要包括場景創建、視景通道建立、模型引入、觀察者視點設置、特效建立和碰撞檢測應用等,配置文件為仿真系統提供“素材”,生成配置文件(.acf),仿真系統通過外部引用的方式引入配置文件,生成初始的仿真畫面。 仿真程序設計:主要包括兩部分:一是通過消息中間件[11](消息隊列)傳來的數據,分為MFC的控制信息和數據處理接收線程接收的彈丸軌跡和目標航跡;二是滿足畫面的要求的仿真畫面開發,包括虛擬場景漫游、碰撞檢測響應、視點通道控制、界面管理線程、視景仿真幀循環等內容。整個視景仿真系統如圖2所示。 圖2 視景仿真系統框圖 為了便于視景仿真系統的后期擴展,因此將不同的功能模塊化。主要有動畫顯示模塊、人機交互界面模塊、數據處理模塊和算法模塊。各模塊功能如下: 1) 動畫顯示模塊:沒有數據時,生成仿真畫面;接收到數據時,生成相對應的高炮發射彈丸攔截直升機的動畫效果。 2) 人機交互界面模塊:在以MFC為基礎的界面下,設置某個區域為三維動畫顯示區域,并提供視點切換和復位功能。 3) 數據處理模塊:接收到數據根據通信協議,取出數據幀對應位的數據,將十六進制數據轉換為十進制并存儲到鏈表中。 4) 算法模塊:根據彈目偏差定義、Q平面和三次樣條插值,獲得迎彈面上真實彈著點,并實時解算彈目偏差。 仿真系統接收到消息隊列傳來的數據后,目標進入高炮的射程內,彈丸發射,彈丸到達目標附近,計算彈目偏差。若擊中目標,仿真結束,若不滿足條件,則繼續接收校射過的彈道數據,仿真系統則繼續發射彈丸,再次計算偏差,不斷虛擬閉環校射,直至擊中目標。仿真過程流程如圖3所示。 圖3 仿真過程流程框圖 本文使用的建模軟件是Multigen Creator (以下簡稱Creator),該軟件在軍事仿真等領域應用廣泛,Creator模型的后綴為flt(OpenFlight),也是仿真領域的標準,可以被Vega、Virtools、Quest3D等軟件兼容。Creator采用廣告片等技術對模型進行實時渲染,滿足實時性的要求。因此本文使用Creator對所需的高炮、直升機和戈壁灘地形進行建模。 建模就是通過視覺角度(即光影效果、點線面、材質、貼圖)去構建真實的物品。高炮模型主要由8×8輪式裝甲車、彈藥箱和炮臺組成,炮臺部分有turretDOF、barrelDOF和gunDOF節點,依次是炮架的左右旋轉節點、炮管的上下移動節點和炮管的自旋節點。直升機設計了兩個旋翼[12],分別為大直徑六葉旋翼和尾部的四葉旋翼,依次為maintiltDOF節點和tailrotorDOF節點,同時添加了損壞后的模型和正常模型。建模效果如圖4、圖5所示: 空曠的場景可以更好地展示系統的仿真效果,所以我們對戈壁灘地形建模。但根據實際場景,一個戈壁灘可能幾十、幾百平方公里,需要加載大量的數據。因此我們將戈壁灘地形等分成9個小模塊,不同模塊的部分會被切分到不同文件中。采用這種分塊批量處理的方式,使得每個模塊單獨成為一個文件,能有效緩解數據讀入內存時對系統造成的壓力。在視景仿真程序中導入地形模塊時,Creator會自動生成一個母文件,以外部引用[13]的方式把這些子文件包含進去。戈壁灘地形效果如圖6所示。 圖6 戈壁灘地形效果圖 一個簡潔、美觀、大方的界面不僅能有效地顯示整個視景仿真過程中各項數據,還能提供給用戶與系統之間友善的交互性操作。為了滿足更多區域的展示畫面的需求,且能觀察仿真畫面里的態勢。兼顧以上二者,工具欄提供按鍵,將懸浮式的常規控制對話框和視景通道隱藏,使得仿真畫面占據整個屏幕下方。界面整體效果如圖7所示。 圖7 界面整體效果示意圖 仿真初期,主視角在炮口的右側,可以實時觀察高炮周圍的態勢。視角的觀察范圍有限,右下角視景通道可用于觀察目標周圍。在配置文件中添加Channel、Observer和Transform實例,在視景通道UsedBy屬性中選擇主窗口,即該通道選擇主窗口顯示,觀察者選擇新建的觀察者實例。觀察者實例屬性頁中LookFromTarget選項選擇Transform實例,在該實例中即可設置視景通道相對于目標的位置和觀察目標的運動方式。 通道的顯示與隱藏通過自定義消息、消息隊列和線程通信[15]實現。在自定義消息頭文件中增加如下定義: #define WM_TargetChannel_MSGWM_USER+42 線程通信和消息隊列都在WinUser.h頭文件中已經實現,只需調用PostThreadMessage和PeekMessage方法即可。功能區的按鍵創建點擊事件處理函數,給VPThread傳遞自定義信息: ∷PostThreadMessage(VPThreadID,WM_TargetChannel_MSG,(WPARAM)(true),0); 其中WPARAM為傳遞的參數即為真,最后在主線程中調用PeekMessage函數接收自定義消息: PeekMessage(&msg,NULL,WM_USER+1,WM_USER+42,PM_REMOVE); 拿到為真的參數用于作為視景通道的顯示或隱藏的標志量,首先要獲得該視景通道的指針: mTargetchannel=vpChannel::find("TargetChannel"); 其中引號內的是配置文件中的通道實例名稱,調用setDrawArea顯示畫面: mTargetchannel ->setDrawArea(0.75,1,0.65,1); 括號中4個數字依次表示的是視景在仿真畫面中占據的左右上下位置,范圍為0到1,視景通道位置關系如圖8所示。 圖8 視景通道位置關系示意圖 視景通道的位置參數都為0或都為1可隱藏視景通道,待需要時再顯示。 在攔截目標的過程中,偏差量會實時變化。彈目偏差的數值實時顯示在仿真畫面的左上角,更直觀。在配置文件中創建Overlay2Dtext實例,在主視景通道中顯示,Text屬性欄中設置初始字樣、字體和顏色。Origin屬性欄設置其在畫面中的位置。在程序中,實時的顯示偏差需要拿到配置文件中該實例的指針: m_PianChaOverlay2DText=vpOverlay2DText::find("PianChaOverlay2DText "); 當彈丸穿過迎彈面時,產生偏差,將所要顯示的字符和數字拼成字符指針dest,調用setString[16]函數: m_PianChaOverlay2DText ->setString(dest)。 仿真系統分為3個階段,沒有接收到數據系統處于就緒狀態、直升機進入視野攔截階段和擊毀直升機成功攔截。 在就緒階段,采用多視角的方式展示戰場態勢,主要有四個視點。左上為沿著炮口方向向上觀察的視點;右上為全局視點,從高處觀察整個戰場態勢;左下為高炮視點;右下直升機視點,觀察目標周圍態勢。多視點效果如圖9所示。 圖9 多視點效果圖 在直升機攔截目標階段,當接收到外部數據時,直升機來襲。目標進入主視點視野內,右上方是直升機,左上方是實時顯示的彈目偏差的高低角和方位角,即為最終返回給火控設備的偏差量,彈丸發射處于視野中部,高炮和目標的連線上,如首次未成功攔截,后續會繼續發射彈丸攔截目標。仿真畫面效果如圖10所示。 圖10 仿真畫面圖 當火控設備接收到偏差量進行校正后,仿真系統再次接收到數據后,多次校射后若彈丸擊中目標,觸發爆炸效果,仿真結束,目標爆炸效果如圖11所示。 圖11 目標爆炸效果圖 相對于傳統直線線性插值求取迎彈面上的彈著點,3次樣條曲線插值求取的彈著點使得實時解算彈目偏差的更準確、更接近真實值。基于Vega Prime的視景仿真系統,畫面逼真打擊感強,使得虛擬閉環校射真實直觀,同時具備可控性、安全性、無破壞性,不受氣候影響、不受空間和場地限制、費用低等,具有工程應用價值。但仿真系統對外部數據過分依賴,在外部數據出現問題時,無法保證本身計算的正確性。下一步研究方向是減少對彈道解算的依賴,內置彈道解算模塊,以實現只依賴火控信息,實現整個攔截過程的可視化。




1.3 坐標變換




2 仿真系統框架設計

2.1 系統結構介紹
2.2 系統仿真過程介紹

3 虛擬場景構建
3.1 實體建模
3.2 地形建模

4 人機交互界面設計

4.1 視景通道的實現

4.2 彈目偏差的動態顯示
5 仿真結果
5.1 仿真畫面



6 結論