劉 煒,陳 寧
(江蘇科技大學(xué)能源與動(dòng)力工程學(xué)院,江蘇鎮(zhèn)江212003)
虛擬現(xiàn)實(shí)技術(shù)是一門(mén)新興技術(shù),集傳感器技術(shù)、圖形圖像處理技術(shù)、多媒體技術(shù)、互聯(lián)網(wǎng)技術(shù)、計(jì)算機(jī)技術(shù)[1]等于一體,逐漸成為國(guó)際重要課題,在計(jì)算機(jī)相關(guān)領(lǐng)域中得到廣泛應(yīng)用,在娛樂(lè)、教育、培訓(xùn)等領(lǐng)域也得到廣泛應(yīng)用.文獻(xiàn)[2]中基于I-DEAS,OpenGL,VC++,建立約束關(guān)系,開(kāi)發(fā)大型機(jī)械裝置虛擬教學(xué)訓(xùn)練系統(tǒng),以動(dòng)態(tài)實(shí)時(shí)展現(xiàn)復(fù)雜視景.文獻(xiàn)[3]中通過(guò)11個(gè)BB模塊實(shí)現(xiàn)三維實(shí)體碰撞檢測(cè).利用虛擬現(xiàn)實(shí)技術(shù)對(duì)柴油機(jī)配氣機(jī)構(gòu)進(jìn)行運(yùn)動(dòng)學(xué)視覺(jué)仿真,一直是柴油機(jī)工作狀態(tài)模擬的難點(diǎn),特別是配氣機(jī)構(gòu)運(yùn)動(dòng)體之間運(yùn)動(dòng)關(guān)系的仿真.文中提出了兩種仿真方法,并對(duì)仿真結(jié)果進(jìn)行了比較.
首先求解柴油機(jī)配氣機(jī)構(gòu)運(yùn)動(dòng)的數(shù)學(xué)模型.圖1為單缸配氣機(jī)構(gòu)的示意圖.圖中l(wèi)T為搖臂轉(zhuǎn)動(dòng)中心到推桿上支承面中O1的距離;α為搖臂lΤ對(duì)挺柱中心線的偏轉(zhuǎn)角;l為推桿上下支承面中心間的距離;γ為推桿對(duì)挺柱中心線的偏轉(zhuǎn)角;lV為氣閥側(cè)的搖臂臂長(zhǎng)(搖臂中心O到圓柱面中心O2的距離);β為lV臂對(duì)氣閥中心線的偏轉(zhuǎn)角;hv氣閥的升程;hT為挺柱的升程;φ為凸輪的轉(zhuǎn)角;ω為凸輪軸的轉(zhuǎn)角.挺柱的位移hT與凸輪的轉(zhuǎn)角φ相關(guān)[4].
圖1 配氣機(jī)構(gòu)示意Fig.1 Gas distribution mechanism
圖2為進(jìn)氣閥位移hv與凸輪轉(zhuǎn)角φ的關(guān)系.可以通過(guò)凸輪轉(zhuǎn)角φ來(lái)確定挺柱的運(yùn)動(dòng)規(guī)律.由圖1可以得到下列方程:
再對(duì)時(shí)間t求導(dǎo),可得到氣閥運(yùn)動(dòng)的關(guān)系式:
式中:hV為速度(mm/s);h¨V為加速度(mm/s2).
結(jié)合式(1,2)和(5),可得挺柱的位移hT與凸輪的角速度ω的關(guān)系式:
對(duì)公式(5)求積分有
凸輪軸轉(zhuǎn)速ω為8.75 rad/s,故凸輪的轉(zhuǎn)速ω也為8.75 rad/s.
利用Simulink求解方程,得到配氣機(jī)構(gòu)挺柱的速度、加速度曲線,將結(jié)果輸入SQLserver數(shù)據(jù)庫(kù)建立數(shù)據(jù)表.以ADO和UDP協(xié)議通信,數(shù)據(jù)從數(shù)據(jù)庫(kù)服務(wù)器傳輸?shù)絊imulink.數(shù)據(jù)發(fā)送流程如圖3.
通過(guò) VS2005建立 OSG(OpenSceneGraph)仿真平臺(tái)與數(shù)據(jù)庫(kù)表的關(guān)聯(lián),從而使OSG中各個(gè)機(jī)構(gòu)在數(shù)據(jù)庫(kù)表的支持下運(yùn)動(dòng)(圖4).此方法在實(shí)現(xiàn)視覺(jué)仿真時(shí)結(jié)果精確,機(jī)構(gòu)動(dòng)作平滑,但占用系統(tǒng)資源較大,運(yùn)行費(fèi)時(shí).
圖2 凸輪轉(zhuǎn)角與進(jìn)氣閥位移關(guān)系Fig.2 Relationship of cam angle and suction valve displacement
圖3 數(shù)據(jù)發(fā)送流程Fig.3 Flow diagram of data send
圖4 視景生成流程Fig.4 Visual generation process
OSG場(chǎng)景管理軟件提供了osgUtil庫(kù)函數(shù),該庫(kù)函數(shù)用來(lái)獲得正確的靜態(tài)物體和動(dòng)態(tài)物體高度值.場(chǎng)景中的射線是交集測(cè)試的基礎(chǔ),線段類提供了一種定義射線的方法.當(dāng)交集測(cè)試被觸發(fā)時(shí),它將檢測(cè)射線的相交情況并執(zhí)行相應(yīng)的操作[6].這里采用了一種改進(jìn)的AABB碰撞檢測(cè)算法.柴油機(jī)配氣機(jī)構(gòu)中凸輪的AABB樹(shù)由2×N-1個(gè)節(jié)點(diǎn)組成,其中包括N個(gè)葉節(jié)點(diǎn)和N-1個(gè)內(nèi)部節(jié)點(diǎn),N是凸輪中基本圖元三角形的數(shù)目.葉節(jié)點(diǎn)包含一個(gè)或多個(gè)可繪制體(Drawable類)信息.在凸輪和挺柱碰撞檢測(cè)時(shí),遇到測(cè)試兩個(gè)葉節(jié)點(diǎn)的情況,則先進(jìn)行包圍盒之間的相交測(cè)試.如果包圍盒相交測(cè)試成立,再進(jìn)行凸輪和挺柱之間基本圖元如三角形、線段的相交檢測(cè),找到碰撞的準(zhǔn)確位置.文中提出一種方法,據(jù)此可以跳過(guò)AABB的葉節(jié)點(diǎn)之間的相交測(cè)試,直接進(jìn)行幾何體基本圖元間的相交測(cè)試,找出射線和三角形的交點(diǎn).方法如下:
凸輪幾何體三角形的參數(shù)方程:
式中:V0,V1和V2為三角形的3個(gè)點(diǎn);x,y為V1和V2的權(quán)重,1-x-y為V0的權(quán)重,并且滿足x>=0,y>=0,x+y<=1.
射線的參數(shù)方程為O+Dt.式中:O為起點(diǎn),D為射線的方向.
求射線與凸輪幾何體基本圖元三角形的交點(diǎn),即求解方程:
將t,x,y提取出來(lái)作為未知數(shù),得到線性方程組
根據(jù)克萊姆法則,
可知射線與凸輪幾何體基本圖元三角形的交點(diǎn).
依據(jù)碰撞檢測(cè)算法,實(shí)時(shí)獲取凸輪與挺柱的動(dòng)態(tài)交點(diǎn),再通過(guò)交點(diǎn),根據(jù)曲柄滑塊機(jī)構(gòu)運(yùn)動(dòng)規(guī)律,求出配氣機(jī)構(gòu)各部件的運(yùn)動(dòng)方程.碰撞檢測(cè)算法可以利用OSG自身碰撞檢測(cè)類實(shí)現(xiàn).用osgUtil::Line-SegmentIntersector定義相交矢量,用osgUtil::IntersectionVisitor定義碰撞檢測(cè)器,定義碰撞檢測(cè)的對(duì)象物——凸輪.在整個(gè)運(yùn)行周期,碰撞實(shí)時(shí)發(fā)生.凸輪與相交矢量的碰撞檢測(cè)結(jié)果即交點(diǎn)實(shí)時(shí)保存,傳遞給OSG仿真程序.這一方法需要配氣機(jī)構(gòu)三維模型非常精確,可直接從CAM工具ProE文件格式轉(zhuǎn)化而來(lái).對(duì)于單獨(dú)一個(gè)氣缸配氣機(jī)構(gòu)來(lái)說(shuō),碰撞檢測(cè)發(fā)生在凸輪和挺柱兩個(gè)動(dòng)態(tài)運(yùn)動(dòng)剛體之間,采用嵌套回調(diào)的方法解決這個(gè)問(wèn)題.凸輪軸在參與正時(shí)轉(zhuǎn)動(dòng)時(shí),加入碰撞檢測(cè)機(jī)制.
圖5 方法2流程Fig.5 Flowsheet of method 2
基于碰撞原理,挺柱和推桿的位移程序如下:
osgUtil::LineSegmentIntersector(p-start,pend);∥得到線段
osgUtil::IntersectionVisitor-iv(-lineSegmentIntersector.get());
terrain- >accept(-iv);∥碰撞點(diǎn)
osg::ref-ptr<o(jì)sg::MatrixTransform> mt-terrain=new osg::MatrixTransform;
mt-terrain- >setMatrix(osg::Matrix::translate(osg::Vec3(0,0,0)));
mt-terrain- >addChild(terrain);
-intersections=-lineSegmentIntersector- >get-Intersections();
int-intersectionNumber=-intersections.size();
if(-intersectionNumber!=0)
osgUtil::LineSegmentIntersector::Intersections::iterator hitr=-intersections.begin();
osg::Vec3
vec3-p1=hitr- >getWorldIntersectPoint()*mt-terrain- >getMatrix();
OSG運(yùn)行結(jié)果如圖6.
該方法利用碰撞檢測(cè)機(jī)制實(shí)現(xiàn)挺柱沿凸輪型線復(fù)雜運(yùn)動(dòng)軌跡,避免用Simulink建立數(shù)學(xué)模塊求解微分方程.上述方法是一種較為方便且占用資源較少的解決方案.
圖6 柴油機(jī)配氣機(jī)構(gòu)運(yùn)動(dòng)Fig.6 Diesel engine gas distribution mechanism motion visual simulation
經(jīng)過(guò)觀察,可見(jiàn)挺柱、推桿、搖臂和氣閥等構(gòu)件有抖動(dòng)現(xiàn)象.這一問(wèn)題來(lái)源于碰撞檢測(cè)環(huán)節(jié).應(yīng)用OSG碰撞方法求交點(diǎn)時(shí),盡管對(duì)導(dǎo)入的模型曲面進(jìn)行了Delaunay三角剖分,但得到剖分后,部分三角形較大.凸輪曲面由很多三角形平面擬合而成,在相交矢量與凸輪表面求交時(shí),交點(diǎn)值有跳動(dòng),造成了部分構(gòu)件仿真結(jié)果抖動(dòng).
利用 osg::PrimitiveSet::POINTS,osg::PrimitiveSet::TRIANGLES對(duì)凸輪模型曲面的三角形細(xì)化,可以減小抖動(dòng).
根據(jù)柴油機(jī)配氣機(jī)構(gòu)視覺(jué)仿真的要求,用兩種不同方法對(duì)配氣機(jī)構(gòu)進(jìn)行仿真:一是利用Simulink對(duì)配氣機(jī)構(gòu)各個(gè)部件的運(yùn)動(dòng)微分方程進(jìn)行解算,通過(guò)數(shù)據(jù)庫(kù)實(shí)時(shí)傳遞運(yùn)算數(shù)據(jù),在視覺(jué)仿真環(huán)境中得到運(yùn)動(dòng)效果;二是通過(guò)碰撞檢測(cè)機(jī)制,找到凸輪與挺柱碰撞交點(diǎn),通過(guò)交點(diǎn)計(jì)算各部件運(yùn)動(dòng)位置,解決了運(yùn)動(dòng)剛體之間的碰撞檢測(cè)問(wèn)題.這兩種方法經(jīng)過(guò)比較,后者因?yàn)殪`活方便,推薦使用.
References)
[1] 周紅軍,王選科.虛擬現(xiàn)實(shí)系統(tǒng)概述[J].航空計(jì)算技術(shù),2005,35(1):114 -116.Zhou Hongjun,Wang Xuanke.Systematic summary of virtual reality[J].Aeronautical Computer Technique,2005,35(1):114 -116.(in Chinese)
[2] 賀少華,吳新躍.基于VC++和OpenGL的大型機(jī)械裝置虛擬教學(xué)訓(xùn)練系統(tǒng)的開(kāi)發(fā)[J].系統(tǒng)仿真學(xué)報(bào),2009,21(4):1059 -1062.He Shaohua,Wu Xinyue.Desktop VR prototype of mechanical devices training applications[J].Journal of System Simulation,2009,21(4):1059 -1062.(in Chinese)
[3] 王憲成,李勃,李莉.基于Virtools4-0的某型船艇柴油機(jī)虛擬維修關(guān)鍵技術(shù)研究[J].裝甲兵工程學(xué)院學(xué)報(bào),2010,24(2):27 -31.Wang Xiancheng,Li Bo,Li Li.Research on key technology of virtual maintenance certain boat diesel engine based on virtual 4.0[J].Journal of Academy of Armored Force Engineering,2010,24(2):27 -31.(in Chinese)
[4] 姚壽廣,包國(guó)治,許江濤.基于虛擬樣機(jī)的柴油機(jī)配氣機(jī)構(gòu)運(yùn)動(dòng)學(xué)動(dòng)力學(xué)仿真分析[J].船舶工程,2009,31(6):27-31.Yao Shouguang,Bao Guozhi,Xu Jiangtao.Kinematics and dynamics simulation analysis of valve actuating mechanism for diesel engine based on virtual prototype technology[J].Ship Engineering,2009,31(6):27 -31.(in Chinese)
[5] 楊曉,廉靜靜,張新宇.基于OSG的虛擬場(chǎng)景中包圍盒碰撞檢測(cè)的研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(9):32-34.Yang Xiao,Lian Jingjing,Zhang Xinyu.Research on bounding box collision detection in virtual reality based on OSG[J].Computer Technology Development,2011(9):32-34.(in Chinese)