團隊專案開發日誌(三)

2022-08-15 01:00:11 字數 796 閱讀 3723

在ode中,動力學計算和碰撞檢測計算是獨立封裝的。其中碰撞檢測庫opcode是標準。在ode中使用碰撞檢測功能的時候需要生成碰撞檢測用的space和動力學計算用的world。物體有兩個屬性:作為動力學計算的對像的body(剛體)和作為碰撞檢測對像的geometry(形狀)。

body的製作方法

1)body生成: dbodyid dbodycreate(dworldid world);在world中生成body,返回body的id

2)質量引數的初始化 void dmasssetzero(dmass mass); 初始化包含質量、重心位置的質量引數masss。

3)質量引數計算 void dmassset**total(dmass *mass, dreal total_mass, ...)。

4)為body設定質量引數 void dbodysetmass(dbodyid body, const dmass *mass); 為body設定質量引數設定為mass。

5)設定body的位置 void dbodysetposition(dbodyid body, dreal x, dreal y, dreal z)。

geometry的製作方法

比較簡單,只需要呼叫函式 dgeomid dcreatesphere(dspaceid space, dreal r); 即可生成球。

body和geometry對應

呼叫函式 void dgeomsetbody(dgeomid geom, dbodyid body);

團隊專案開發日誌(四)

為了進行動力學計算,用dworldcreate 建立world,在其中生成剛體body,用dworldstep 進行動力學計算。主要用到如下api函式。dspaceid dhashspacecreate 0 建立碰撞檢測用space,返回它的id。djointgroupid djointgroupc...

團隊專案開發日誌(二)

繼續學習ode缸體動力學物理引擎開發庫 使用drawstuff畫簡單的形狀,在本次工程中主要用於話冰球和機械手動作點 用圓代替 程式中加入 include 標頭檔案就能使用。以下為繪製球的 const dreal pos1,r1 繪製球 dssetcolor 1,0,0 顏色的設定 紅,綠,藍 各分...

團隊開發日誌一

在我們小組,我和周佩負責機械人模組,其具體要求如下 輸入 目標擊球位置,到達該位置的時間,以及在該位置擊球器的速度向量。輸出 在每個控制週期給出x軸和y軸的實時位置和速度指令。主要引數 x軸和y軸的最大行程 最大速度加速度限制。功能 能夠根據輸入的運動目標指令,實時規劃從當前位置達到目標擊球位置的運...