軟件的初始化 - 移動機(jī)器人3D仿真軟件的設(shè)計(jì)

來源:微型機(jī)與應(yīng)用2011年第4期 作者:劉潤丹, 王 華,2011年06月03日 11:50
[導(dǎo)讀] (1)軟件的初始化 軟件的初始化工作主要包括:從配置文件讀入移動機(jī)器人的數(shù)量、軟件運(yùn)行時(shí)所需文件的路徑和繪制窗口大小等參數(shù);導(dǎo)入虛擬場景所需的
(1)軟件的初始化

  軟件的初始化工作主要包括:從配置文件讀入移動機(jī)器人的數(shù)量、軟件運(yùn)行時(shí)所需文件的路徑和繪制窗口大小等參數(shù);導(dǎo)入虛擬場景所需的素材,如聲音、紋理和3ds模型等,本文采用lib3ds庫來讀取3ds文件[6];初始化ODBC 接口,獲取ODBC 環(huán)境句柄,實(shí)現(xiàn)進(jìn)程與數(shù)據(jù)庫的數(shù)據(jù)交互;初始化游戲手柄和UDP通信網(wǎng)絡(luò);初始化ODE環(huán)境,創(chuàng)建動力學(xué)環(huán)境和碰撞檢測空間,創(chuàng)建移動機(jī)器人和仿真場景。

  (2)物體運(yùn)動參數(shù)的接收

  在仿真循環(huán)中,利用UDP協(xié)議實(shí)現(xiàn)本地進(jìn)程與其他進(jìn)程之間的通信,該軟件也可以從鍵盤、游戲手柄和網(wǎng)絡(luò)數(shù)據(jù)庫讀入機(jī)器人的動作指令。

  (3)物體碰撞檢測

  本文將與物理引擎有關(guān)的操作函數(shù)封裝成動態(tài)鏈接庫,通過使用動態(tài)鏈接庫技術(shù),軟件可以實(shí)現(xiàn)模塊化,即由相對獨(dú)立的組件來組成整個(gè)軟件。這簡化了軟件項(xiàng)目的管理,而且能夠節(jié)省內(nèi)存,也有助于資源共享和代碼更新移植。

  ODE 的碰撞檢測引擎需要給定兩個(gè)物體的形狀信息。在每一仿真循環(huán)中,調(diào)用dSpaceCollide函數(shù)獲取可能發(fā)生接觸的物體,再由該函數(shù)指定的碰撞回調(diào)函數(shù)nearCallback將接觸點(diǎn)信息傳給用戶。由此,用戶可根據(jù)自身需要建立物體間的碰撞連接點(diǎn),每個(gè)連接點(diǎn)都有相應(yīng)的dContactGeom 結(jié)構(gòu),該結(jié)構(gòu)保存著碰撞點(diǎn)的位置和兩個(gè)物體互相進(jìn)入對方的深度。為了提高仿真速度,軟件使用較少的關(guān)節(jié)和較少的接觸面,如果條件允許,也可以使用無摩擦或者粘性接觸面。下面給出碰撞回調(diào)函數(shù)中關(guān)于接觸面的參數(shù)設(shè)置:

  surface.mu=3.0; //庫侖摩擦力系數(shù)

  surface.mu2=0.0; //庫侖摩擦力系數(shù)2

  surface.slip1=0.05; //摩擦力1方向的滑動摩擦力

  surface.slip2=0.05; //摩擦力2方向的滑動摩擦力

  surface.bounce=0.9; //反彈系數(shù)

  surface.bounce_vel=1.0; //反彈所需要的最小碰撞速度

  surface.soft_erp=0.2; //接觸點(diǎn)法線方向“柔軟”參數(shù)

  surface.soft_cfm=1e-4; //接觸點(diǎn)法線方向"柔軟"參數(shù)

  (4)三維圖形繪制

  在仿真軟件中,與繪制圖形有關(guān)的操作函數(shù)都被封裝成動態(tài)鏈接庫,該動態(tài)鏈接庫只向仿真軟件提供若干個(gè)接口,如在繪制機(jī)器人時(shí),只需根據(jù)機(jī)器人的不同部位,設(shè)定相應(yīng)的繪制參數(shù),然后輪流調(diào)用dsDrawCylinder、dsDrawBox兩個(gè)函數(shù)即可實(shí)現(xiàn),dsDrawCylinder函數(shù)的輸入?yún)?shù)分別為物體位置、朝向、長度和半徑,而dsDrawBox函數(shù)的輸入?yún)?shù)為位置、朝向和尺寸;在繪制從x文件和3ds文件導(dǎo)入的三維模型時(shí),只需調(diào)用dsDrawTriangleD函數(shù)即可。

  4 仿真實(shí)例

  本文在VS2008平臺上開發(fā)仿真軟件,ODE版本為0.9,OpenGL版本為1.0,軟件為控制臺程序。

  在檢驗(yàn)路徑規(guī)劃算法或避障算法時(shí),可先創(chuàng)建一個(gè)虛擬足球場,再設(shè)定機(jī)器人初始位置的絕對坐標(biāo)為(-9.0,-5.0),目的地絕對坐標(biāo)為(5.5,5.0),并在路徑的中間布置8個(gè)或更多的障礙物,障礙物直徑為50 cm,其位置參數(shù)可以人為指定,也可以隨機(jī)產(chǎn)生,然后在虛擬場景的二維地圖上,以宏觀鳥瞰的遠(yuǎn)程視野,對避障算法的仿真結(jié)果進(jìn)行觀察、比較和分析,仿真效果如圖4所示。若需了解算法運(yùn)行的細(xì)節(jié),可以直接觀察3D環(huán)境的仿真過程,或通過分析記錄下的仿真數(shù)據(jù)來比較算法的優(yōu)劣。而在檢驗(yàn)多機(jī)器人協(xié)作算法時(shí),可同時(shí)利用三維環(huán)境和二維全局地圖來對算法性能進(jìn)行比較,以由多個(gè)移動機(jī)器人組成的足球隊(duì)為例,移動機(jī)器人需按照協(xié)作算法來實(shí)現(xiàn)站位[7]。

  

 

  此外,在采用PID控制算法對機(jī)器人位置進(jìn)行控制時(shí),有比例增益、微分增益和積分增益三個(gè)參數(shù)需要整定測試[8],此時(shí),可以利用仿真軟件對參數(shù)進(jìn)行步估計(jì)。實(shí)驗(yàn)方法是:先設(shè)定初始位置和目的地位置,然后讓機(jī)器人以最快速度向目的地移動,當(dāng)?shù)竭_(dá)目的地后,就停止不動。在機(jī)器人移動過程中,記錄下機(jī)器人在每一仿真步驟中的位姿(x,y,θ)T,并將位姿數(shù)據(jù)歸一化,以便能夠?qū)⑷S的向量繪制在同一坐標(biāo)系下,同時(shí)記錄機(jī)器人走完設(shè)定路徑所需的時(shí)間。圖5(a)為采用比例控制算法的機(jī)器人位姿變化軌跡,機(jī)器人走完該路徑所需時(shí)間為16.239 s,圖5(b)為采用比例-微分控制算法的變化軌跡,所需時(shí)間為14.026 s。從圖5的結(jié)果可看出,采用比例控制算法的系統(tǒng)輸出無超調(diào),而采用比例-微分控制算法的系統(tǒng),其控制目標(biāo)會出現(xiàn)微小超調(diào),但機(jī)器人的響應(yīng)速度明顯提高,尤其是機(jī)器人朝向角的控制,能夠更加快速準(zhǔn)確地跟隨給定值。

  

 

  在移動機(jī)器人控制技術(shù)和多機(jī)器人協(xié)作技術(shù)的研究中,為了能夠?qū)λ惴▍?shù)進(jìn)行有效檢驗(yàn)和測試,本文利用ODE、OpengGL和VS2008開發(fā)出移動機(jī)器人仿真軟件。該軟件采用ODE生成動力學(xué)世界和模擬物體碰撞,充分利用了ODE的快速性和精確性,仿真軟件還采用高效的圖形接口OpenGL來繪制圖形,提高軟件的圖形處理能力,改善圖形顯示效果。仿真實(shí)例證明,該軟件具有較好的擴(kuò)展性和實(shí)用性。

上一頁123

本文導(dǎo)航

相關(guān)閱讀

發(fā)表評論
技術(shù)交流、積極發(fā)言! 發(fā)表評請遵守相關(guān)規(guī)定。

0 條評論

推薦閱讀

每月人物

正面迎戰(zhàn)智慧家庭:從稱體重到“稱”健康,芯海智慧測量全包了!

正面迎戰(zhàn)智慧家庭:從稱體重到“稱”健康,芯海智慧測量全包
隨著科技的發(fā)展,人們對生活質(zhì)量的追求越來越高,傳統(tǒng)的家庭生活方式已經(jīng)無法滿足現(xiàn)代人的家居生活,智慧家庭的新型生活理念成為很多人夢寐以求的...

依托AI平臺,涂鴉智能開啟全屋智能2.0時(shí)代!

依托AI平臺,涂鴉智能開啟全屋智能2.0時(shí)代!
隨著物聯(lián)網(wǎng)技術(shù)的突飛猛進(jìn),生活中越來越多的家庭設(shè)備將會聯(lián)上網(wǎng)絡(luò),變得“智慧”起來,智慧家庭的概念成了這幾年媒體、企業(yè)、用戶關(guān)注的焦點(diǎn),而...

每周排行

  • 型 號
  • 產(chǎn)品描述