汪昭 徐文娟 魏江(常熟理工學(xué)院物理與電子工程學(xué)院,江蘇常熟 215500)
?
基于VRML/Simulink技術(shù)的3D單擺仿真
汪昭 徐文娟 魏江
(常熟理工學(xué)院物理與電子工程學(xué)院,江蘇常熟 215500)
【摘 要】運(yùn)用計(jì)算虛擬技術(shù)設(shè)計(jì)實(shí)驗(yàn)仿真是時(shí)下高校實(shí)驗(yàn)室教學(xué)改革的重點(diǎn)方向之一?;赩RML/Simulink技術(shù),通過(guò)建立數(shù)學(xué)模型,設(shè)計(jì)了一個(gè)擺幅和阻尼系數(shù)可控的3D單擺計(jì)算機(jī)仿真模型,并設(shè)計(jì)了圖形用戶界面,實(shí)現(xiàn)了用戶的對(duì)實(shí)驗(yàn)參數(shù)的控制。應(yīng)用該模型研究了較大擺幅和存在阻尼時(shí)的單擺的運(yùn)動(dòng)情況。最后,我們對(duì)實(shí)驗(yàn)進(jìn)行了總結(jié)與展望。
【關(guān)鍵詞】VRML Simulink 單擺 仿真
【Abstract】Nowadays, designing the virtual experiment with computational simulation technology is becoming one of the most important direction of current laboratory teaching reform in colleges and universities.Based on VRML/Simulink technology,by establishing the mathematical model, we designed a 3D computer model of simple pendulum, whose swing and damping coefficient could be controlled.We also designed a graphical user interface to control the experimental parameters.Applying the model, we studied the motion of pendulum with large swing or damping.Finally, we summarized and prospected about the experiment.
【Keywords】VRML;Simulink;Simple pendulum;Simulation
物理學(xué)是一門基于實(shí)驗(yàn)的學(xué)科。但是受到場(chǎng)地和儀器數(shù)量的客觀限制,學(xué)生能實(shí)際操作實(shí)驗(yàn)的機(jī)會(huì)較少。在不增加實(shí)驗(yàn)室負(fù)擔(dān)的前提下,設(shè)置一定數(shù)量的虛擬實(shí)驗(yàn)是一個(gè)比較好的解決方案。國(guó)內(nèi)許多知名高校都在不斷研發(fā)、改進(jìn)物理虛擬實(shí)驗(yàn)室[1-2]。
單擺是一種簡(jiǎn)單的物理模型。當(dāng)單擺的擺幅較小(一般認(rèn)為小于5°)時(shí),并且不存在阻尼時(shí),單擺的擺動(dòng)可近似看成簡(jiǎn)諧振動(dòng)。若單擺擺幅較大或者存在阻尼,其擺動(dòng)的情況則不能看成簡(jiǎn)諧運(yùn)動(dòng)。
本文的主要目標(biāo),是運(yùn)用VRML語(yǔ)言建立3D單擺模型;用MATLAB/Simulink進(jìn)行數(shù)值計(jì)算,并利用計(jì)算獲得的結(jié)果控制單擺模型的運(yùn)動(dòng),通過(guò)GUI設(shè)計(jì)控制Simulink計(jì)算中的單擺參數(shù),觀察單擺運(yùn)動(dòng)的變化。
從實(shí)驗(yàn)者觀察的角度,我們可以將物理實(shí)驗(yàn)分成兩類。第一類實(shí)驗(yàn)在實(shí)驗(yàn)的過(guò)程中實(shí)驗(yàn)者不需要改變視角,例如電路元件的伏安特性研究,此類;第二類則需要觀察者經(jīng)常更換視角觀察實(shí)驗(yàn)儀器的變化。對(duì)于第一類實(shí)驗(yàn),采用虛擬仿真軟件如Labview仿真較為方便。對(duì)于第二類實(shí)驗(yàn),需要采用可交互3D仿真來(lái)實(shí)現(xiàn)。
建立三維模型比較常見(jiàn)的工具有VRML語(yǔ)言、3D MAX、MAYA等工具。VRML語(yǔ)言簡(jiǎn)單,便于控制和交互[3-4]。本文即采用VRML進(jìn)行建模。VRML(Virtual Relity Modeling Language)虛擬現(xiàn)實(shí)建模語(yǔ)言,是一種用來(lái)在網(wǎng)絡(luò)上實(shí)現(xiàn)三維虛擬現(xiàn)實(shí)場(chǎng)景的計(jì)算機(jī)語(yǔ)言。VRML語(yǔ)言除了可以實(shí)現(xiàn)3D場(chǎng)景,還可以實(shí)現(xiàn)3D動(dòng)畫和人機(jī)交互。
2.1 VRML設(shè)計(jì)3D單擺
編輯VRML語(yǔ)言可使用VRMLPad直接編寫源代碼,使用VRML瀏覽器編譯查看,也可以使用MATLAB中所帶工具VRealm Builder繪制3D圖形。3D單擺并不復(fù)雜。首先建立一個(gè)正方體,一個(gè)圓柱體和一個(gè)圓錐體。通過(guò)縮放、旋轉(zhuǎn)和位置變換,得到如下3D模型(圖1)。
其中,細(xì)圓柱(擺線)和圓錐的轉(zhuǎn)軸都是長(zhǎng)方體的中心位置。當(dāng)單擺開始擺動(dòng)時(shí),擺線和擺錘的轉(zhuǎn)角保持一致。
2.2 Simulink控制3D單擺的運(yùn)動(dòng)
3D單擺模型建立后是靜止的,需要通過(guò)運(yùn)算獲得其運(yùn)動(dòng)規(guī)律,并對(duì)單擺的轉(zhuǎn)動(dòng)進(jìn)行控制。可以控制VRML模型運(yùn)動(dòng)的計(jì)算機(jī)語(yǔ)言很多,例如JAVASCRIPT[3]、JAVA[5]、MATLAB等。由于本實(shí)驗(yàn)需要進(jìn)行積分等數(shù)值運(yùn)算,我們選擇采用MATLAB/Simulink工具。其優(yōu)點(diǎn)是數(shù)值計(jì)算效率較高,且與VRML的接口完善。
單擺有其自身的運(yùn)動(dòng)規(guī)律,為了使單擺的擺動(dòng)符合實(shí)際情況,我們需要通過(guò)計(jì)算獲得擺角θ與時(shí)間t之間的關(guān)系。
單擺模型可以如圖2描述。
設(shè)擺錘質(zhì)量為m,擺長(zhǎng)為l,則當(dāng)白線與豎直方向夾角為 θ時(shí),單擺受到的力矩大小為 mglsin θ。
根據(jù)轉(zhuǎn)動(dòng)定律,無(wú)阻尼單擺的微分方程可以寫成:若 θ較小時(shí), θ≈sin θ,解微分方程可得:
若存在阻尼,則有:
即:
若 θ較大,則無(wú)法采用近似解給出微分方程的解析解。為了進(jìn)行仿真,我們采用數(shù)值解的方式給出 θ(t)。
Simulink是Matlab軟件下一個(gè)常用的仿真工具箱。運(yùn)用Simulink可以方便地實(shí)現(xiàn)數(shù)據(jù)的輸入、計(jì)算和輸出。Simulink 3D Animation專門針對(duì)VRML開發(fā)的額工具箱。
運(yùn)用Simulink中的VR sink模塊可以將Simulink和VRML建立的3D模型連接起來(lái)。
Simulink仿真線路如圖3所示。
需要注意的一點(diǎn)是Simulink中的時(shí)間是相對(duì)時(shí)間,若使用相對(duì)時(shí)間連接VRML模型,模型運(yùn)動(dòng)將比實(shí)際情況快很多。要對(duì)3D單擺進(jìn)行仿真,需要使用實(shí)時(shí)內(nèi)核(Real-Time Kernal),使積分時(shí)間和計(jì)算機(jī)內(nèi)置時(shí)間同步,增加單擺的真實(shí)感。
2.3 GUI的設(shè)計(jì)
對(duì)運(yùn)行者而言,在Simulink中操作改變參數(shù)較麻煩。我們需要一個(gè)相對(duì)用戶友好、能快速上手控制的界面,用以修改單擺的各項(xiàng)參數(shù),例如:弦長(zhǎng)、擺幅和阻尼系數(shù)。MATLAB中,設(shè)計(jì)用戶圖形界面的工具為GUI(Graphical User Interface)。運(yùn)用MATLAB中的GUI設(shè)計(jì)了圖形用戶界面如圖4。
圖4為設(shè)計(jì)的GUI界面。通過(guò)輸入數(shù)據(jù)框,獲得用戶數(shù)據(jù),按下“確定”按鈕,后臺(tái)經(jīng)過(guò)計(jì)算,為Simulink流程中的的Gain(增益)和Constant3賦值,改變單擺的運(yùn)動(dòng)規(guī)律。顯示和關(guān)閉按鈕可按照用戶的要求調(diào)用/光比Simulink中的示波器(Scope)。
為了使運(yùn)行初始條件在一定范圍內(nèi),我們對(duì)用戶輸入的數(shù)據(jù)進(jìn)行了控制。當(dāng)用戶輸入的單擺擺幅必須再0到40°之間,弦長(zhǎng)在0.5-3m之間,阻尼系數(shù)范圍在0-0.5之間。當(dāng)用戶輸入數(shù)據(jù)超出這個(gè)范圍,系統(tǒng)會(huì)跳出“msgbox”報(bào)錯(cuò),如圖5所示。
若用戶在不經(jīng)意間修改了系統(tǒng)的參數(shù),可以按“重置”按鈕將系統(tǒng)參數(shù)恢復(fù)到默認(rèn)值。
當(dāng)系統(tǒng)運(yùn)行是,用戶可以通過(guò)在用戶圖形界面GUI中輸入原始數(shù)據(jù),觀察單擺的擺動(dòng)情況。同時(shí),可以通過(guò)示波器(scope)觀察時(shí)間-擺角的波形和時(shí)間-角速度的波形。
上圖6和圖7為不同阻尼系數(shù)條件下,角度、角速度-時(shí)間曲線。其中初值為0的曲線為角速度曲線。從圖中不難看出,在阻尼為0的條件下,擺幅始終保持不變。在阻尼為1時(shí),擺幅迅速減小,在10秒內(nèi)迅速趨近于0。
也可以觀察仿真單擺的擺動(dòng),3D仿真單擺的優(yōu)點(diǎn)是,可以從不同的角度觀察單擺的擺動(dòng)情況。如圖8中,左圖(1)為單擺擺動(dòng)時(shí)的主視圖,右圖(2)為單擺擺動(dòng)時(shí)的俯視圖。運(yùn)用VRML仿真類似的力學(xué)實(shí)驗(yàn),可以通過(guò)改變觀察視角,全方位體驗(yàn)實(shí)驗(yàn)的進(jìn)程,使實(shí)驗(yàn)者身臨其境。
本文運(yùn)用了通過(guò)運(yùn)用VRML語(yǔ)言,MATALBA中的Simulink和GUI工具,完成了3D仿真單擺實(shí)驗(yàn)。本實(shí)驗(yàn)仿真度相對(duì)較高,未使用過(guò)多的近似,而是采用數(shù)值積分的方法,只要積分精度足夠高,就可以保證單擺的擺動(dòng)和實(shí)際情況保持一致。
運(yùn)用這個(gè)單擺模型,除了可以研究擺幅較大和存在阻尼擺動(dòng)的情況,還可以研究變質(zhì)量擺動(dòng)、受周期驅(qū)動(dòng)的單擺的擺動(dòng)情況。用類似的方法,還可以完成對(duì)復(fù)擺、傅科擺、混沌擺等物理實(shí)驗(yàn)。
我們認(rèn)為,VRML建立3D 模型相對(duì)直觀,MATLAB/Simulink控制仿真物理效果的準(zhǔn)確性,GUI設(shè)計(jì)控制仿真操作的簡(jiǎn)便性,三者結(jié)合可以很好滿足物理實(shí)驗(yàn)仿真的需要。
參考文獻(xiàn):
[1]郭雷,霍劍青,王曉蒲.仿真物理實(shí)驗(yàn)教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)科學(xué)技術(shù)大學(xué)學(xué)報(bào),2002,32(3):373-380.
[2]譚守標(biāo),霍劍青,王曉蒲.虛擬實(shí)驗(yàn)軟件的建模方法與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2003,24(12):2239-2243.
[3]薛慶文,辛允東.虛擬現(xiàn)實(shí)VRML程序設(shè)計(jì)與實(shí)例[M].北京:清華大學(xué)出版社,2012.
[4]劉怡,張洪定,崔欣.虛擬現(xiàn)實(shí)VRML程序設(shè)計(jì)[M].天津:南開大學(xué)出版社,2007.
[5]閆龍,基于JAVA3D的網(wǎng)絡(luò)物理實(shí)驗(yàn)室的研究與實(shí)踐[J].中國(guó)電力教育,2011,5:115-118.
基金項(xiàng)目:常熟理工學(xué)院校級(jí)教改立項(xiàng)項(xiàng)目(CITJGGN201328)資助。
作者簡(jiǎn)介:汪昭(1982—),男,江蘇常熟人,常熟理工學(xué)院物理與電子工程學(xué)院,實(shí)驗(yàn)師,碩士,研究方向:計(jì)算機(jī)輔助教學(xué),混沌理論。