(中國船舶重工集團(tuán)公司昆明船舶設(shè)備研究試驗(yàn)中心 昆明 650051)
數(shù)據(jù)回放技術(shù)是現(xiàn)代檢測技術(shù)的重要組成部分,其與數(shù)據(jù)采集技術(shù)、信號處理技術(shù)、計(jì)算機(jī)圖形學(xué)技術(shù)等相結(jié)合,已在雷達(dá)、通信、水聲遙測、遙感、地震勘測等許多領(lǐng)域有著廣泛的應(yīng)用[1]。如何能夠快速、精確、直觀地實(shí)現(xiàn)大量歷史數(shù)據(jù)的回放,為用戶進(jìn)行數(shù)據(jù)分析提供直觀、有效的科學(xué)判據(jù),已成為目前數(shù)據(jù)回放的研究重點(diǎn)之一。
通常情況下,水下航行體在任務(wù)執(zhí)行過程中能夠?qū)崟r(shí)記錄相關(guān)航行數(shù)據(jù),航行任務(wù)結(jié)束后,由專業(yè)的數(shù)據(jù)處理設(shè)備將記錄的數(shù)據(jù)讀出,并以數(shù)據(jù)列表或曲線圖的方式進(jìn)行靜態(tài)顯示,技術(shù)人員通過查詢數(shù)據(jù)列表并進(jìn)行大量的分析和計(jì)算,了解航行任務(wù)的執(zhí)行情況。目前的數(shù)據(jù)回放分析工作,對數(shù)據(jù)分析人員的專業(yè)技能要求較高,且需要進(jìn)行大量重復(fù)的查找和計(jì)算工作,數(shù)據(jù)回放及分析效率低。因此,用戶希望提供一種簡單快捷的方式,能夠?qū)叫袛?shù)據(jù)進(jìn)行直觀、精確的回放分析。
針對以上問題,本文提出了一種以三維場景為主,結(jié)合二維圖表、語音播報(bào)等多種形式的數(shù)據(jù)回放方法,該方法通過標(biāo)注數(shù)據(jù)特征點(diǎn)的進(jìn)程回放控制實(shí)現(xiàn)數(shù)據(jù)回放的暫停/繼續(xù)、加速/減速、快進(jìn)/快退以及跳轉(zhuǎn)回放等功能,并按照用戶要求的模板格式進(jìn)行數(shù)據(jù)分析結(jié)果的自動(dòng)生成。通過該方法可快速對航行體任務(wù)執(zhí)行場景進(jìn)行重構(gòu),再現(xiàn)航行任務(wù)執(zhí)行過程,滿足用戶的數(shù)據(jù)回放需求,為其掌握水下航行體的工作情況提供了一種便捷、高效的途徑。
水下航行體在上電開始執(zhí)行航行任務(wù)后,會(huì)根據(jù)設(shè)定的協(xié)議格式按照一定的采樣頻率記錄其航行數(shù)據(jù),航行任務(wù)結(jié)束后,根據(jù)數(shù)據(jù)協(xié)議將采集到的記錄數(shù)據(jù)轉(zhuǎn)換為原始航行數(shù)據(jù)。數(shù)據(jù)預(yù)處理過程如圖1所示,從原始航行數(shù)據(jù)中提取出航行體的地理位置數(shù)據(jù)、動(dòng)力學(xué)數(shù)據(jù)、聲信號數(shù)據(jù)和航行狀態(tài)數(shù)據(jù)等,按照這四類數(shù)據(jù)的采樣頻率和北京時(shí)間對這四類數(shù)據(jù)進(jìn)行時(shí)間匹配,再結(jié)合北斗測量到的航行體入水經(jīng)緯度數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換、濾波與插值處理后獲得待回放的航行數(shù)據(jù)。
圖1 航行數(shù)據(jù)預(yù)處理流程
當(dāng)航行體在水下航行時(shí),北斗或GPS無法對其定位,通常使用慣導(dǎo)記錄其航行軌跡,在數(shù)據(jù)回放時(shí),需要將慣導(dǎo)記錄數(shù)據(jù)轉(zhuǎn)換為經(jīng)緯度。假設(shè)在某一時(shí)刻航行體慣導(dǎo)記錄數(shù)據(jù)為(?x'?y'h),以航行體入水上電時(shí)刻所在位置為坐標(biāo)原點(diǎn),其中?x表示相對于原點(diǎn)正東方向的偏移量,?y表示正北方向偏移量,h為航行深度,則該時(shí)刻航行體所在位置的經(jīng)緯度(B'L)可通過式(1)和式(2)實(shí)現(xiàn)。
式中:(B0'L0'h0)為坐標(biāo)原點(diǎn)經(jīng)緯度和深度,a、b為地球長短半徑,e、e'為地球的第一和第二偏心率,N為橢球面卯酉圈的曲率半徑[2]。
由于受到水下環(huán)境干擾、設(shè)備精度、數(shù)據(jù)采集模式以及傳輸方式等因素影響,記錄的數(shù)據(jù)可能與真實(shí)數(shù)據(jù)存在一定偏差,出現(xiàn)一些干擾數(shù)據(jù)。同時(shí),受到數(shù)據(jù)采樣頻率的影響,數(shù)據(jù)記錄率可能是一秒一次或多次,導(dǎo)致三維回放界面刷新頻率過低,畫面出現(xiàn)卡頓、抖動(dòng)、跳躍等現(xiàn)象。因此,本文對原始數(shù)據(jù)進(jìn)行去噪處理、平滑處理和插值,保證數(shù)據(jù)的真實(shí)準(zhǔn)確和回放動(dòng)畫的順暢顯示[3~4]。
在進(jìn)行數(shù)據(jù)回放時(shí),不僅需要使用三維數(shù)據(jù)可視化技術(shù)重現(xiàn)其在各時(shí)間點(diǎn)的位置信息和航行姿態(tài),還需要通過分析計(jì)算獲取其工作狀態(tài)、航行環(huán)境以及其它一些用戶關(guān)注的信息,將其以可視化的形式進(jìn)行展示。針對這種情況,單一的數(shù)據(jù)展現(xiàn)形式已不能滿足回放的需求,需要結(jié)合多種數(shù)據(jù)可視化技術(shù)來實(shí)現(xiàn)數(shù)據(jù)回放。在航行數(shù)據(jù)可視化分析使用的數(shù)據(jù)可視化技術(shù)如下。
1)三維場景建模:為了便于用戶直觀了解和分析該航行體的任務(wù)執(zhí)行情況,通過三維建模并驅(qū)動(dòng)模型,建立動(dòng)態(tài)的可視化三維航行圖像,回放航行任務(wù)中該航行體的姿態(tài)以及多個(gè)航行體間的相對位置變化。
2)二維航跡繪制:根據(jù)航行體記錄的位置信息,數(shù)據(jù)回放時(shí)在電子海圖上繪制航行體的航行軌跡[5],并使用二維圖標(biāo)在其航跡上標(biāo)注出特征點(diǎn)的信息。
3)語音播報(bào)與音效展示:回放軟件中調(diào)用微軟自帶的Microsoft Speech API和Text-to-Speech引擎[6],將文本轉(zhuǎn)換為語音,在航行體開始航行、航行到工作深度、上浮等關(guān)鍵時(shí)間點(diǎn)進(jìn)行語音播報(bào)。此外,軟件調(diào)用MCI媒體控制接口函數(shù)[7],讀取并播放。mp3背景音效文件,讓用戶聽到水流、發(fā)動(dòng)機(jī)響動(dòng)等音效,提升場景渲染效果。
4)動(dòng)態(tài)圖表顯示:使用文本、列表、動(dòng)態(tài)曲線圖、動(dòng)態(tài)數(shù)據(jù)分布圖的形式顯示回放過程中各時(shí)間點(diǎn)航行體的位置、航速、角速度、航向等基本數(shù)據(jù)以及深度、頻率、脈寬、信號強(qiáng)度等特征曲線。
為了再現(xiàn)航行任務(wù)執(zhí)行的過程,在進(jìn)行數(shù)據(jù)回放時(shí),需要對數(shù)據(jù)按照實(shí)際記錄的時(shí)間點(diǎn)進(jìn)行動(dòng)態(tài)回放,同時(shí)用戶可以進(jìn)行開始回放/停止回放、暫停/繼續(xù)、加速/減速和按照指定時(shí)間間隔進(jìn)行快進(jìn)/快退、跳轉(zhuǎn)到指定時(shí)間點(diǎn)或指定位置的操作。同時(shí),在數(shù)據(jù)回放過程中,尤其是加速或快進(jìn)時(shí),需要確保一些關(guān)鍵特征點(diǎn)的信息不會(huì)丟失,比如航行體入水航行點(diǎn)、上浮點(diǎn)、軌跡姿態(tài)發(fā)生變化點(diǎn)以及包含聲學(xué)特征的數(shù)據(jù)點(diǎn)。本文提出了一種基于特征點(diǎn)的回放進(jìn)程控制方法,以滿足用戶對數(shù)據(jù)動(dòng)態(tài)回放的需求,該方法的具體實(shí)現(xiàn)如下。
1)將待回放的數(shù)據(jù)讀入緩存區(qū),尋找并標(biāo)記出含有關(guān)鍵特征點(diǎn)的數(shù)據(jù)幀;
2)設(shè)置一個(gè)值N1表示數(shù)據(jù)當(dāng)前回放幀的位置,當(dāng)用戶開始回放操作時(shí),將第一幀數(shù)據(jù)發(fā)送給處理端,記錄當(dāng)前時(shí)間tr1,并將其設(shè)置為前一幀數(shù)據(jù)的回放時(shí)間;
3)判斷用戶是否選擇快進(jìn)/快退,若選擇了快進(jìn)/快退,則根據(jù)快進(jìn)/快進(jìn)的時(shí)間間隔?t和數(shù)據(jù)回放幀率f,更新數(shù)據(jù)回放幀的位置N1=N1±?t*f,將當(dāng)前回放位置處的數(shù)據(jù)幀發(fā)送給處理端,同時(shí)將前一幀數(shù)據(jù)回放時(shí)間點(diǎn)設(shè)置為當(dāng)前時(shí)間;
4)判斷用戶是否選擇暫停,若是,則執(zhí)行步驟3),否則執(zhí)行下一步;
5)根據(jù)用戶是否進(jìn)行加速或減速操作得到數(shù)據(jù)回放倍率X,同時(shí)獲取當(dāng)前時(shí)間tr2,計(jì)算得到tr2時(shí)刻回放數(shù)據(jù)幀的位置N2=N1+(tr2-tr1)*X*f。比較N2和N1+1,若如果N2 6)遍歷回放位置N1+1到回放位置N2間的數(shù)據(jù),判斷是否有特征點(diǎn)數(shù)據(jù),若回放位置N3∈[N1+1,N3]且位置N3處數(shù)據(jù)含有特征數(shù)據(jù),則更新當(dāng)前回放位置N1=N3;若回放位置N1+1到回放位置N2間的回放數(shù)據(jù)均不含特征點(diǎn)數(shù)據(jù),則更新當(dāng)前回放位置N1=N2并將該回放位置處的數(shù)據(jù)發(fā)送到處理端。 回放軟件中使用vieWTerra作為回放系統(tǒng)的三維渲染平臺,它是由一個(gè)逼真度非常高的地球?yàn)g覽器和一套直觀易用的編輯工具構(gòu)成,能夠提供從海底到外層空間范圍內(nèi)任意方向上的無縫導(dǎo)航[8~10]。通過訪問vieWTerra軟件開發(fā)庫,運(yùn)用VC++編程語言、OpenGL圖形應(yīng)用接口和Opencv2計(jì)算機(jī)圖形庫,對其進(jìn)行二次開發(fā),對航行體的航行場景進(jìn)行三維重現(xiàn)。為了實(shí)現(xiàn)三維場景回放,進(jìn)行了以下三方面的研究。 1)三維模型的建立 使用3DS MAX專業(yè)建模軟件,快速實(shí)現(xiàn)對水下航行體三維模型的建立。將3DS MAX繪制的模型導(dǎo)出為三維模型文件(*.3DS),該格式文件可供vieWTerra仿真軟件直接調(diào)用。3DS MAX繪制的三維模型中,所有模型都具有軸心和以軸心為原點(diǎn)的坐標(biāo)系統(tǒng),模型的軸心作為該模型旋轉(zhuǎn)變化的中心點(diǎn),按對應(yīng)的偏移量旋轉(zhuǎn)相應(yīng)的角度,實(shí)現(xiàn)姿態(tài)的變化。航行體在建立模型時(shí),主要分為殼體、軸和螺旋槳三個(gè)部分,分別建立三者的3DS模型,vieW?Terra加載這三個(gè)模型并將其組合為一個(gè)整體。數(shù)據(jù)回放時(shí),根據(jù)讀取的數(shù)據(jù)更新航行體的位置和姿態(tài),生成回放的3D動(dòng)畫。 2)水下場景模擬 vieWTerra提供的水下場景只能模擬水下20m左右深度的區(qū)域,而水下航行體的最大航行深度一般都超過這個(gè)數(shù)值。由于我們的關(guān)注點(diǎn)主要是航行體的航行情況,對水下環(huán)境仿真度要求不高,本文使用基于OpenGL的紋理映射模型,再結(jié)合vieWTerra平臺中提供的場景渲染功能,實(shí)現(xiàn)簡單水下環(huán)境模擬。選取一張大小不超過256*256的24位位圖的海面或湖面圖像作為水面紋理圖像,通過重復(fù)紋理映射模型建立四邊形平面和四邊形曲面,將平面作為海底,曲面作為海面,二者高度表示水下深度,通過設(shè)置它們間的背景和霧化效果來模擬水下環(huán)境。數(shù)據(jù)回放時(shí),程序根據(jù)回放時(shí)間控制海面在坐標(biāo)軸上的偏移量,形成海面水流波動(dòng)效果,配合水流等音效,為用戶提供更真實(shí)的回放體驗(yàn)。 重復(fù)紋理映射是指將紋理圖像重復(fù)映射到多邊形表面區(qū)域上,從而形成具有更多細(xì)節(jié)相似的紋理四邊形[11~12]。如圖2所示,設(shè)定水面紋理圖像左下角為坐標(biāo)原點(diǎn),對其像素進(jìn)行歸一化處理,形成1*1的小正方形。對于需要生成的四邊形平面,定義其左下角為坐標(biāo)原點(diǎn),右上角為坐標(biāo)為(m,n),則該四邊形由m*n個(gè)小正方形組成,再將歸一化的紋理圖像映射到每個(gè)小正方形中。 圖2 重復(fù)紋理映射示意圖 3)三維視點(diǎn)控制 在三維場景回放展示時(shí),可以通過改變不同的觀察位置和觀測點(diǎn)視角來向用戶展示相同時(shí)刻在不同位置和不同視角處觀測到的三維場景。當(dāng)有多個(gè)航行體在水下航行時(shí),系統(tǒng)需要根據(jù)它們間的位置關(guān)系選取最優(yōu)觀測位置和角度,以便在同一幀畫面中觀測到多個(gè)航行體及它們間的相對位置關(guān)系。 如圖3所示,在同一時(shí)刻有A、B兩個(gè)航行體,若觀測視點(diǎn)和視角選取不合理,則觀測不到航行體或出現(xiàn)遮擋。下面提供一種最優(yōu)視角和視點(diǎn)選取方法。 圖3 三維場景視點(diǎn)控制示意圖 首先,獲取航行體A的三個(gè)主要幾何點(diǎn)平面坐標(biāo):A0(xa0'ya0)、A1(xa1'ya1)、A2(xa2'ya2),其中A0為三維建模時(shí)A的幾何中心,A1、A2為軸兩端的頂點(diǎn),同理,得到航行體B的三個(gè)位置坐標(biāo)B0(xb0'yb0)、B1(xb1'yb1)、B2(xb2'yb2);然后,以A0為原點(diǎn)作到B0的直線連接線,并延長50m~200m左右的長度距離,找到視點(diǎn)1,這樣兩觀測對象均位于觀測視點(diǎn)的正方向;接下來進(jìn)行觀測視點(diǎn)的規(guī)避移動(dòng),建立以航行體A為圓心,視點(diǎn)與航行體B間距為半徑的圓形運(yùn)動(dòng)軌跡模型,利用圓形運(yùn)動(dòng)軌跡模型,均勻調(diào)整視點(diǎn)的位置使之移除盲區(qū)角度區(qū)間,將觀測視點(diǎn)由視點(diǎn)1轉(zhuǎn)移至視點(diǎn)2,達(dá)到規(guī)避操作的目的。為了便于計(jì)算,視點(diǎn)2選取A1、B2延長線上距B2距離為l的點(diǎn)P2,P2坐標(biāo)可由式(4)計(jì)算得到: 設(shè)觀測視角與正北方向的夾角為β,則 在完成數(shù)據(jù)回放分析工作后,用戶需要根據(jù)水下航行體任務(wù)執(zhí)行情況,編制任務(wù)分析總結(jié)報(bào)告。目前的任務(wù)總結(jié)報(bào)告由數(shù)據(jù)分析人員手動(dòng)編制,由于編制人員和報(bào)告風(fēng)格的不同,導(dǎo)致報(bào)告結(jié)果導(dǎo)向性存在差異。為了實(shí)現(xiàn)數(shù)據(jù)分析結(jié)果的自動(dòng)生成,需要對分析判據(jù)進(jìn)行量化,輸出結(jié)構(gòu)化的分析結(jié)果。 1)量化分析判據(jù):根據(jù)水下航行體的技術(shù)指標(biāo)以及航行任務(wù)書,提煉出分析判據(jù),再使用結(jié)構(gòu)化語言對分析判據(jù)進(jìn)行描述。本文將水下航行體任務(wù)執(zhí)行情況的分析判據(jù)分為三類:功能判據(jù)、邏輯判據(jù)及性能判據(jù)。其中,功能判據(jù)可描述為“完成某一功能”,即“航行體進(jìn)入工作狀態(tài)A”;邏輯判據(jù)可描述為“在收到外部消息q的情況下,進(jìn)入工作狀態(tài)B”;性能判據(jù)可描述為“在(t1,t2),航行體的性能指標(biāo)f∈(p1'p2)”,性能指標(biāo)包括航速、航向、航深以及聲學(xué)參數(shù)等。將提煉出的結(jié)構(gòu)化分析判據(jù)以xml文檔的格式進(jìn)行存儲(chǔ),在進(jìn)行任務(wù)分析時(shí),讀取xml中判據(jù),將其與實(shí)際航行數(shù)據(jù)對比,完成分析判據(jù)的判別工作。 2)輸出結(jié)構(gòu)化分析結(jié)果:針對不同型號的水下航行體及不同類別的航行任務(wù),與用戶進(jìn)行溝通,形成結(jié)構(gòu)化的分析報(bào)告。分析報(bào)告以Word模板格式保存,在模板中需要填寫信息的位置插入書簽,書簽用于定位程序所提取的數(shù)據(jù),在形成對應(yīng)文字、表格或圖形后輸出至Word模板文件中的位置[13]。 通過對航行數(shù)據(jù)可視化關(guān)鍵技術(shù)的研究,研發(fā)了針對某型號水下航行體的數(shù)據(jù)回放分析平臺,該平臺軟件基于OpenGL圖形平臺以及vieWTerra三維仿真平臺開發(fā)而成。 航行數(shù)據(jù)回放分析軟件首先對航行體記錄的航行數(shù)據(jù)進(jìn)行提取和解析,獲取聲學(xué)數(shù)據(jù)、姿態(tài)與位置數(shù)據(jù)、動(dòng)力學(xué)數(shù)據(jù)等,將其存入數(shù)據(jù)庫中,通過航行任務(wù)號、產(chǎn)品型號、航行時(shí)間對數(shù)據(jù)進(jìn)行管理。用戶需要了解航行情況時(shí),通過軟件界面讀取待回放數(shù)據(jù),數(shù)據(jù)讀取時(shí)對其進(jìn)行預(yù)處理操作,獲取數(shù)據(jù)時(shí)間戳并提取數(shù)據(jù)中的關(guān)鍵特征點(diǎn)數(shù)據(jù),對其進(jìn)行標(biāo)識,軟件可根據(jù)用戶操作實(shí)現(xiàn)航行數(shù)據(jù)的動(dòng)態(tài)回放、數(shù)據(jù)表格與曲線圖的自動(dòng)生成,并形成航行數(shù)據(jù)任務(wù)分析報(bào)告。軟件工作流程如圖4所示。 圖4 軟件工作流程流程圖 系統(tǒng)主要有項(xiàng)目管理、回放數(shù)據(jù)預(yù)處理、三維場景渲染、回放進(jìn)程控制、數(shù)據(jù)顯示、結(jié)果分析與輸出這六個(gè)模塊組成,其功能覆蓋了數(shù)據(jù)回放的全部內(nèi)容,主要包括回放數(shù)據(jù)的導(dǎo)入、數(shù)據(jù)預(yù)處理及數(shù)據(jù)特征值提取、航行體幾何模型的制作與驅(qū)動(dòng)、三維仿真場景與語音播報(bào)精確同步播放、航跡顯示、回放場景的播放控制等。圖5所示為使用航行數(shù)據(jù)可視化回放軟件對某航行器在一次水下執(zhí)行任務(wù)的全過程進(jìn)行數(shù)據(jù)回放,用戶通過該軟件直觀全面的了解該航行體在航行過程中的位置、姿態(tài)以及工作狀態(tài)等信息。 圖5 某水下航行體數(shù)據(jù)回放示意圖 本文提出了一種以三維場景為主,結(jié)合二維圖表、語音播報(bào)等多種形式的數(shù)據(jù)回放方法,通過標(biāo)注數(shù)據(jù)特征點(diǎn)的進(jìn)程回放控制方法實(shí)現(xiàn)了數(shù)據(jù)的三維動(dòng)態(tài)可視化回放;使用vieWTerra作為三維回放平臺,解決了三維建模中水下場景模擬、三維視點(diǎn)控制等問題,對水下航行體航行情況進(jìn)行了多方式、多角度的展示。本方法通過對分析判據(jù)進(jìn)行提煉和量化,按照結(jié)構(gòu)化的分析結(jié)果模板,實(shí)現(xiàn)了分析結(jié)果的自動(dòng)生成與輸出,為航行任務(wù)的執(zhí)行情況提供了科學(xué)有效的分析依據(jù),提高了水下航行體在水下執(zhí)行任務(wù)過程中航行數(shù)據(jù)的可維護(hù)性和追溯性。2.4 基于vieWTerra的三維場景建模
2.5 航行任務(wù)數(shù)據(jù)分析結(jié)果自動(dòng)生成
3 應(yīng)用實(shí)例
4 結(jié)語