賈 龍,張哲豪,石成虎,馬戰(zhàn)鵬,楊皓月,李思雯
(1.西安重裝智慧礦山工程技術(shù)有限公司,陜西 西安 710032;2.中國礦業(yè)大學(xué) 機(jī)電工程學(xué)院,江蘇 徐州 221116;3.蘇州優(yōu)米康通信技術(shù)有限公司,江蘇 蘇州 215104)
現(xiàn)代化綜采工作面是煤礦生產(chǎn)安全、高效、綠色生產(chǎn)的重要保障,采煤機(jī)是現(xiàn)代化綜采設(shè)備體系中重要的機(jī)電液一體化裝備之一,在煤礦井下“三機(jī)”協(xié)同開采中占重要地位,其自動化、智能化成套技術(shù)水平直接影響到整個綜采工作面安全生產(chǎn)和開采效率,而采煤機(jī)監(jiān)控系統(tǒng)是實現(xiàn)采煤機(jī)“精準(zhǔn)”“透明”開采的必要條件?,F(xiàn)階段,采煤機(jī)運(yùn)行狀態(tài)的監(jiān)控集中在溫度、電流、速度和姿態(tài)等傳感信息,通過二維面板進(jìn)行顯示,狀態(tài)數(shù)據(jù)信息表征直觀性較差。
隨著虛擬現(xiàn)實(Virtual Reality,VR[1-2])技術(shù)與煤礦智能化高效開采的逐漸融合,一定程度上提高了礦山生產(chǎn)效率和經(jīng)濟(jì)效益,但是此方向仍屬于起步階段,顯示出廣闊的應(yīng)用前景。將虛擬現(xiàn)實技術(shù)應(yīng)用于煤礦及采煤機(jī)監(jiān)控領(lǐng)域,對其進(jìn)行實時可靠、形象直觀、具有可交互性的遠(yuǎn)程監(jiān)測,可及時掌控煤礦及采煤機(jī)的準(zhǔn)確運(yùn)行狀態(tài)[3]。適時調(diào)整運(yùn)行參數(shù),必要時發(fā)揮人的能動性,進(jìn)行人工遠(yuǎn)程干預(yù),實現(xiàn)臨場式的遠(yuǎn)程控制與調(diào)度[4],對提高生產(chǎn)效率、消除事故隱患、減少工人數(shù)量和降低事故發(fā)生,有著極其重要的保障作用[5],是實現(xiàn)綜采智能化和安全高效生產(chǎn)的最有效手段。
現(xiàn)階段VR技術(shù)已被廣泛應(yīng)用于采煤機(jī)運(yùn)行狀態(tài)實時監(jiān)測,但采煤機(jī)運(yùn)行狀態(tài)是數(shù)據(jù)仍采用數(shù)據(jù)形式進(jìn)行獨立表征,未能實現(xiàn)將牽引、截割、姿態(tài)信息進(jìn)行融合,監(jiān)控信息的變化率與偏離信息與采煤機(jī)3D模型渲染處于分離狀態(tài),不能實現(xiàn)與虛擬現(xiàn)實模型進(jìn)行實時動態(tài)融合,未能充分發(fā)揮采煤機(jī)3D模型的綜合表現(xiàn)作用[6]。
針對以上問題,提出一種基于物理的實時渲染方法,基于采煤機(jī)負(fù)載電流、液力狀態(tài)和截割頂?shù)装迩€3個采煤機(jī)重點監(jiān)測數(shù)據(jù),提出了3種實時特效渲染技術(shù)?;诓擅簷C(jī)溫度傳感網(wǎng)絡(luò),提出了實時溫度數(shù)模融合渲染技術(shù);基于對采煤機(jī)搖臂殼體的有限元分析,生成預(yù)渲染載荷貼圖,借助采煤機(jī)搖臂傾角、運(yùn)行速度2個指標(biāo)生成實時載荷貼圖,提出了搖臂殼體截割負(fù)載數(shù)據(jù)融合渲染技術(shù),切實推動解決傳統(tǒng)采煤機(jī)VR系統(tǒng)存在問題,在較為精確地表達(dá)采煤機(jī)運(yùn)行狀態(tài)的同時,兼顧系統(tǒng)的實時性、真實感與沉浸感。
基于物理的渲染(Physically-Based Rendering,PBR[7-8])是由Disney提出、Epic改進(jìn)的一種計算機(jī)圖形渲染中使用的更加符合物理學(xué)規(guī)律的網(wǎng)格模型實時著色程序的集合。較傳統(tǒng)的Lambert光照模型和Blinn-Phong光照模型來說,PBR光照模型的渲染原理更加接近現(xiàn)實世界的物理原理。
基于物理的渲染光照模型理論包括微平面模型、能量守恒計算、菲涅爾反射、線性空間、色調(diào)映射和物質(zhì)光學(xué)特性[9-10],其實質(zhì)就是計算3D場景環(huán)境光照射到網(wǎng)格模型表面上一點P并將一部分光反射到場景攝像機(jī)中的過程,該過程可以使用渲染方程表示
(1)
式中,Lo(P,ωo)為點P在輸入光照Li(P,ωi)下反射到場景攝影機(jī)中的輻照度;Le(P,ωo)為點P自發(fā)光發(fā)出的光輻照度(默認(rèn)為0);ωi為光照方向L的立體角;ωo為觀察方向V立體角;fr(P,ωi,ωo)為光照散射函數(shù);n·ωi為P點法線方向向量和光照方向向量l的夾角θi,如圖1所示。Ω為點P法線方向的半球領(lǐng)域;dωi為光照方向立體角積分微元,如圖2所示。
圖1 點P光照渲染過程Fig.1 Point P lighting rendering process
圖2 半球領(lǐng)域Ω與立體角ωFig.2 Hemispherical field Ω and solid angle ω
根據(jù)PBR光照模型,文中使用的PBR材質(zhì)粗糙度/金屬度工作流紋理可分為8種類型,圖像格式有彩色圖像(RGB)格式和灰度格式(Grayscale),見表1。
表1 采煤機(jī)傳感數(shù)據(jù)監(jiān)測實驗操作流程時間
表1 PBR粗糙度/金屬度工作流材質(zhì)紋理
虛擬現(xiàn)實上位機(jī)使用的Unity引擎可編程渲染管線(High Definition Render Pipeline,HDRP)中的HDRP著色器采用上表8張紋理組成的4張貼圖用于著色器貼圖采樣器(Sampler)的采樣和PBR著色計算,貼圖采用Tegra高質(zhì)量圖像格式(*.tga)存儲,貼圖通道紋理定義和與著色器輸入端的關(guān)系,如圖3所示。
圖3 貼圖通道紋理定義和與著色器輸入端的關(guān)系Fig.3 Relationship between map channel texture definition and shader input
通道灰度顏色值為Roughness對應(yīng)顏色值的反相
CSmoothness=1-CRoughness
(2)
當(dāng)引擎渲染畫面時,通過HDRP可編程渲染管線和著色器輸入的各類材質(zhì)通道和場景光照信息,將模型頂點轉(zhuǎn)換到屏幕上,并基于上文研究的PBR光照模型進(jìn)行著色計算,即可獲得逼真的場景圖像。以下重點介紹Unity使用的HDRP可編程渲染管線流程及模型的頂點變換。
要通過特效表達(dá)采煤機(jī)的實時傳感數(shù)據(jù),必須先研究圖元數(shù)據(jù)頂點的空間變換過程。圖元數(shù)據(jù)頂點在渲染管線的著色程序中進(jìn)行了4次空間變換,圖元頂點空間變換流程如圖4所示。
圖4 圖元頂點空間變換流程Fig.4 Primitive vertices space transformation process
對于模型空間下一頂點P0(xo,yo,xo,1),從模型空間變換到世界空間的矩陣M和世界空間下的Pworld點坐標(biāo)可由(3)、(4)式求出
M=TRK
(3)
(4)
式中,T為平移矩陣;R為旋轉(zhuǎn)矩陣;K為縮放矩陣。順序為先縮放,再旋轉(zhuǎn),最后平移。
Pworld點從世界空間變換到觀察空間的矩陣V和觀察空間下的Pview點坐標(biāo)可由下式求出
(5)
(6)
式中,R-1為逆旋轉(zhuǎn)矩陣;T-1為逆平移矩陣。變換需要將頂點所在的模型逆向移動至觀察空間原點,最后將z分量取反(觀察空間是右手坐標(biāo)系)。
Pview點從觀察空間變換至剪裁空間點Pclip所使用的投影矩陣P可以通過下式計算
P=
(7)
(8)
式中,αFOV為攝影機(jī)視場角;δ為攝影機(jī)橫縱比;dFar和dNear為遠(yuǎn)近剪裁平面與攝像機(jī)鏡頭的水平距離。
得到剪裁空間點Pclip的坐標(biāo)后,進(jìn)行透視除法,將頂點Pclip轉(zhuǎn)換為歸一化設(shè)備坐標(biāo)系下的點PNDC,并將z分量寫入深度緩存。
(9)
式中,dDepth為深度緩存中該點的深度,dDepth?[0,1];且xNDC,yNDC?[-1,1]。
在Unity里,屏幕空間最左下角像素的像素坐標(biāo)為(0,0),最右上角像素的像素坐標(biāo)為(wscn,hscn),則點PNDC映射到屏幕空間的坐標(biāo)Pscn可通過下式計算
(10)
最后獲得點P0(xo,yo,zo,1)經(jīng)過一系列空間變換后在屏幕空間的坐標(biāo)Pscn(xscn,yscn)。
基于PBR光照模型與模型頂點坐標(biāo)變換的研究為基礎(chǔ),基于Unity HDRP可編程渲染管線選取采煤機(jī)3個重點監(jiān)測模擬量數(shù)據(jù),設(shè)計著色程序,實現(xiàn)基于采煤機(jī)實時傳感數(shù)據(jù)流數(shù)據(jù)的3D可視化效果。
電流是最基本的物理量之一,是采煤機(jī)監(jiān)測中最重要的物理量,能直觀反映負(fù)載和線路的工作狀態(tài)。本系統(tǒng)虛擬現(xiàn)實上位機(jī)負(fù)載電流渲染技術(shù)采用高階著色器語言(High Level Shading Language,下文簡稱HLSL)編寫HDRP渲染管線適用的負(fù)載電流渲染著色器。該著色程序?qū)崿F(xiàn)虛擬現(xiàn)實上位機(jī)對于采煤機(jī)三相進(jìn)線電流、泵電機(jī)電流、左右牽引電機(jī)電流、左右截割電流的實時3D數(shù)據(jù)可視化渲染,渲染流程和特效對象父子關(guān)系樹如圖5所示。
圖5 負(fù)載三相電流渲染流程和特效對象父子關(guān)系樹Fig.5 Load three-phase current rendering process and parent-child relationship tree of special effect objects
場景特效對象父子關(guān)系樹如圖5(g)所示。特效對象使用一個空對象進(jìn)行封裝,包含一個用于渲染特效的Quad網(wǎng)格和3個顯示電流百分比的Unity用戶界面TextMesh組件。
步驟一:渲染初始化階段。以C#腳本委托回調(diào)機(jī)制建立回調(diào)函數(shù),獲取采煤機(jī)實時傳感數(shù)據(jù)流(下稱數(shù)據(jù)流)中監(jiān)測負(fù)載三相電流的U、V和W相電流值,如圖5(a)所示;獲取固定值,包括三相額定電流、三相電流相位差和三相電流特效顏色,如圖5(b)所示。
步驟二:C#腳本數(shù)據(jù)處理階段。為了使著色器能夠同時用于采煤機(jī)不同機(jī)構(gòu)電流的可視化渲染,對三相電流各相電流數(shù)據(jù)以式(11)進(jìn)行絕對值和歸一化計算
(11)
式中,ix為歸一化的某相電流值,可表示iu、iv或iw;Ix為數(shù)據(jù)流中獲取的某相電流值,可表示Iu、Iv或Iw;Ie為該三相電流額定值,為了保證在采煤機(jī)啟動的瞬時三相電流為額定電流150%左右時特效可以正常渲染,故式中乘以系數(shù)2/3。計算完成后保存在三維數(shù)組(Vector 3)中。采用分辨率為1 024×1 024的二維紋理(Texture 2D)格式存儲C#腳本預(yù)生成的三角函數(shù)灰度二值化程序紋理。然后更新每相電流對應(yīng)的TextMesh組件,并將三維數(shù)組、三相電流特效顏色、三相電流相位差和三角函數(shù)灰度程序紋理輸入HLSL著色器程序中,如圖5(c)所示。
步驟三:頂點著色器中的紋理坐標(biāo)重映射,如圖5(d)所示。為了表示UVW相電流的相位差和電流大小,對灰度程序紋理的采樣UV坐標(biāo)進(jìn)行重映射計算。對采樣坐標(biāo)U分量的偏移以V相電流采樣坐標(biāo)U分量值ucur-v為基準(zhǔn),則U相采樣坐標(biāo)ucurr-u和W相采樣坐標(biāo)ucurr-w可由下式計算
(12)
(13)
式中,φuv為三相電流U相和V相的相位差,φuv=2π/3;φvw為三相電流V相和W相的相位差,φvw=2π/3。三相電流采樣坐標(biāo)V分量與歸一化電流值成比例,且V分量的大小被限制在閉區(qū)間[0,1]中,由HLSL函數(shù)Clamp(x,min,max)實現(xiàn)
(14)
式中,vx為三相電流的采樣坐標(biāo)V分量,可表示vu,vv或vw。
步驟四:基于HLSL時間內(nèi)置變量的紋理動畫,如圖5(d)所示。通過HLSL時間內(nèi)置變量動態(tài)改變3個電流分量采樣坐標(biāo)U分量,實現(xiàn)紋理從左往右勻速運(yùn)動,動態(tài)渲染電流的波動情況:采樣坐標(biāo)U分量可由以下公式計算
ux-anim=ux+kspeedtHLSL
(15)
式中,ux-anim為帶紋理動畫的三相電流的采樣坐標(biāo)U分量,可表示uu-amin,uv-anim和uw-anim;tHLSL為HLSL時間內(nèi)置變量。然后使用2D紋理貼圖采樣器對3個電流分量的UV坐標(biāo)進(jìn)行采樣,采樣函數(shù)為tex2D(ux-anim,vx)。
步驟五:片元著色器中的顏色疊加,如圖5(e)所示。將輸入著色器程序的三相電流特效顏色分別和3個電流分量采樣后的2D紋理圖像進(jìn)行逐像素顏色相乘,將顏色進(jìn)行疊加。
步驟六:通道混合,如圖5(e)所示。以電流U分量經(jīng)過UV采樣后的灰度圖片為遮罩紋理(Mask Map),將電流U分量和V分量的彩色紋理圖像進(jìn)行疊加,再以電流V分量經(jīng)過UV采樣后的灰度圖片為遮罩,疊加電流W分量的彩色圖像。對于2D紋理每個像素來說,疊加后紋理像素顏色Plerp由被疊加紋理和疊加紋理同位置像素顏色Pt1和Pt2以及遮罩紋理同位置像素顏色Pmask決定,逐像素的疊加計算模型和疊加效果如式(16)和圖6右側(cè)所示;2D灰度紋理遮罩則由3個電流分量的灰度圖逐像素取最大值合成,如圖6左側(cè)所示。
圖6 疊加后的2D紋理遮罩和圖片F(xiàn)ig.6 2D texture mask and image after overlaying
(16)
步驟七:采用HDRP著色器對其進(jìn)行渲染,以上步驟中計算的動態(tài)紋理、自定默認(rèn)參數(shù)與PBR材質(zhì)通道定義的關(guān)系如圖7所示。
圖7 紋理與PBR材質(zhì)通道定義關(guān)系Fig.7 Relationship between 2D texture and PBR material channel definition
加載電流渲染特效可根據(jù)腳本實時輸入的三相電流和額定電流進(jìn)行電流特效2D圖像紋理的參數(shù)化動態(tài)渲染,效果如圖8所示。
圖8 負(fù)載電流特效2D圖像紋理的參數(shù)化動態(tài)渲染Fig.8 Parametric dynamic rendering of load current special effect 2D image texture
通過以上步驟,將采煤機(jī)實時傳感數(shù)據(jù)流中各部負(fù)載三相電流特效在Unity場景特效對象中的Quad網(wǎng)格上進(jìn)行實時動態(tài)渲染,并通過濾鏡(Volume)進(jìn)行屏幕圖像后處理增強(qiáng)自發(fā)光效果,如圖9所示。
圖9 負(fù)載三相電流特效在Unity場景中的實時渲染Fig.9 Real time rendering of load three-phase current special effect in Unity scene
采煤機(jī)的液力狀態(tài)指其液壓和冷卻系統(tǒng)管網(wǎng)的壓力和流量,是重要的監(jiān)測模擬量,反映了采煤機(jī)液壓和冷卻系統(tǒng)管網(wǎng)的壓力傳遞和流量分配情況[13]。本系統(tǒng)虛擬現(xiàn)實上位機(jī)使用節(jié)點化的Unity Shadergraph著色器編輯器編寫適用于HDRP渲染管線的Lit Graph著色程序,基于采煤機(jī)實時傳感數(shù)據(jù)流,實現(xiàn)采煤機(jī)各部液力狀態(tài)3D特效的動態(tài)渲染。渲染流程和場景特效對象父子關(guān)系樹如圖10和圖11所示。
圖10 液力狀態(tài)實時渲染流程Fig.10 Process of hydaulic state real-time rendering
圖11 液力狀態(tài)特效對象父子關(guān)系樹Fig.11 Parent-child relationship tree of hydraulic state effect objects
液力狀態(tài)渲染特效對象使用一個空對象進(jìn)行封裝,包含一個用于渲染特效的Quad網(wǎng)格、2個顯示流量以及壓力百分比的Unity用戶界面TextMesh組件。
步驟一:渲染初始化階段。將特效渲染使用的Quad網(wǎng)格信息輸入頂點著色器,如圖10(a)所示。其余2個輸入對象與負(fù)載電流渲染技術(shù)中步驟一類似,獲取采煤機(jī)數(shù)據(jù)流中監(jiān)測液力狀態(tài)傳感器的壓力和流量值,如圖10(b)所示;獲取傳感器額定壓力、額定流量和壓力流量特效顏色,如圖10(c)所示。
步驟二:C#腳本數(shù)據(jù)處理階段。與負(fù)載電流渲染技術(shù)中步驟二類似,根據(jù)額定壓力和額定流量值,將實時壓力和流量值進(jìn)行絕對值和歸一化計算,并通過C#腳本獲取攝影機(jī)的視場角、遠(yuǎn)近剪裁平面和畫面橫縱比輸入頂點著色器用于計算空間變換矩陣;最后更新場景特效對象TextMesh組件,如圖10(c)所示。
步驟三:網(wǎng)格的空間變換與重建。該過程在頂點著色器中完成,使Quad網(wǎng)格三角面法線方向一直與攝影機(jī)觀察方向重合。對于Quad網(wǎng)格的某個頂點P0來說,首先通過式(17)計算模型空間下原點O0(0,0,0)到點P0(x0,y0,z0)的方向向量O0P0,并將模型原點O0通過式(19)的MV變換轉(zhuǎn)換至觀察空間得到點O1(x1,y1,z1),然后通過式(19)在觀察空間計算P0在觀察空間下相對于O1的點P1(x2,y2,z2),從而在觀察空間重建網(wǎng)格,最后將網(wǎng)格點P1通過式(20)的MV逆變換轉(zhuǎn)換到模型空間下的點P3(x3,y3,z3),如圖10(e)所示。
(17)
(18)
(19)
(20)
式中,M為模型矩陣;V為觀察矩陣。
步驟四:基于噪聲和程序紋理的特效合成階段,在片元著色器中進(jìn)行計算,如圖10(f)所示。壓力特效的實時渲染2D紋理貼圖采用壓力水球的形式表現(xiàn),通過對白噪聲和UV查找紋理的直角坐標(biāo)形式進(jìn)行縮放、采樣和疊加而成。圖像白噪聲生成算法以式(21)為基礎(chǔ),逐像素掃描并生成隨機(jī)數(shù)γ,且γ?[0,1];UV查找紋理是以遍歷UV坐標(biāo)值為基礎(chǔ)生成的雙通道圖像(RG圖像),便于2D紋理采樣器快速查找對應(yīng)的UV坐標(biāo)值,其R通道代表u分量的取值,G通道代表v分量的取值,如圖12所示。
(21)
圖12 UV坐標(biāo)查找紋理(直角坐標(biāo))Fig.12 UV coordinate searching texture(rectangular coordinate)
通過C#腳本輸入的歸一化壓力值,經(jīng)過重映射(Remap)與二值化(Step)處理得到形似波動水面的分界閾值圖。通過系統(tǒng)時間內(nèi)置變量控制2D紋理采樣器采樣UV坐標(biāo)形成紋理動畫,最后通過顏色疊加形成動態(tài)渲染的壓力水球效果2D紋理和對應(yīng)的灰度遮罩紋理。
流量實時渲染特效則以環(huán)形加載特效的形式表達(dá),與壓力的實時渲染特效紋理類似,UV查找圖采用極坐標(biāo)的形式,如圖13所示。
圖13 UV坐標(biāo)查找紋理(極坐標(biāo))Fig.13 UV coordinate searching texture(polar coordinate)
將歸一化流量值根據(jù)區(qū)間[0,1]上下界重映射到旋轉(zhuǎn)區(qū)間[0,360]中,并使用系統(tǒng)時間內(nèi)置變量增添紋理動畫。
步驟五:顏色疊加和通道混合,以壓力水球2D紋理和流量環(huán)形加載特效灰度遮罩紋理為基礎(chǔ),疊加流量環(huán)形加載2D紋理作為液力狀態(tài)特效自發(fā)光輸入紋理,如圖14(a)所示;逐像素遍歷壓力水球遮罩紋理和流量環(huán)遮罩紋理,取二者最大值重新組成液力狀態(tài)特效遮罩紋理,如圖14(b)所示。
圖14 液力狀態(tài)特效2D紋理和遮罩紋理的疊加Fig.14 Overlaying of 2D texture of hydraulic state effect and mask texture
步驟六:HDRP著色器其他渲染流程,如圖10(g)所示。
液力狀態(tài)渲染3D特效可根據(jù)腳本實時輸入的歸一化壓力和流量,進(jìn)行電流特效2D圖像紋理的參數(shù)化動態(tài)渲染,所有顏色可通過用戶自定義,效果如圖15所示。
圖15 液力狀態(tài)特效2D圖像紋理的參數(shù)化動態(tài)渲染Fig.15 Parametric dynamic rendering of 2D image texture of hydraulic state effect
圖15中QN為歸一化流量值,PN為歸一化壓力值,且QN,PN?[0,1]。
通過以上步驟,將采煤機(jī)實時傳感數(shù)據(jù)流中各部液力狀態(tài)特效在Unity場景特效對象中的Quad網(wǎng)格上進(jìn)行實時動態(tài)渲染,并通過濾鏡進(jìn)行屏幕圖像后處理增強(qiáng)自發(fā)光效果,如圖16所示。
圖16 液力狀態(tài)特效在Unity場景中的實時渲染Fig.16 Real time rendering of hydraulic state effect in Unity
采煤機(jī)長時間連續(xù)運(yùn)行割煤的過程中,基于示教數(shù)據(jù)準(zhǔn)確地截割綜采工作面頂?shù)装甯叨仁蔷C采工作安全高效的重要保證[14]。采煤機(jī)截割頂?shù)装迩€動態(tài)渲染技術(shù)可形象地表達(dá)出采煤機(jī)一刀截割過程中截割的頂?shù)装迩€的形態(tài),便于其遠(yuǎn)程監(jiān)控,對采煤機(jī)自動截割技術(shù)、頂?shù)装迩€修正和優(yōu)化技術(shù)等綜采關(guān)鍵技術(shù)的運(yùn)用起到一定的推動作用。
頂?shù)装迩€動態(tài)渲染流程基于采煤機(jī)實時傳感數(shù)據(jù)流中搖臂傾角傳感器數(shù)據(jù)、機(jī)身傾角傳感器數(shù)據(jù)、軸編碼器數(shù)據(jù)和系統(tǒng)配置文件中的采煤機(jī)尺寸數(shù)據(jù)進(jìn)行實時解算,并基于虛擬現(xiàn)實上位機(jī)系統(tǒng)Unity界面畫布組件動態(tài)繪制,詳細(xì)流程如圖17所示。
圖17 采煤機(jī)頂?shù)装褰馗钋€動態(tài)渲染流程Fig.17 Dynamic rendering process of cutting curve of roof and floor of shearer
步驟一:C#腳本數(shù)據(jù)處理階段。虛擬現(xiàn)實上位機(jī)在接收到采煤機(jī)實時傳感數(shù)據(jù)流后,激活C#事件委托機(jī)制,運(yùn)行回調(diào)方法,通過序列化提取搖臂傾角傳感器、機(jī)身傾角傳感器和軸編碼器傳感量。
步驟二:頂?shù)装甯叨葦?shù)據(jù)解算階段。通過左右搖臂傾角傳感器數(shù)據(jù)和機(jī)身傾角傳感器數(shù)據(jù)解算采煤機(jī)截割最高點與最低點高度;通過軸編碼器數(shù)據(jù)解算采煤機(jī)截割最高點與最低點的位置。
步驟三:向量封裝與插入。由于姿態(tài)解算使用的坐標(biāo)系與Unity坐標(biāo)系不同,如圖17所示,故分別將截割最高點的位置和高度、截割最低點的位置和高度封裝進(jìn)Unity Vector3向量的第一、第二分量,第三分量使用采煤機(jī)模型左右滾筒中心在場景中的位置z分量填補(bǔ),最后將封裝的數(shù)據(jù)分別插入頂板與底板向量有序數(shù)組的末位。如圖17(a)所示。
以下所述步驟進(jìn)入截割曲線動態(tài)生成階段,如圖17(b)所示。該階段由C#協(xié)同程序(Coroutine)驅(qū)動的迭代器(Enumerator)和Unity消息方法LateUpdate()實時更新,與上一階段接收與解算點向量的時間間隔無關(guān)。
步驟四:頂?shù)装妩c向量組的異步遍歷。由于機(jī)械化綜采工作面采煤機(jī)截割一刀的過程為40 min左右,在此過程中,虛擬現(xiàn)實系統(tǒng)每隔1 s就需要接收并處理一次數(shù)據(jù)流,頂?shù)装妩c向量組數(shù)據(jù)量可達(dá)9 600個,而系統(tǒng)每一次曲線繪制的時間間隔在1.60 s左右,數(shù)據(jù)處理量較大。為了防止畫面卡頓,繪圖前的點向量組遍歷過程采用工廠設(shè)計模式,以線程池異步委托的形式遍歷和處理點向量組,以保證主線程對系統(tǒng)畫面的渲染流暢度。
步驟五:攝影機(jī)參數(shù)的獲取與點向量的空間轉(zhuǎn)換。首先使用C#腳本獲取用戶控制的場景攝影機(jī)視場角、橫縱比和遠(yuǎn)近剪裁平面參數(shù),便于計算空間變換矩陣;然后通過線程計算,將點向量坐標(biāo)從世界空間變換到窗口坐標(biāo)系中,保存在窗口坐標(biāo)系下向量點的二維向量組List
步驟六:n次Bézier曲線插值計算。為了防止渲染曲線過度遮擋場景界面,頂?shù)装迩€采用基于Unity Sprite對象預(yù)制體組成的點畫虛線在系統(tǒng)用戶界面畫布組件進(jìn)行實時繪制與渲染,需要將向量組中離散的點坐標(biāo)進(jìn)行連續(xù)化插值,然后按照對象大小和對象間隔距離重定義每一個Sprite對象的實際窗口坐標(biāo),如圖18所示。故采用n次Bézier曲線進(jìn)行插值計算,見式(22)和式(23)。
(22)
圖18 姿態(tài)解算坐標(biāo)系與Unity坐標(biāo)系Fig.18 Attitude solution coordinate system and coordinate system in Unity
圖20 截割頂?shù)装迩€的實時渲染Fig.20 Real time rendering of cutting roof and floor curves
(23)
式(22)將欲求插值點窗口坐標(biāo)的x分量進(jìn)行歸一化計算得到參數(shù)t,xmax為插值曲線輸入頂點橫坐標(biāo)最大值,即采煤機(jī)截割最高點或最低點橫坐標(biāo);式(23)根據(jù)歸一化橫坐標(biāo)值t和曲線在窗口坐標(biāo)系下的n個離散點P0,P1,…,Pn,遞歸地進(jìn)行Bézier插值計算,最后求得插值點窗口坐標(biāo)(x,B(t))。
步驟七:曲線繪制與渲染階段。曲線基于Unity畫布組件繪制,渲染時關(guān)閉深度寫入(Z-Write)并取消陰影計算,便于渲染管線對于曲線上所有的Sprite對象預(yù)制體進(jìn)行動態(tài)合并批處理(Dynamic Batch)。頂?shù)装迩€渲染順序位于Overlay渲染隊列首位,位于場景半透明網(wǎng)格模型渲染隊列Transparent之后,如圖19所示。故曲線的生成與更新采用Unity UI更新消息方法LateUpdate()在場景更新完成后進(jìn)行曲線更新,最后由HDRP渲染管線創(chuàng)建渲染隊列按順序渲染屏幕所有對象。
圖19 渲染順序與渲染隊列Fig.19 Unity rendering order and rendering queue
為了驗證所提出采煤機(jī)狀態(tài)數(shù)據(jù)實時特效渲染方法的有效性,文中搭建采煤機(jī)虛擬現(xiàn)實監(jiān)測系統(tǒng)平臺,對采煤機(jī)虛擬現(xiàn)實表達(dá)渲染技術(shù)方法的監(jiān)控與優(yōu)化效果進(jìn)行驗證,實驗平臺硬件結(jié)構(gòu)圖如圖21所示。
圖21 實驗平臺硬件結(jié)構(gòu)Fig.21 Hardware structure of experimental platform
實驗平臺的數(shù)據(jù)傳輸原理基于CAN總線及以太局域網(wǎng),通過操作遙控操作站,控制采煤機(jī)運(yùn)行,并基于采煤機(jī)物理傳感體系,采集傳感數(shù)據(jù)和機(jī)載PLC發(fā)送的CAN幀,在CAN-HUB進(jìn)行數(shù)據(jù)集成,使用CAN-NET轉(zhuǎn)換為有線以太網(wǎng)發(fā)送至交換機(jī)和路由器,通過路由器轉(zhuǎn)換為無線局域網(wǎng)信號,將原始數(shù)據(jù)發(fā)送至采煤機(jī)工控機(jī)顯示界面?zhèn)鞲袛?shù)據(jù)處理計算機(jī),進(jìn)行數(shù)據(jù)實時處理,并經(jīng)由數(shù)據(jù)庫服務(wù)器實時保存,最后驅(qū)動采煤機(jī)虛擬現(xiàn)實上位機(jī)對采煤機(jī)工況進(jìn)行動態(tài)渲染表達(dá)。
由于虛擬現(xiàn)實上位機(jī)監(jiān)控數(shù)據(jù)達(dá)46個,文中僅展示部分關(guān)鍵監(jiān)控數(shù)據(jù)與其可視化效果。實驗通過模擬采煤機(jī)換向操作,記錄并對比采煤機(jī)工控機(jī)記錄數(shù)據(jù)與采煤機(jī)虛擬現(xiàn)實上位機(jī)接收和展示的數(shù)據(jù),對虛擬現(xiàn)實表達(dá)渲染技術(shù)方法進(jìn)行實驗。設(shè)計實驗時長100 s,實驗流程見表1。文中展示實驗過程中采煤機(jī)模型機(jī)左牽引電流(圖22)、機(jī)身溫度(圖23)、冷卻水總流量(圖24)及調(diào)高液壓系統(tǒng)總壓力(圖25)曲線圖,并將工控機(jī)數(shù)據(jù)與虛擬現(xiàn)實上位機(jī)數(shù)據(jù)進(jìn)行對比。
圖22 采煤機(jī)模型機(jī)左牽引電流曲線Fig.22 Left traction current curve of model shearer
圖23 采煤機(jī)模型機(jī)機(jī)身溫度曲線Fig.23 Temperature curve of model shearer
圖24 采煤機(jī)模型機(jī)冷卻水總流量曲線Fig.24 Total flow curve of model shearer cooling water
圖25 采煤機(jī)模型機(jī)調(diào)高液壓系統(tǒng)壓力曲線Fig.25 Pressure curve of height regulating hydraulic system of model shearer
采用皮爾遜相關(guān)系數(shù)[15]對文中所提出的負(fù)載電流渲染技術(shù)、液力狀態(tài)渲染技術(shù)的數(shù)據(jù)表征準(zhǔn)確性進(jìn)行評估。通過求解采煤機(jī)工控機(jī)記錄數(shù)據(jù)所擬合的曲線與采煤機(jī)虛擬現(xiàn)實上位機(jī)展示數(shù)據(jù)擬合曲線之間的皮爾遜相關(guān)系數(shù)可得以下幾點:①采煤機(jī)模型機(jī)左牽引三相電流的平均皮爾遜相關(guān)系數(shù)約為0.764 5;②采煤機(jī)模型機(jī)機(jī)身溫度的皮爾遜相關(guān)系數(shù)約為0.942 4;③采煤機(jī)模型機(jī)冷卻水總流量的皮爾遜相關(guān)系數(shù)約為0.951 0;④采煤機(jī)模型機(jī)調(diào)高液壓系統(tǒng)壓力的皮爾遜相關(guān)系數(shù)約為0.946 7。綜上,平均皮爾遜相關(guān)系數(shù)約為0.901 6,處于0.8至1.0區(qū)間,屬于極強(qiáng)相關(guān),因此,文中所提出的采煤機(jī)負(fù)載電流和液力狀態(tài)渲染系統(tǒng)可以實現(xiàn)采煤機(jī)傳感數(shù)據(jù)的準(zhǔn)確跟蹤與實時表征。
由于頂?shù)装迩€動態(tài)渲染流程基于采煤機(jī)實時傳感數(shù)據(jù)流中位置與姿態(tài)信息,因此,采用虛擬現(xiàn)實上位機(jī)中的搖臂傾角、采煤機(jī)位移數(shù)據(jù)與相應(yīng)的工控機(jī)數(shù)據(jù)進(jìn)行比較評價,比較結(jié)果如圖26所示。
圖26 采煤機(jī)位姿評價Fig.26 Evaluation for shearer position and attitude
如圖26所示,虛擬現(xiàn)實上位機(jī)數(shù)據(jù)曲線對于采煤機(jī)搖臂傾角和位移兩關(guān)鍵采煤機(jī)位姿數(shù)據(jù)曲線均表現(xiàn)為較高的重合度。經(jīng)計算,虛擬現(xiàn)實上位機(jī)對于采煤機(jī)搖臂傾角和位移表征的平均誤差分別為0.817 4°和0.016 42 m,可實現(xiàn)采煤機(jī)位姿數(shù)據(jù)的有效表征,滿足實際需求。
在實驗過程中,采煤機(jī)虛擬現(xiàn)實上位機(jī)VR場景的實時渲染表達(dá)基于圖26實驗數(shù)據(jù)動態(tài)更新,實現(xiàn)對采煤機(jī)模型機(jī)的實時監(jiān)控,如圖27所示。
圖27 上位機(jī)VR場景數(shù)據(jù)可視化3D特效Fig.27 Visualized 3D effects of host computer VR scene data
由以上實驗圖表可得,采煤機(jī)虛擬現(xiàn)實表達(dá)渲染技術(shù)可以較為準(zhǔn)確地完成采煤機(jī)在虛擬空間的映射,通過以太局域網(wǎng)真實傳感數(shù)據(jù)驅(qū)動的場景實時特效渲染場景工作穩(wěn)定,增強(qiáng)了監(jiān)控系統(tǒng)的真實感與沉浸感。
(1)實現(xiàn)采煤機(jī)準(zhǔn)確、直觀的監(jiān)控是提升采煤機(jī)“精準(zhǔn)”“透明”開采的重要條件。針對主流采煤機(jī)虛擬現(xiàn)實場景顯示數(shù)據(jù)與模型分離、直觀性差的問題,結(jié)合虛擬現(xiàn)實前沿技術(shù)和平臺,基于采煤機(jī)負(fù)載電流、液力狀態(tài)和截割頂?shù)装迩€3個采煤機(jī)重點監(jiān)測數(shù)據(jù),基于PBR光照模型和模型頂點坐標(biāo)變換,依據(jù)HDRP渲染管線流程提出相應(yīng)的實時特效渲染技術(shù)。
(2)采煤機(jī)狀態(tài)數(shù)據(jù)實時特效渲染技術(shù)較為準(zhǔn)確地表達(dá)采煤機(jī)姿態(tài),且增強(qiáng)了真實感與沉浸感,在一定程度上克服了傳統(tǒng)采煤機(jī)虛擬現(xiàn)實系統(tǒng)數(shù)據(jù)與模型分離的問題,也為新一代綜采工作面虛擬現(xiàn)實監(jiān)控系統(tǒng)的研究提供了思路。
(3)后續(xù)工作將繼續(xù)對采煤機(jī)虛擬現(xiàn)實系統(tǒng)進(jìn)行研究,建立采煤機(jī)結(jié)構(gòu)參數(shù)映射機(jī)制,構(gòu)建可以適應(yīng)不同機(jī)型采煤機(jī)的虛擬現(xiàn)實系統(tǒng),最終構(gòu)建一套完整的基于數(shù)據(jù)驅(qū)動的控制與傳感集成的采煤機(jī)虛擬現(xiàn)實監(jiān)控平臺。