蒲 東,薛裕童,李世丁,黃啟昭
(哈爾濱理工大學(xué),黑龍江 哈爾濱 150080)
基于VRML的虛擬車床實(shí)驗(yàn)教學(xué)平臺
蒲 東,薛裕童,李世丁,黃啟昭
(哈爾濱理工大學(xué),黑龍江 哈爾濱 150080)
為了實(shí)現(xiàn)車床的虛擬仿真,就必須實(shí)現(xiàn)加工過程的模擬。由于網(wǎng)絡(luò)虛擬語言VRML能在網(wǎng)頁上方便地建立三維交互模型,因此可以將其用在虛擬車床方面。文章主要針對如何實(shí)現(xiàn)虛擬車床的加工進(jìn)行研究,由于使用VRML語言直接進(jìn)行編寫,代碼長度與加工的精確展示有一定關(guān)系。為簡潔起見,文章使用C++語言進(jìn)行VRML語言的編寫,簡單明了而且方便快捷。
VRML;虛擬車床;仿真;網(wǎng)絡(luò)教學(xué);C++
虛擬現(xiàn)實(shí)技術(shù)(Virtual Reality,VR)是繼多媒體技術(shù)之后另一個(gè)在計(jì)算機(jī)界引起廣泛關(guān)注的研究熱點(diǎn),其定義可以歸納成:利用計(jì)算機(jī)生成一個(gè)模擬環(huán)境,通過多種的傳感設(shè)備讓用戶投入到此環(huán)境之中,實(shí)現(xiàn)用戶與環(huán)境直接進(jìn)行自然交互的技術(shù)。由于其簡單又超強(qiáng)的交互能力與低帶寬運(yùn)行的優(yōu)勢,該技術(shù)在系統(tǒng)仿真、教育培訓(xùn)和工業(yè)生產(chǎn)等領(lǐng)域內(nèi)得到了廣泛的應(yīng)用,并已經(jīng)成為構(gòu)建虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)的基礎(chǔ)。在這種情況下,探討開發(fā)過程、掌握開發(fā)工具,并研究其開發(fā)策略變得很有必要。
虛擬現(xiàn)實(shí)技術(shù)可以讓用戶對虛擬世界中的物體進(jìn)行觀察和操作,并且可提供視、聽、觸摸等多種直觀而自然的實(shí)時(shí)感知,具有沉浸性、交互性和想象力等特點(diǎn)[1]。虛擬現(xiàn)實(shí)建模語言是桌面虛擬現(xiàn)實(shí)系統(tǒng)中最經(jīng)典著名的虛擬現(xiàn)實(shí)技術(shù)手段[2]。國內(nèi)外有很多學(xué)者應(yīng)用VRML進(jìn)行了研究與開發(fā)[3],將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于機(jī)械基礎(chǔ)實(shí)驗(yàn)中,構(gòu)建基于VRML的機(jī)械基礎(chǔ)虛擬實(shí)驗(yàn)系統(tǒng)。該系統(tǒng)能讓學(xué)生沉浸在虛擬環(huán)境中,發(fā)揮主觀能動(dòng)性,進(jìn)行實(shí)驗(yàn)操作,為學(xué)生創(chuàng)造良好的實(shí)驗(yàn)環(huán)境,徹底打破空間和時(shí)間的限制,能有效提升學(xué)生的學(xué)習(xí)效率,提高學(xué)生的思維能力、動(dòng)手能力和創(chuàng)新能力。
但是VRML構(gòu)建的虛擬實(shí)驗(yàn)系統(tǒng)與操作電腦的學(xué)習(xí)者之間還需要一個(gè)媒介讓試驗(yàn)系統(tǒng)與其相關(guān)的知識更加系統(tǒng)而且直觀,連接這兩者之間的媒介就成了一個(gè)重要的問題。為了讓學(xué)習(xí)者更加直接而深刻地學(xué)習(xí)理解虛擬實(shí)驗(yàn)系統(tǒng)中的知識,就需要虛擬實(shí)驗(yàn)系統(tǒng)中的機(jī)械裝置可以模擬現(xiàn)實(shí)中的器械進(jìn)行各種復(fù)雜的運(yùn)轉(zhuǎn)動(dòng)作。用什么控制?如何進(jìn)行控制?為了解決這些復(fù)雜重要的問題,文章進(jìn)行了各種探索。
在VRML語言中沒有直接進(jìn)行加工仿真的語言,只能使用加工動(dòng)畫來進(jìn)行代替。如果加工部分的代碼過于簡短,會(huì)造成實(shí)驗(yàn)失真并且效果不明顯。C++和VRML的具體連接方式和方法如下。
2.1 C++與VRML連接的思路
從對VRML的簡介中可以看到,VRML本身帶有時(shí)間序列可以讓物體根據(jù)其代碼沿著固定的軌跡運(yùn)動(dòng),而形狀也可以通過時(shí)間序列進(jìn)行編程的方法。而這些都可以通過用Java或者Javascrpt進(jìn)行動(dòng)態(tài)編程,但是Javascrip可以對簡單的邏輯進(jìn)行判斷做出來。類似打開一個(gè)開關(guān),物體移動(dòng)一定的角度或者,將鼠標(biāo)移動(dòng)到一定的位置,然后物體的顏色就會(huì)變化的簡單例子。但是對于像機(jī)床加工,機(jī)械手的運(yùn)動(dòng)就要取得Java的支持,但是VRML是一個(gè)在幾年前流行的軟件,它所支持的Java版本過低,開發(fā)困難。于是人們就想出來用C++編寫一個(gè)專門針對某一型號的機(jī)床的解釋器的軟件,通過對輸入g代碼的讀取、處理、建模、時(shí)間序列的分配、輸出VRML可以直接運(yùn)行的代碼,然后由網(wǎng)頁對VRML對其進(jìn)行直接調(diào)用使之表現(xiàn)出來人們想要的效果。
2.2 C++軟件系統(tǒng)要處理的問題
C++軟件系統(tǒng)最主要的功能是輸出位置和時(shí)間序列使VRML系統(tǒng)可以按照它所指示的時(shí)間位置坐標(biāo)來運(yùn)動(dòng)。生成的文件最多最大的部分也是這個(gè)部分,對此,本文提出了幾種思路。
(1)通過對VRML文件進(jìn)行動(dòng)態(tài)的檢索,檢索出來對應(yīng)的關(guān)鍵字之后就用模擬軟件根據(jù)計(jì)算出來的時(shí)間序列進(jìn)行插補(bǔ)。這個(gè)方法的特點(diǎn)是可以對不同的機(jī)床進(jìn)行控制,但是因?yàn)閂RML文件里面的內(nèi)容復(fù)雜,又涉及很多的變量,對于編程掌握不好的人來說有些困難。
(2)全新生成一個(gè)VRML文件。這個(gè)方法所對應(yīng)的C++文件比較大,也就是說其對系統(tǒng)的資源占用比較大,所要求的計(jì)算機(jī)的速度和內(nèi)存也比較高。
(3)模擬軟件1通過給定的g代碼運(yùn)算出各個(gè)刀架主軸在某一時(shí)間的位置等參量,輸出文件,然后由軟件根據(jù)文件對VRML軟件進(jìn)行數(shù)據(jù)的填入。這個(gè)方法編程較為簡單,分工明確,對系統(tǒng)的要求也不是很高,是一個(gè)很好的由C++驅(qū)動(dòng)VRML作位置變換的方法。
對于加工件形狀的變化與時(shí)間的關(guān)系進(jìn)行匹配,則通過C++輸出大量的首尾相連的圓柱體,通過內(nèi)置的時(shí)間序列對其控制其形狀??刂品椒ê蜕厦婵刂莆恢玫念愃?,結(jié)果就是輸出一個(gè)各個(gè)部分隨時(shí)間變化的一個(gè)圓柱體,這個(gè)圓柱體可以按照車刀的位置控制其直徑,這樣也就可以實(shí)現(xiàn)模擬機(jī)床切削的效果。
關(guān)于軟件插補(bǔ)部分的插補(bǔ)原理,主要有以下幾個(gè)方面。
3.1 脈沖增量插補(bǔ)
脈沖增量插補(bǔ)是每次插補(bǔ)結(jié)束在一個(gè)軸上面產(chǎn)生一個(gè)位移,以一個(gè)脈沖的輸出作為插補(bǔ)的標(biāo)志。在機(jī)床中每次脈沖機(jī)床位置的變化量被稱為脈沖當(dāng)量,因?yàn)槭擒浖逖a(bǔ)、軟件移動(dòng),所以脈沖當(dāng)量可以自由調(diào)節(jié),也就是說人們的虛擬仿真數(shù)控車床的實(shí)驗(yàn)中,并不需要脈沖當(dāng)量過大而引起的機(jī)床損壞。但是因?yàn)槿绻}沖量過大則會(huì)引起機(jī)床的快速進(jìn)給,讓整個(gè)加工過程失衡。解決方法是將脈沖當(dāng)量調(diào)整到較小,將脈沖發(fā)射的速度調(diào)到較快。這個(gè)部分是通過VRML的時(shí)鐘修改的,這樣做可以讓整個(gè)加工過程變得平順,沒有突兀感。
3.2 逐點(diǎn)比較法和數(shù)字積分法
逐點(diǎn)比較法的基本思路是計(jì)算機(jī)在控制的過程中,能夠逐點(diǎn)比較計(jì)算加工偏差然后控制坐標(biāo)進(jìn)給,按規(guī)定的圖形加工出所要的工件。數(shù)字積分法的基本思路是數(shù)字微分分析器采用數(shù)字積分法插補(bǔ)的效果好速度快,邏輯功能強(qiáng)。對于高次曲線具有很好的適應(yīng)性。
逐點(diǎn)比較法的基本過程由偏差判別、坐標(biāo)進(jìn)給和偏差計(jì)算組成。偏差判別是為了判斷加工點(diǎn)對規(guī)定圖形的偏移距離,決定進(jìn)給的方向。坐標(biāo)進(jìn)給是指將坐標(biāo)進(jìn)給方向和進(jìn)給距離發(fā)送到坐標(biāo)差值計(jì)算器中,根據(jù)切削深度和脈沖當(dāng)量對刀具位置坐標(biāo)進(jìn)行進(jìn)給,并將刀具位置一同發(fā)送給圖形變換計(jì)算器中,并讓圖形變換計(jì)算器保存下來。偏差計(jì)算是為了將進(jìn)給后的坐標(biāo)帶入到偏差判別計(jì)算器里面,進(jìn)行下一步的計(jì)算。就這樣構(gòu)成了一個(gè)工作循環(huán),直至本加工步完成由退刀計(jì)算器對刀具的位置進(jìn)行退刀運(yùn)算。
數(shù)字積分法共有兩個(gè)累加器,x累加器和y累加器。根據(jù)位置給累加器賦值,x,y方向上面沒進(jìn)一步就在相應(yīng)的累加器中加1,如果累加器中的值大于所賦的值就產(chǎn)生溢出,溢出后x,y累加器保存余數(shù)并產(chǎn)生進(jìn)給。
在加工過程中加工的切削深度和切削速度是必須控制的變量,這不僅對切削溫度和切削力有影響,還會(huì)影響加工的速度和表面質(zhì)量,所以對于切削深度和切削速度的控制是非常必要的。
4.1 模擬切削深度
機(jī)床經(jīng)過上面的運(yùn)算之后已經(jīng)有了根據(jù)路徑移動(dòng)的功能,模擬機(jī)床切削的過程是先和工件接觸,而如果沒有切削深度的話,那么有了路徑也就只能看到機(jī)床在那里動(dòng)來動(dòng)去,無法達(dá)到人們想要的結(jié)果。所以需要一個(gè)部分對加工路徑產(chǎn)生持續(xù)的偏移,并且使機(jī)床待加工的工件產(chǎn)生相同的動(dòng)作。
4.2 模擬切削的速度
模擬切削的速度是通過計(jì)數(shù)器加減的方式進(jìn)行控制的,其脈沖當(dāng)量就是機(jī)床進(jìn)給的速度,而在軟件里面寫的是和VRML具有相同時(shí)間坐標(biāo)的時(shí)間計(jì)算器進(jìn)行的,可以通過對g代碼的解釋進(jìn)行速度的調(diào)節(jié)。
機(jī)械基礎(chǔ)實(shí)驗(yàn)教學(xué)在工科院校中占有重要地位,為了提高實(shí)驗(yàn)教學(xué)的效果,構(gòu)建了基于 VRML技術(shù)的機(jī)械基礎(chǔ)虛擬實(shí)驗(yàn)系統(tǒng),對系統(tǒng)的結(jié)構(gòu)和關(guān)鍵技術(shù)進(jìn)行深入分析,并以沖擊實(shí)驗(yàn)為例進(jìn)行研究。該系統(tǒng)是對機(jī)械基礎(chǔ)理論和實(shí)驗(yàn)教學(xué)的有益補(bǔ)充,使學(xué)生可在時(shí)空開放的虛擬環(huán)境中身臨其境地進(jìn)行實(shí)驗(yàn)操作,不再局限于短暫的實(shí)操時(shí)間與匱乏的可用設(shè)備,能有效地促進(jìn)學(xué)生對專業(yè)知識的掌握,激發(fā)學(xué)習(xí)和創(chuàng)造的積極性。
[1]汪興謙.VRML與Java編程實(shí)例講解[M].北京:中國水利水電出版社,2002.
[2]申蔚,曾文琪.虛擬現(xiàn)實(shí)技術(shù)[M].北京:清華大學(xué)出版社,2009.
[3]格林喬治,布爾德.虛擬現(xiàn)實(shí)技術(shù)[M].2版.魏迎梅,譯.北京:電子工業(yè)出版社,2005.
Virtual lathe experiment teaching platform based on VRML
Pu Dong, Xue Yutong, Li Shiding, Huang Qizhao
(Harbin University of Science and Technology, Harbin 150080, China)
In order to realize the virtual simulation of the lathe, it is necessary to realize the simulation of the process-cycle. Because the network virtual language VRML can easily establish the three-dimensional interactive model on the website, therefore it can be used in virtual lathe. This paper mainly focuses on how to realize the processing of virtual lathe. Because the code written directly by the VRML language, the length of code has a certain relation with the precise display of processing. For the sake of brevity, the article uses C ++ language to write VRML language, which is simple, convenient and quick.
VRML; virtual lathe; simulation; online education; C++
蒲東(1996— ),男,黑龍江寶清,本科;研究方向:摩擦磨損仿真。