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