亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java3D的機械臂三維虛擬場景創(chuàng)建及運動學仿真*

        2014-09-15 09:23:02錢小平楊慶華鮑官軍
        機電工程 2014年1期
        關(guān)鍵詞:運動學形體建模

        錢小平,楊慶華,荀 一,鮑官軍

        (浙江工業(yè)大學特種裝備制造與先進加工技術(shù)教育部/浙江省重點實驗室,浙江杭州310032)

        0 引 言

        隨著網(wǎng)絡(luò)的飛速發(fā)展,在網(wǎng)絡(luò)上實現(xiàn)虛擬現(xiàn)實系統(tǒng)的研究越來越成為熱點。在機械仿真領(lǐng)域中,利用便捷的網(wǎng)絡(luò)對創(chuàng)建的機械臂三維仿真虛擬環(huán)境實現(xiàn)異地共享,與Internet集成后運行在不同平臺上,從而實現(xiàn)“一次書寫,隨處運行”應(yīng)運而生,而且極大地加快了仿真系統(tǒng)的開發(fā)。

        1997年,SUN公司推出了跨平臺的三維圖形開發(fā)工具包Java 3D。Java 3D是Java 2SDK的標準擴展,它將OpenGL和DirectX這些底層技術(shù)包裝在Java接口中,這種全新的設(shè)計使3D技術(shù)變得不再繁瑣并可加入J2SF,J2FF整套架構(gòu),保證了Java3D技術(shù)強大的擴展性[1]。Java 3D本質(zhì)是一個交互式的三維圖形應(yīng)用編程接口,因此其可以和普通的Java 2D、Swing、Applet等很好地結(jié)合。它支持導入外部3D圖形文件。采用Pro/E,3DMAX等建模軟件,直觀、可視地建立零件模型,并給模型設(shè)置材質(zhì)和貼圖,再利用Loader接口將建好的模型導人到Java3D場景中,這樣就大大減少了工作量,使設(shè)計者能夠把更多精力放在人機交互等更深入的研究上。因此,Java3D成為編寫三維應(yīng)用程序的優(yōu)越工具,在三維動畫、機械建筑仿真等領(lǐng)域有著廣泛的應(yīng)用[2-3]?;贘ava3D的機械臂三維虛擬場景創(chuàng)建及運動學仿真就是在這種背景下提出來的。

        本研究在分析Java3D三維造型原理以及外部模型格式比較基礎(chǔ)上,將機械臂各關(guān)節(jié)造型導入到Java3D場景中進行裝配,最終在Java3D中實現(xiàn)四自由度機械臂仿真虛擬場景。最后,采用標準的D-H法對機械臂進行正、逆運動學分析,在Java中完成運動學仿真功能的實現(xiàn)。

        1 Java3D三維形體造型技術(shù)

        Java3D作為Java語言在三維領(lǐng)域的擴展,是純粹的面向?qū)ο蠼Y(jié)構(gòu)。其數(shù)據(jù)結(jié)構(gòu)采用Scene Graph Structure(場景圖),這為描繪和渲染場景提供了一個簡單、靈活的機制。

        Java3D場景圖是 DAG(Directed-acyclic Graph),即具有方向性的不對稱圖形[4]。在Java3D的場景圖中,最底層(根部)的節(jié)點是Virtual Universe,每一個場景圖只能有一個Virtual Universe。在Virtual Universe上面,就是Locale節(jié)點,絕大多數(shù)程序只有一個Locale,每一個Locale上面擁有一個或多個BranchGroup節(jié)點。要想建立三維應(yīng)用環(huán)境,必須建立所需要的形體(Shape),給出外觀(Appearance)及幾何(Geometry),再把它們擺放在合適位置,這些形體及其擺放位置都建立在BranchGroup節(jié)點上,擺放位置通過另一節(jié)點TransformGroup設(shè)定。另外,安放好形體后,還需設(shè)定具體觀察位置,用View Platform表示,它也建立在TransformGroup節(jié)點之上。場景圖結(jié)構(gòu)如圖1所示。

        在Java3D編程過程中,三維形體是重要的處理對象,可以有3種方式生成需要的三維形體:①利用Java3D提供的用于編寫點、線、面的類生成點、線、面對象;②使用Utility里面用來生成基本形體的geometry classes;③通過調(diào)用外部其他格式的三維圖形文件,生成復雜的三維形體對象。

        圖1 場景圖結(jié)構(gòu)

        Java3D提供了基本形體以及編寫點、線、面各種對象的應(yīng)用,這些可用在應(yīng)用程序之中構(gòu)造簡單的形體,然而復雜的形體則很難實現(xiàn)??梢酝ㄟ^調(diào)用其他格式的三維圖形文件獲得復雜形體,如直接調(diào)用VRML2.0、OBJ和 Lightwave格式的三維圖形文件,或者通過處理,間接調(diào)用DWG,DXF,3DS等格式的三維圖形文件。這些格式的三維模型可以很方便地應(yīng)用在Java3D程序中。

        2 機械臂虛擬場景Java3D實現(xiàn)

        四自由度機械臂的模型相對比較復雜,主要由基座、腰關(guān)節(jié)、肩關(guān)節(jié)、腕關(guān)節(jié)、肘關(guān)節(jié)等關(guān)節(jié)以及各連接手臂組成。復雜的形體一般很難通過編程直接實現(xiàn)建模。VRML和Java3D等建模語言由于受到模型復雜性的限制,一般只適用于建立一些相對比較簡單的基本模型或是由這些基本形體組成的規(guī)則模型。對于比較復雜的不規(guī)則模型(如機械臂模型),工作量相當大,并且難以實現(xiàn)精確建模。為了提高效率,研究者應(yīng)充分利用在工程設(shè)計過程中已經(jīng)大量存在的各種類型的CAD圖形文件。在比較多種格式的基礎(chǔ)上,本研究采用Java3D與VRML相結(jié)合的方式構(gòu)建機械臂三維虛擬場景。

        2.1 導入圖形文件的格式選擇

        Java3D 支持導入的常見文件格式有:wrl、obj、3ds。3ds文件不易控制模型材質(zhì)和組件,因而不適合作為模型文件格式。wrl與obj格式比較結(jié)果如下:

        (1)wrl文件遠小于obj文件,wrl文件大小不到obj的1/10,這樣大大提高了數(shù)據(jù)傳輸率。

        (2)wrl文件數(shù)據(jù)信息完整,obj文件不包含材質(zhì)信息,而wrl文件數(shù)據(jù)信息較完整,包含幾何模型數(shù)據(jù)和材質(zhì)數(shù)據(jù)。

        (3)wrl文件可用VRML語言進行優(yōu)化。

        可見,VRML作為虛擬現(xiàn)實建模語言[5],具有文件體積小、易于編輯、適于網(wǎng)絡(luò)傳送等特點。另外,大多數(shù)CAD軟件都支持靜態(tài)的三維零件的VRML格式輸出,例如UG、Pro/E等,或者提供了不同文件類型的轉(zhuǎn)換,如3DSMAX可以讀入DWG、3DS格式的文件,并把它們轉(zhuǎn)換成VRML2.0格式。因此本研究在對obj、3ds與wrl這3個文件格式進行比較基礎(chǔ)上,選擇wrl格式作為機械臂各關(guān)節(jié)模型的保存格式,用以后續(xù)導入到Java3D場景中。

        2.2 3DSMAX中建立各關(guān)節(jié)模型

        現(xiàn)在比較流行的三維建模軟件如 UG、Pro/E、3DSMAX等都提供VRML接口。UG和Pro/E支持VRML2.0格式,但輸出的 VRML代碼格式不規(guī)范。3DSMAX具有強大的建模功能,它提供的VRML97 Exporter可將創(chuàng)建的3D場景經(jīng)過優(yōu)化后轉(zhuǎn)換成標準的VRML格式直接加入到最終場景中,轉(zhuǎn)換后的VRML文件較3DS文件大大減小,從而降低了模型文件網(wǎng)絡(luò)傳輸時間。

        3DSMAX由于其獨特的優(yōu)點,本研究選用3DSMAX作為機械臂關(guān)節(jié)模型的創(chuàng)建工具。三維模型在最終導入Java3D之前還需要進行相關(guān)處理。本研究在3DSMAX里修改零件之間的鏈接關(guān)系,對需要旋轉(zhuǎn)的物體設(shè)置好旋轉(zhuǎn)軸,以便設(shè)置正確的運動關(guān)系,從而建立高質(zhì)量的虛擬原型,然后輸出Vrml97格式,利用Vrml97 Loader導入到Java3D虛擬空間中。

        四自由度機械臂主要部件有基座、腰關(guān)節(jié)、肩關(guān)節(jié)、肘關(guān)節(jié)、肘腕關(guān)節(jié)、腕關(guān)節(jié)等。各關(guān)節(jié)在3Dmax8.0中造型時以3DS格式保存,最終輸出對應(yīng)的VRML格式。以基座和二指手關(guān)節(jié)為例,3DSMAX創(chuàng)建并修改后得到的造型如圖2所示。

        圖2 機械臂關(guān)節(jié)的3DS模型

        2.3 Java3D對Vrml模型文件的導入

        Java3D 的 com.Sun.j3d.loaders包中包括 Loader和Scene兩個接口,在Java3D中調(diào)用不同格式的3D圖形文件,應(yīng)根據(jù)這兩個接口編寫自己的Loader類。在Java3D中使用VRML格式外部模型是通過Vrml97 Loader實現(xiàn)的,需先下載VRML97.jar,并設(shè)置好其路徑,通常放在“%JAVAHOME%lib”目錄中。導入時需要用到VrmlLoader和Scene兩個類,其中VrmlLoader提供了用于載入圖形文件的方法,Scene則用來容納載入的圖形。當Scene中賦以圖形對象后,可使用TransfomGroup對象裝載該圖形對象中的3D模型,以便后續(xù)裝配時對其進行方位調(diào)整。具體方法如下:

        (1)創(chuàng)建形體所在的局部坐標系:

        (2)設(shè)置VRML文件的導入接口:

        (3)將VRML造型添加到場景中:

        各關(guān)節(jié)的導入都基于以上原理,當在一個場景中多次調(diào)用外部的VRML文件時,本研究可以把用于處理調(diào)用問題的部分提取出來單獨作為一個類,以便多次重復使用。以基座和二指手關(guān)節(jié)為例,機械臂關(guān)節(jié)模型導入Java3D場景的相關(guān)程序運行結(jié)果如圖3所示,用以后續(xù)組合裝配成完整機械臂。

        圖3 機械臂關(guān)節(jié)的VRML模型導入Java3D場景

        2.4 關(guān)節(jié)模型的組合裝配

        機械臂作為一個裝配體,由各關(guān)節(jié)零件與手臂裝配而成。其中每個關(guān)節(jié)零件由 VRML造型,通過VRML97Loader轉(zhuǎn)換為對應(yīng)的BranchGroup對象后被添加到三維場景中;手臂造型則直接采用在Java3D場景中通過生成圓柱體這種基本形體的方法。

        當各關(guān)節(jié)完成建模并導入Java3D場景后,便可利用形體變換類 TransformGroup,Transform3D來組裝。本研究對每個單獨關(guān)節(jié)設(shè)置一個局部坐標系Trans-formGroup,然后根據(jù)各關(guān)節(jié)位置姿態(tài)利用Transform3D的方法將它們進行重組并建立鏈接關(guān)系。組裝時最關(guān)鍵的是使每一個部件自身運動對其他部件的影響正確體現(xiàn)出來,并且這些部件能夠正確動作。為此,需將動作從屬于A的部件B的transformGroupB加入到transformGroupA中,并使各個部件能繞正確的軸心轉(zhuǎn)動。

        構(gòu)建機械臂仿真模型的關(guān)鍵代碼如下:

        實驗室的機械臂實物模型如圖4所示。

        圖4 機械臂實體模型

        Java3D構(gòu)建的機械臂虛擬模型如圖5所示。

        圖5 Java3D機械臂虛擬模型

        3 簡單人機交互實現(xiàn)

        導入VRML造型文件到Java3D場景后,便可利用Java3D非常完善的API進行相關(guān)操作,使三維程序?qū)崿F(xiàn)所需的人機交互行為。

        3.1 Java3D動畫與交互技術(shù)

        Java3D中可以利用一系列Interpolator內(nèi)插器對象與Alpha對象結(jié)合來編寫各種三維應(yīng)用動畫程序。其中Alpha對象提供了時間控制環(huán)節(jié),內(nèi)插器定義了三維形體如何在空間做運動[6]。

        對于虛擬仿真而言,交互是必不可少的,Java3D中可以利用Java事件處理機制實現(xiàn)交互[7],也可通過Behavior類的子類來實現(xiàn)交互。設(shè)計者利用Java3D提供的鼠標、鍵盤交互等技術(shù)就可以實現(xiàn)簡單的人機交互,也可對Java 3D里已存在的行為類改寫[8],以滿足自身特定需要,實現(xiàn)進一步的復雜人機交互。

        3.2 Java3D實現(xiàn)機械臂簡單人機交互

        Java3D 中的 MouseZoom、MouseRotate、MouseTranslate、MouseWheelZoom、KeyNavigator類可以實現(xiàn)鼠標、鍵盤對構(gòu)建的機械臂運動仿真三維虛擬場景進行漫游,關(guān)鍵代碼如下:

        4 運動學分析與仿真實現(xiàn)

        機械臂的三維運動仿真是以正、逆運動學為基礎(chǔ)[9],仿真需要得到機械臂正、逆運動學方程。位置逆解問題是最重要的研究問題,它直接關(guān)系到機械臂離線編程、軌跡規(guī)劃和實時控制等工作。本研究采用標準D-H參數(shù)法建立機械臂正運動學模型,用解析法推導出逆運動學模型,為后續(xù)仿真奠定基礎(chǔ)。

        4.1 機械臂正運動學建模

        已知各關(guān)節(jié)角度求末端執(zhí)行器位置,稱為正向運動學[10]。兩桿間位姿矩陣是求手部位姿矩陣的基礎(chǔ),從基坐標系到末端連桿坐標系順序相乘可得到機器人的運動學方程。

        D-H法建立兩桿間位姿變換矩陣[11]為:

        本研究對所研究的四自由度機械臂各關(guān)節(jié)建立坐標系,并采用簡化的線模型表示,機械臂關(guān)節(jié)坐標如圖6所示。

        圖6 機械臂關(guān)節(jié)坐標系

        本研究根據(jù)表1中D-H參數(shù)建立相鄰關(guān)節(jié)間變換矩陣,然后相乘,最后得到正運動學方程。

        表1 機械臂D-H參數(shù)表

        正運動學方程為:

        4.2 機械臂逆運動學建模

        已知機械臂末端位姿求解各關(guān)節(jié)的角度值θ1,θ2,θ3,θ4,稱為運動反解。采用矩陣逆乘法求得機械臂運動學逆解為:

        計算出所有可能解后,由于關(guān)節(jié)運動范圍限制,本研究對某些解(甚至所有解)進行剔除,以選取最接近當前操作臂的解[12]。

        4.3 運動學仿真功能模塊實現(xiàn)

        對機械臂的正、逆運動學分析與求解后,即可在Java中實現(xiàn)四自由度機械臂正、逆運動學的相關(guān)仿真。采用Java Swing技術(shù)開發(fā)的運動學仿真界面及本研究具體的運動學仿真模塊如圖7所示。當機械臂末端位置取值為(800,0,349)時,仿真可得機械臂4個關(guān)節(jié)角度值分別為0.000,-45.007,-67.229,22.236。

        圖7 機械臂運動學仿真

        正運動學仿真實現(xiàn)的關(guān)鍵代碼如下:

        逆運動學仿真實現(xiàn)的關(guān)鍵代碼如下:

        5 結(jié)束語

        通過應(yīng)用Java3D可以開發(fā)出具有高度視覺真實感的3D圖形應(yīng)用程序。該程序可成為Applet被插入到HTML中用支持Java的網(wǎng)頁瀏覽器進行操作,并在瀏覽器上實現(xiàn)瀏覽或交互,以及實現(xiàn)基于Web的特點。它的最大優(yōu)勢在于代碼的可傳輸性,生成的可視化場景由服務(wù)器方便地傳輸給客戶端,然后在客戶端本地運行。正因為如此,結(jié)合VRML文件的通用性和Java3D對三維場景強大的操作性及跨平臺性,Java3D被用來在網(wǎng)頁上構(gòu)造動態(tài)的三維世界和虛擬現(xiàn)實。構(gòu)建基于Java3D的網(wǎng)絡(luò)交互式三維虛擬環(huán)境對開發(fā)機械臂運動仿真系統(tǒng)具有很大的意義。

        下一步,本研究將充分發(fā)揮Java 3D在網(wǎng)絡(luò)三維仿真領(lǐng)域的強大優(yōu)勢,繼續(xù)深化Java3D機械臂仿真系統(tǒng)的開發(fā)。

        [1]SUN Inc..Java3D/Tutorial[EB/OL].[2005 - 05 - 07].http://java.sun.com/products/java-media/java 3D.

        [2]都志輝.Java3D編程實踐 -網(wǎng)絡(luò)上的三維動畫[M].2版.北京:清華大學出版社,2002.

        [3]張 杰.Java3D交互式三維圖形編程[M].3版.北京:人民郵電出版社,1999.

        [4]鮑彥如,任長明.Java3D實現(xiàn)VRML瀏覽器新途徑[J].計算機應(yīng)用研究,2001,12(2):23-25.

        [5]黃鐵軍,柳 健.VRML國際標準與應(yīng)用指南[M].北京:電子工業(yè)出版社,1999.

        [6]李 敏,丁友東.Java圖形與動畫編程實例[M].北京:清華大學出版社,2003.

        [7]王 鵬,何昀峰.Java Swing圖形界面開發(fā)與案例詳解[M].北京:清華大學出版社,2008.

        [8]鄧文生,馬王俊美.Java3D擴展鼠標交互功能的研究與實現(xiàn)[J].計算機仿真,2007,4(3):176-179.

        [9]蔡自興.機器人學[M].北京:清華大學出版社,2000.

        [10]王庭樹.機器人運動學及動力學[M].西安:西安電子科技大學出版社,1990.

        [11]侯國柱,孔慶忠.關(guān)節(jié)型機械臂運動學分析及雅可比矩陣求解[J].寧夏工程技術(shù),2007,5(4):36-38.

        [12]姜宏超,劉士榮,張波濤.六自由度模塊化機械臂的逆運動學分析[J].浙江大學學報:工學版,2010,44(7):1348-1354.

        猜你喜歡
        運動學形體建模
        聯(lián)想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
        基于MATLAB的6R機器人逆運動學求解分析
        基于D-H法的5-DOF串并聯(lián)機床運動學分析
        基于PSS/E的風電場建模與動態(tài)分析
        電子制作(2018年17期)2018-09-28 01:56:44
        不對稱半橋變換器的建模與仿真
        西夏文形體研究述略
        西夏學(2017年2期)2017-10-24 05:35:08
        雞霉形體
        基于運動學原理的LBI解模糊算法
        早期形體訓練對產(chǎn)婦產(chǎn)后形體恢復的積極效果
        雙足機器人運動學分析與仿真
        国产日产精品_国产精品毛片| 久久久9色精品国产一区二区三区 国产三级黄色片子看曰逼大片 | 国产一区二区资源在线观看| 又黄又爽又色视频| 国产精品无码a∨精品影院| 伊人久久亚洲综合影院首页| 一本之道加勒比在线观看| 久久精品中文字幕女同免费| 久久精品噜噜噜成人| 国产欧美一区二区成人影院| 水野优香中文字幕av网站| 久久久久九九精品影院| 天堂影院一区二区三区四区| 亚洲高清视频在线播放| 天堂久久一区二区三区| 国产精品无码无卡无需播放器| 国产精品国产三级国产av′| 国产欧美久久久精品影院| 色婷婷精品午夜在线播放| 成人亚洲精品777777| 暖暖免费 高清 日本社区在线观看| 无遮挡很爽视频在线观看 | 天天影视性色香欲综合网| 91天堂素人精品系列全集亚洲| 伊人狼人影院在线视频| 亚洲综合网国产精品一区| 国内a∨免费播放| 国产精品久久久久免费看| 亚洲精品国产一区二区免费视频 | 狠狠久久亚洲欧美专区| 亚洲av乱码国产精品色| 青青草国产手机观看视频| 被黑人猛躁10次高潮视频| 丝袜美女污污免费观看的网站| 国产激情小视频在线观看的| 亚洲av永久无码精品一福利 | 国产免费一区二区三区三| 人妻丝袜中文无码av影音先锋专区| 国产精品人妻一区夜夜爱| 久久久9色精品国产一区二区三区| 日本熟女人妻一区二区|