<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 移動(dòng)機(jī)器人3D仿真軟件的設(shè)計(jì)

          移動(dòng)機(jī)器人3D仿真軟件的設(shè)計(jì)

          作者: 時(shí)間:2011-06-03 來(lái)源:網(wǎng)絡(luò) 收藏

          技術(shù)研究中,為了提高控制算法的開(kāi)發(fā)效率,提出三維方案并加以實(shí)現(xiàn)。該采用ODE物理引擎生成動(dòng)力學(xué)世界和實(shí)現(xiàn)碰撞檢測(cè),提高了速度和精確度,同時(shí)采用OpenGL繪制三維圖形,改善了圖形顯示效果。實(shí)例證明,該具有一定的實(shí)用價(jià)值。

          本文引用地址:http://www.ex-cimer.com/article/162000.htm

            1 軟件特性

            (1)采用基于面向?qū)ο蠹夹g(shù)實(shí)現(xiàn),軟件操作簡(jiǎn)單,易于維護(hù)和功能擴(kuò)展;

            (2)可以導(dǎo)入x格式和3ds格式的三維模型文件;

            (3)允許物體同時(shí)實(shí)現(xiàn)多個(gè)操作,在每個(gè)運(yùn)動(dòng)方向都有加速度、減速度和最大速度等運(yùn)動(dòng)屬性;實(shí)現(xiàn)碰撞檢測(cè)、機(jī)器人和虛擬場(chǎng)景的圖形化顯示;

            (4)支持實(shí)時(shí)調(diào)試功能; 動(dòng)畫(huà)和仿真計(jì)算結(jié)果同步且真實(shí)對(duì)應(yīng);繪制仿真環(huán)境的二維地圖和物體運(yùn)動(dòng)軌跡。

            (5)提供與外部軟件連接的接口,即可以通過(guò)ODBC與外部數(shù)據(jù)庫(kù)相連,或通過(guò)Socket接口與外部設(shè)備相連,實(shí)現(xiàn)進(jìn)程之間的通信;

            (6)軟件接口的多樣性和擴(kuò)展性,即可通過(guò)游戲手柄、鍵盤(pán)來(lái)輸入控制信息、模型參數(shù)和仿真參數(shù)等;仿真數(shù)據(jù)的保存輸出。

            

            其中,速度比例系數(shù)k=0.035,線速度單位為m/s,角速度單位為rad/s。

            

          2.2 三維物體建模

            ODE物理引擎提供球體、盒子、膠囊、平面和圓柱等幾何體。在創(chuàng)建出一個(gè)幾何體后,其中心一般落在仿真環(huán)境坐標(biāo)系的原點(diǎn)上。在對(duì)移動(dòng)機(jī)器人進(jìn)行建模時(shí),需要使用盒子和圓柱兩種幾何體,盒子需要指定3個(gè)參數(shù),即長(zhǎng)、高、寬;對(duì)于圓柱而言,則需指定長(zhǎng)度和半徑2個(gè)參數(shù)。在動(dòng)力學(xué)世界中,以Geom代表物體幾何體,以Body代表虛擬場(chǎng)景中的對(duì)象。軟件可以通過(guò)調(diào)用ODE內(nèi)部函數(shù)來(lái)檢測(cè)幾何體和對(duì)象的對(duì)應(yīng)關(guān)系,也有函數(shù)用于檢測(cè)對(duì)象之間是否存在連接。下面以創(chuàng)建盒子物體為例,說(shuō)明單個(gè)物體的建模方法。

            首先調(diào)用dBodyCreate函數(shù)創(chuàng)建出給定空間中的剛體對(duì)象,再調(diào)用dBodySetPosition和dBodySetRotation兩個(gè)函數(shù),調(diào)整該對(duì)象在空間中的位姿,接著調(diào)用dMassSetBoxTotal和dBodySetMass兩個(gè)函數(shù)設(shè)定該對(duì)象的質(zhì)量屬性,最后調(diào)用dCreateBox函數(shù)創(chuàng)建相應(yīng)尺寸的盒子幾何體,并調(diào)用dGeomSetBody函數(shù)將該幾何體與對(duì)象關(guān)聯(lián)起來(lái)。

            在創(chuàng)建出單個(gè)對(duì)象后,往往需要利用各種關(guān)節(jié)將不同對(duì)象連接起來(lái)。ODE物理引擎提供5種類型的關(guān)節(jié),分別為鉸鏈型、球-球窩型、滑竿柱型、固定型和鉸鏈2型等。其中鉸鏈型為合頁(yè)關(guān)節(jié),滑竿柱型為插銷關(guān)節(jié),鉸鏈2型則是帶有軸的關(guān)節(jié),這些關(guān)節(jié)都有內(nèi)置的馬達(dá)。本文選用鉸鏈關(guān)節(jié)來(lái)連接驅(qū)動(dòng)輪和機(jī)器人車體,采用固定關(guān)節(jié)構(gòu)建機(jī)器人車體結(jié)構(gòu)。下面以使用鉸鏈關(guān)節(jié)連接兩個(gè)對(duì)象為例,說(shuō)明創(chuàng)建關(guān)節(jié)的方法。

            在調(diào)用dJointCreateHinge函數(shù)創(chuàng)建鉸鏈關(guān)節(jié)對(duì)象后,再調(diào)用dJointAttach函數(shù)指定用該關(guān)節(jié)連接的兩個(gè)物體對(duì)象,然后調(diào)用dJointSetHingeAnchor函數(shù)設(shè)定旋轉(zhuǎn)軸的中心點(diǎn)坐標(biāo),并調(diào)用dJointSetHingeAxis設(shè)定旋轉(zhuǎn)軸的方向。

            為了讓剛體對(duì)象能夠在仿真環(huán)境中運(yùn)動(dòng)起來(lái),ODE提供了3種方法: (1)調(diào)用dBodyAddForce、dBodyAddTorque等函數(shù)給剛體施加力的作用; (2)調(diào)用dJointSetHingeParam

            函數(shù)來(lái)改變內(nèi)置馬達(dá)的轉(zhuǎn)速,同時(shí)需指定該函數(shù)的第二個(gè)輸入?yún)?shù)為dParamVel; (3)調(diào)用dBodySetLinearVel和dBodySetAngularVel兩個(gè)函數(shù)直接給物體設(shè)定線速度和角速度。

            此外,在ODE仿真環(huán)境中,可通過(guò)兩種方式來(lái)模擬彈簧-阻尼系統(tǒng): (1)通過(guò)設(shè)置ERP(Error Reduction Parameter)和CFM(Constraint Force Mixing)兩個(gè)參數(shù)來(lái)實(shí)現(xiàn),ERP為每一仿真循環(huán)中的修正誤差,取值范圍為0~0.8,默認(rèn)取值為0.2;CFM代表物理引擎的全局混合約束力,它反映物體表面的柔軟程度,其取值范圍為10e-9~1;(2)利用動(dòng)力學(xué)方程來(lái)求解,即胡克定律:

            

            其中γ為阻尼系數(shù),它與物體的形狀以及周圍性質(zhì)有關(guān)。

            綜上所述,典型ODE仿真過(guò)程為[6]:

            (1)生成一個(gè)動(dòng)力學(xué)世界,并在該世界中創(chuàng)建物體;

            (2)設(shè)置物體狀態(tài)(如質(zhì)量、質(zhì)心位置和姿態(tài)等),并在動(dòng)力學(xué)世界中創(chuàng)建關(guān)節(jié);

            (3)將關(guān)節(jié)與物體綁定起來(lái),為所有的關(guān)節(jié)設(shè)置參數(shù);

            (4)生成碰撞檢測(cè)空間,并為需要作碰撞檢測(cè)的物體生成碰撞幾何體;創(chuàng)建一個(gè)容納關(guān)節(jié)的關(guān)節(jié)組;

            (5)循環(huán)處理過(guò)程:

            ①在物體上施加力;

           ?、诟鶕?jù)需要調(diào)整關(guān)節(jié)參數(shù);

           ?、壅{(diào)用碰撞檢測(cè),得到碰撞點(diǎn)和碰撞的物體;

           ?、転槊總€(gè)碰撞點(diǎn)的碰撞創(chuàng)建一個(gè)接觸關(guān)節(jié),并將其放入關(guān)節(jié)組;

           ?、輬?zhí)行一個(gè)仿真步驟;

           ?、耷蹇战佑|關(guān)節(jié)組中的關(guān)節(jié);

            (6)銷毀動(dòng)力學(xué)世界和碰撞世界。

            2.3 三維圖形的繪制

            OpenGL繪制圖形的基本操作步驟[4]:

            (1)設(shè)置像素格式:設(shè)定OpenGL繪制風(fēng)格、顏色模式和顏色位數(shù)等重要信息。

            (2)建立模型:根據(jù)基本圖元建立景物的三維模型,并對(duì)模型進(jìn)行數(shù)學(xué)描述。

            (3)舞臺(tái)布置:把景物放置在三維空間的適當(dāng)位置,設(shè)置視點(diǎn)、視角和投影模型等。

            (4)效果處理:設(shè)置物體的材質(zhì),加入光照及光照條件。

            (5)光柵化:把景物及其顏色信息轉(zhuǎn)化為可在計(jì)算機(jī)屏幕上顯示的像素信息。

            在繪制圖形時(shí),需注意坐標(biāo)系的變換,否則很容易導(dǎo)致繪制失敗。OpenGL定義了兩個(gè)坐標(biāo)系:世界坐標(biāo)系和當(dāng)前繪圖坐標(biāo)系。世界坐標(biāo)系是固定不變的,規(guī)定以屏幕中心為原點(diǎn),面對(duì)顯示終端,向右為x正軸,向上為y正軸,向終端外面為z正軸。當(dāng)前繪圖坐標(biāo)系是繪制物體時(shí)的參考坐標(biāo)系。仿真軟件完成初始化后,世界坐標(biāo)系與當(dāng)前繪圖坐標(biāo)系是重合的。在調(diào)用glTranslatef、glRotate等變換函數(shù)對(duì)繪圖坐標(biāo)系進(jìn)行平移和旋轉(zhuǎn)后,繪圖坐標(biāo)系會(huì)在原來(lái)的基礎(chǔ)上做出相應(yīng)改變。此時(shí),若調(diào)用gluSphere、glVertex3f等繪圖函數(shù),繪圖函數(shù)是在改變之后的繪圖坐標(biāo)系上進(jìn)行繪制。如若要讓繪圖坐標(biāo)系與世界坐標(biāo)系再次重合,可以調(diào)用glLoadIdentity函數(shù)。此外,可以調(diào)用glColor3f(r,g,b)函數(shù)設(shè)置繪圖函數(shù)所使用的顏色,如果沒(méi)有再次調(diào)用該函數(shù),則繪制出的圖形顏色將保持原先顏色不變,rgb三個(gè)顏色分量的取值范圍為0.0~1.0。

            3 軟件框架

            軟件框架及其處理流程如圖2所示,軟件仿真循環(huán)的處理流程如圖3所示,下面簡(jiǎn)述主要處理過(guò)程的實(shí)現(xiàn)思路及方法:

            


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();