移動(dòng)機器人3D仿真軟件的設計
在機器人技術(shù)研究中,為了提高機器人控制算法的開(kāi)發(fā)效率,提出移動(dòng)機器人三維仿真軟件的設計方案并加以實(shí)現。該軟件采用ODE物理引擎生成動(dòng)力學(xué)世界和實(shí)現碰撞檢測,提高了仿真速度和精確度,同時(shí)采用OpenGL繪制三維圖形,改善了圖形顯示效果。仿真實(shí)例證明,該軟件具有一定的實(shí)用價(jià)值。
本文引用地址:http://dyxdggzs.com/article/162000.htm 1 軟件特性
(1)采用基于面向對象技術(shù)實(shí)現,軟件操作簡(jiǎn)單,易于維護和功能擴展;
(2)可以導入x格式和3ds格式的三維模型文件;
(3)允許物體同時(shí)實(shí)現多個(gè)移動(dòng)操作,在每個(gè)運動(dòng)方向都有加速度、減速度和最大速度等運動(dòng)屬性;實(shí)現碰撞檢測、移動(dòng)機器人和虛擬場(chǎng)景的圖形化顯示;
(4)支持實(shí)時(shí)調試功能; 3D動(dòng)畫(huà)和仿真計算結果同步且真實(shí)對應;繪制仿真環(huán)境的二維地圖和物體運動(dòng)軌跡。
(5)提供與外部軟件連接的接口,即可以通過(guò)ODBC與外部數據庫相連,或通過(guò)Socket接口與外部設備相連,實(shí)現進(jìn)程之間的通信;
(6)軟件接口的多樣性和擴展性,即可通過(guò)游戲手柄、鍵盤(pán)來(lái)輸入控制信息、模型參數和仿真參數等;仿真數據的保存輸出。

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

2.2 三維物體建模
ODE物理引擎提供球體、盒子、膠囊、平面和圓柱等幾何體。在創(chuàng )建出一個(gè)幾何體后,其中心一般落在仿真環(huán)境坐標系的原點(diǎn)上。在對移動(dòng)機器人進(jìn)行建模時(shí),需要使用盒子和圓柱兩種幾何體,盒子需要指定3個(gè)參數,即長(cháng)、高、寬;對于圓柱而言,則需指定長(cháng)度和半徑2個(gè)參數。在動(dòng)力學(xué)世界中,以Geom代表物體幾何體,以Body代表虛擬場(chǎng)景中的對象。軟件可以通過(guò)調用ODE內部函數來(lái)檢測幾何體和對象的對應關(guān)系,也有函數用于檢測對象之間是否存在連接。下面以創(chuàng )建盒子物體為例,說(shuō)明單個(gè)物體的建模方法。
首先調用dBodyCreate函數創(chuàng )建出給定空間中的剛體對象,再調用dBodySetPosition和dBodySetRotation兩個(gè)函數,調整該對象在空間中的位姿,接著(zhù)調用dMassSetBoxTotal和dBodySetMass兩個(gè)函數設定該對象的質(zhì)量屬性,最后調用dCreateBox函數創(chuàng )建相應尺寸的盒子幾何體,并調用dGeomSetBody函數將該幾何體與對象關(guān)聯(lián)起來(lái)。
在創(chuàng )建出單個(gè)對象后,往往需要利用各種關(guān)節將不同對象連接起來(lái)。ODE物理引擎提供5種類(lèi)型的關(guān)節,分別為鉸鏈型、球-球窩型、滑竿柱型、固定型和鉸鏈2型等。其中鉸鏈型為合頁(yè)關(guān)節,滑竿柱型為插銷(xiāo)關(guān)節,鉸鏈2型則是帶有軸的關(guān)節,這些關(guān)節都有內置的馬達。本文選用鉸鏈關(guān)節來(lái)連接驅動(dòng)輪和機器人車(chē)體,采用固定關(guān)節構建機器人車(chē)體結構。下面以使用鉸鏈關(guān)節連接兩個(gè)對象為例,說(shuō)明創(chuàng )建關(guān)節的方法。
在調用dJointCreateHinge函數創(chuàng )建鉸鏈關(guān)節對象后,再調用dJointAttach函數指定用該關(guān)節連接的兩個(gè)物體對象,然后調用dJointSetHingeAnchor函數設定旋轉軸的中心點(diǎn)坐標,并調用dJointSetHingeAxis設定旋轉軸的方向。
為了讓剛體對象能夠在仿真環(huán)境中運動(dòng)起來(lái),ODE提供了3種方法: (1)調用dBodyAddForce、dBodyAddTorque等函數給剛體施加力的作用; (2)調用dJointSetHingeParam
函數來(lái)改變內置馬達的轉速,同時(shí)需指定該函數的第二個(gè)輸入參數為dParamVel; (3)調用dBodySetLinearVel和dBodySetAngularVel兩個(gè)函數直接給物體設定線(xiàn)速度和角速度。
此外,在ODE仿真環(huán)境中,可通過(guò)兩種方式來(lái)模擬彈簧-阻尼系統: (1)通過(guò)設置ERP(Error Reduction Parameter)和CFM(Constraint Force Mixing)兩個(gè)參數來(lái)實(shí)現,ERP為每一仿真循環(huán)中的修正誤差,取值范圍為0~0.8,默認取值為0.2;CFM代表物理引擎的全局混合約束力,它反映物體表面的柔軟程度,其取值范圍為10e-9~1;(2)利用動(dòng)力學(xué)方程來(lái)求解,即胡克定律:

其中γ為阻尼系數,它與物體的形狀以及周?chē)再|(zhì)有關(guān)。
綜上所述,典型ODE仿真過(guò)程為[6]:
(1)生成一個(gè)動(dòng)力學(xué)世界,并在該世界中創(chuàng )建物體;
(2)設置物體狀態(tài)(如質(zhì)量、質(zhì)心位置和姿態(tài)等),并在動(dòng)力學(xué)世界中創(chuàng )建關(guān)節;
(3)將關(guān)節與物體綁定起來(lái),為所有的關(guān)節設置參數;
(4)生成碰撞檢測空間,并為需要作碰撞檢測的物體生成碰撞幾何體;創(chuàng )建一個(gè)容納關(guān)節的關(guān)節組;
(5)循環(huán)處理過(guò)程:
?、僭谖矬w上施加力;
?、诟鶕枰{整關(guān)節參數;
?、壅{用碰撞檢測,得到碰撞點(diǎn)和碰撞的物體;
?、転槊總€(gè)碰撞點(diǎn)的碰撞創(chuàng )建一個(gè)接觸關(guān)節,并將其放入關(guān)節組;
?、輬绦幸粋€(gè)仿真步驟;
?、耷蹇战佑|關(guān)節組中的關(guān)節;
(6)銷(xiāo)毀動(dòng)力學(xué)世界和碰撞世界。
2.3 三維圖形的繪制
OpenGL繪制圖形的基本操作步驟[4]:
(1)設置像素格式:設定OpenGL繪制風(fēng)格、顏色模式和顏色位數等重要信息。
(2)建立模型:根據基本圖元建立景物的三維模型,并對模型進(jìn)行數學(xué)描述。
(3)舞臺布置:把景物放置在三維空間的適當位置,設置視點(diǎn)、視角和投影模型等。
(4)效果處理:設置物體的材質(zhì),加入光照及光照條件。
(5)光柵化:把景物及其顏色信息轉化為可在計算機屏幕上顯示的像素信息。
在繪制圖形時(shí),需注意坐標系的變換,否則很容易導致繪制失敗。OpenGL定義了兩個(gè)坐標系:世界坐標系和當前繪圖坐標系。世界坐標系是固定不變的,規定以屏幕中心為原點(diǎn),面對顯示終端,向右為x正軸,向上為y正軸,向終端外面為z正軸。當前繪圖坐標系是繪制物體時(shí)的參考坐標系。仿真軟件完成初始化后,世界坐標系與當前繪圖坐標系是重合的。在調用glTranslatef、glRotate等變換函數對繪圖坐標系進(jìn)行平移和旋轉后,繪圖坐標系會(huì )在原來(lái)的基礎上做出相應改變。此時(shí),若調用gluSphere、glVertex3f等繪圖函數,繪圖函數是在改變之后的繪圖坐標系上進(jìn)行繪制。如若要讓繪圖坐標系與世界坐標系再次重合,可以調用glLoadIdentity函數。此外,可以調用glColor3f(r,g,b)函數設置繪圖函數所使用的顏色,如果沒(méi)有再次調用該函數,則繪制出的圖形顏色將保持原先顏色不變,rgb三個(gè)顏色分量的取值范圍為0.0~1.0。
3 軟件框架
軟件框架及其處理流程如圖2所示,軟件仿真循環(huán)的處理流程如圖3所示,下面簡(jiǎn)述主要處理過(guò)程的實(shí)現思路及方法:

評論