方 遜 李紅祥 李 昊
(1.武漢理工大學航運學院,湖北武漢 430063;2.武漢船舶職業(yè)技術學院,湖北武漢 430050)
虛擬現(xiàn)實建模語言(Virtual Reality Modeling Language,VRML)是第二代WWW 的標準語言,用來在網(wǎng)絡上創(chuàng)建逼真的三維虛擬場景,實現(xiàn)了3D的動畫效果,改變了當前網(wǎng)絡與用戶交互的局限性,使得人機交互更加方便、靈活,使虛擬世界的真實性、交互性和動態(tài)性得到了充分的體現(xiàn)[1]。VRML還提供了一個Script腳本節(jié)點,通過該節(jié)點可以實現(xiàn)復雜交互和邏輯控制等功能[1~2]。
陀螺羅經(jīng)在提供船舶航向中占非常重要的地位,其結構復雜,傳統(tǒng)教學只是停留在對平面圖形的演示和說明,這成為了航海專業(yè)的學生學習陀螺羅經(jīng)的瓶頸。本文以阿瑪-勃朗MK10型陀螺羅經(jīng)為例,利用VRML的各種造型節(jié)點進行陀螺羅經(jīng)主要部分三維結構的仿真,使用VRMLScript語言實現(xiàn)了靈敏部分、隨動部分和主軸指北過程的交互式仿真。
靈敏部分由陀螺球、浮動平衡環(huán)和金屬扭絲等組成。靈敏部分的仿真可以使學習者更易于了解陀螺儀的3自由度結構及電磁控制力矩的產(chǎn)生方法。
陀螺馬達高速旋轉的自轉軸是陀螺球的主軸,在水平方向上與主軸相垂直的水平扭絲是陀螺球的水平軸,在垂直方向上與主軸相垂直的垂直扭絲是陀螺球的垂直軸,三軸相交于陀螺球的中心[3]。由于陀螺球、浮動平衡環(huán)和水平垂直扭絲均為對稱平衡,并且靈敏部分的重心與陀螺球的中心相重合,因此靈敏部分是一個3自由度的平衡陀螺儀。結合VRML語言的特點,設計了靈敏部分仿真結構示意圖,如圖1所示。
圖1 靈敏部分結構圖
基于該結構圖編寫相應的程序代碼,實現(xiàn)的三維結構仿真圖如圖2所示。在程序中,調(diào)整陀螺球材質(zhì)的透明度域值,可以使陀螺球實物中不可見的陀螺轉子被清晰地看到[4]。
圖2 靈敏部分仿真圖
通過鼠標或者按鈕控制實現(xiàn)陀螺球繞水平軸作俯仰運動、水平扭絲受扭、產(chǎn)生作用于陀螺球水平軸的電磁控制力矩的交互過程,以及陀螺球繞垂直軸做方位運動、垂直扭絲受扭、產(chǎn)生作用在陀螺球垂直軸上的電磁阻尼力矩的交互過程。學習者既可以了解陀螺球的3自由度結構,又可以理解阿瑪-勃朗陀螺羅經(jīng)兩個力矩產(chǎn)生的方法。
利用圖1中的圓柱傳感器CylinderSensor1和CylinderSensor2,便可以實現(xiàn)以鼠標控制陀螺球作俯仰和方位運動的效果。通過語句
ROUTE stents.rotation_changed TO Pitching.rotation
實現(xiàn)用鼠標驅動扭絲支架使陀螺球作俯仰運動
ROUTE floating.rotation_changed TO Azimuth.rotation
可實現(xiàn)用鼠標驅動浮動平衡環(huán)使陀螺球作方位運動,再加上陀螺轉子的自轉運動就實現(xiàn)了陀螺球的3自由度交互式仿真。
陀螺球作俯仰運動和方位運動的同時,金屬扭絲受扭產(chǎn)生力矩,通過水平扭絲和垂直扭絲顏色的變化來仿真該過程。在Script節(jié)點中應用函數(shù)
將陀螺球轉動的角度值v轉化為扭絲的顏色值col_wires,通過語句
ROUTE Azimuth.rotation_changed TO scrip.ro_gyro
將陀螺球作方位運動時的角度值傳遞給函數(shù)ro_gyro(v),可以獲得轉換后的顏色值,利用語句
ROUTE scrip.col_wires TO ap_wires.set_emissiveColor
將獲得的顏色值傳遞給垂直扭絲,從而產(chǎn)生了垂直扭絲顏色隨著陀螺球方位轉動角度的變化而變化的效果,亦即實現(xiàn)了垂直力矩產(chǎn)生過程的仿真。
隨動部分中,由貯液缸、傾斜平衡環(huán)、傾斜齒輪、傾斜隨動電機組成傾斜隨動系統(tǒng);由方位平衡環(huán)、方位齒輪、方位隨動電機和方位刻度盤組成方位隨動系統(tǒng),可以實現(xiàn)貯液缸在高度和方位上跟隨陀螺球運動,亦即貯液缸模擬陀螺球運動。隨動部分的仿真能使學習者對陀螺羅經(jīng)隨動系統(tǒng)的概念有一個清晰的理解。
隨動部分中,貯液缸的南北兩端通過軸承支承在水平放置的傾斜平衡環(huán)內(nèi),傾斜平衡環(huán)通過軸承支承在方位平衡環(huán)內(nèi),形成貯液缸的東西水平軸。傾斜電機旋轉時傾斜平衡環(huán)連同貯液缸一起可繞此東西水平軸作俯仰運動;方位平衡環(huán)通過垂直樞軸支承在固定部分的驅動平板上,形成貯液缸的垂直軸,方位電機旋轉時方位平衡環(huán)可以帶動傾斜平衡環(huán)及貯液缸一起繞此垂直軸作方位運動。使用VRML語言可以設計隨動部分仿真結構示意圖,如圖3所示。
傾斜平衡環(huán)、方位平衡環(huán)和刻度盤等環(huán)型體的設計都通過擠出面(Extrusion)節(jié)點來實現(xiàn),其中crossSection域確定了環(huán)的截面,spine域是一個圓形的擠壓脊線,將截面沿圓形擠壓脊線運動從而形成一個環(huán)。以刻度盤為例,
crossSection[20,00,00.5,0.750.5,0.751,11,10.5,20.5,20,]表示刻度盤的截面形狀;
spine[600,
5.9963486666962 7.2092908679563410,
5.9853991108633 6.4183270056739030,
5.9671646593272 4.6268539929489080,
……]表示擠壓脊線,該擠壓脊線是由360個坐標點構成的一個圓。
圖3 隨動部分結構圖
刻度盤的刻度線由索引線集(IndexdLine-Set)節(jié)點實現(xiàn),通過計算出刻度線兩端點的坐標值,并將其放入索引線集節(jié)點的Point域,就可以做出相應的刻度線。
齒輪的設計由圓柱體(Cylinder)節(jié)點實現(xiàn),通過設置不同的scale域值就可設計出不同形狀的齒[5]。最終形成的隨動部分仿真效果圖如圖4所示。
圖4 隨動部分仿真圖
在傾斜隨動系統(tǒng)中,傾斜電機轉動時,通過齒輪傳動裝置和傾斜扇形齒輪,帶動傾斜平衡環(huán)與貯液缸一起繞東西水平軸作傾斜轉動。具體實現(xiàn)方法是:在script節(jié)點中利用函數(shù)[6]
將傾斜電機轉動的角度值ro轉化為傾斜齒輪轉動的角度值out_T motor[],再利用鼠標控制傳感器TouchSensor1使電機轉動,將轉動角度通過語句
ROUTE Tmotor.rotation_changedTO scrip3.in_Tmotor傳輸給傾斜電機,即傳給傾斜齒輪,然后通過語句
ROUTE scrip.out_T motor TO Tilt.rotation
將傾斜齒輪的轉動角度傳輸給傾斜平衡環(huán),使傾斜平衡環(huán)帶動貯液缸轉動,從而實現(xiàn)貯液缸作俯仰運動。
從圖3中可看出,傾斜隨動系統(tǒng)(Tilt servo part)包含在方位隨動系統(tǒng)(Azimuth servo part)中。當方位電機轉動時,通過齒輪傳動裝置和方位齒輪,帶動方位平衡環(huán)與傾斜平衡環(huán)及貯液缸一起繞垂直軸作方位轉動,其具體實現(xiàn)方法與傾斜隨動系統(tǒng)類似。
以模擬船舶轉向時的方位隨動過程為例,當船舶轉向時,通過設計的按鈕 t1來觸發(fā)船舶轉動,利用語句
ROUTE t1.touchTime TO c1.startTime
將點擊按扭的時間傳遞給時間傳感器c1,再使用語句
ROUTE c1.fraction_changed TO o11.set_fraction
將時間的變化量傳給方向插補器o11,最后通過語句
ROUTE o11.value_changed TO Azimuth1.rotation
以實現(xiàn)在陀螺球穩(wěn)定指北的情況下貯液缸、方位平衡環(huán)、0°—180°刻度線、羅經(jīng)基線隨船舶轉動。
此時靈敏部分(陀螺球)與隨動部分(貯液缸)產(chǎn)生一個方位偏角,繼而方位敏感線圈檢測出陀螺球與貯液缸之間的失配,產(chǎn)生一個隨動信號,該信號經(jīng)方位隨動放大器放大后傳給方位電機。在此過程中,通過方位敏感線圈的顏色變化,表明隨動信號的產(chǎn)生。控制時間傳感器的時間周期,達到一定時間,方位電機接收隨動信號,方位電機轉動,帶動方位平衡環(huán)、貯液缸 、0°—180°刻度線轉回到陀螺球主軸的位置,使刻度盤的 0°—180°刻度線與陀螺球主軸一致,而基線保持不動,這樣就可以讀出船舶轉動的角度,也就是船舶的航向。
在以上隨動過程的仿真中,調(diào)整貯液缸材質(zhì)的T ransparency域值,便可使貯液缸透明,隨動部分和靈敏部分的旋轉關系可以清晰地呈現(xiàn)出來,從而使觀測者更容易理解陀螺羅經(jīng)隨動系統(tǒng)的工作過程。
主軸在方位上和高度上的合成運動即為收斂運動,可將其運動軌跡投影到一個平面上,當主軸運動一個時間點,投影面上同時產(chǎn)生相應的運動軌跡,利用投影點運動的方法來觀察主軸的運動規(guī)律。
將方位角和高度角的226個值合成后轉化為在投影面上的坐標值并賦給坐標插補器dian的Keyvalue域,使用時間傳感器 Time使索引線集節(jié)點orbit也按226個時間點來取相應的值,然后利用語句
ROUTE dian.value_changed TO orbit.point
將這些坐標值在同一時間傳感器的控制下依次傳遞給索引線集節(jié)點,以實現(xiàn)在主軸做收斂減幅運動的同時,其軌跡在投影面上被顯示出來,如圖5所示,它是一條收斂螺旋曲線。
圖5 羅經(jīng)指北過程仿真圖
利用VRML來實現(xiàn)陀螺羅經(jīng)的仿真,可以在VRML瀏覽器插件的支持下,直接在IE中進行交互式控制與演示[7-8]。
采用VRML對陀螺羅經(jīng)三維結構和工作原理進行的仿真是利用現(xiàn)代計算機技術對教學改革的一個典型范例,該方法能夠有效地改善講授陀螺羅經(jīng)知識的教學效果,是對傳統(tǒng)教學的一種突破,得到了航海專業(yè)的學生、教師和專家們的一致認可?;赩RML的陀螺羅經(jīng)三維仿真方法還可以應用到其他學科的教學中,具有一定的推廣意義。
1 黃文麗,盧碧紅,楊志剛等.V RML語言入門與應用[M].北京:中國鐵道出版社,2003.
2 段新昱.虛擬現(xiàn)實基礎與VRM L編程[M].北京:高等教育出版社,2004.
3 楊在金.航海儀器[M].大連:大連海事大學出版社,1998.
4 董 銘,周玉.VRM L程序員實用例庫[M].北京:電子工業(yè)出版社,2000.
5 孫軍華,季忠,王忠雷等.基于 VRM L的交互式虛擬裝配平臺的實現(xiàn)[J].計算機應用,2002,10,22(10):101-102
6 方錫武.基于VRM L的機械傳動機構的運動仿真[J].計算機仿真,2007,24(6):203-206.
7 李 營,黃海東,姚其昌等.六自由度駕駛模擬器視景仿真系統(tǒng)研究.武漢理工大學學報(交通科學與工程版),2005,29(3):388-391.
8 王 碩,周昕宇.VRM L與外界數(shù)據(jù)交互的技術實現(xiàn)[J].計算機系統(tǒng)應用,2000,(2):38-41.