Gazebo Physics (物理) 內介面說明
在 Gazebo 的 World 面板中,Physics 設定影響整個模擬環境的 重力、摩擦、時間步長、碰撞計算,以及物理引擎的參數調整。
1️⃣ Physics 內部設定
在 Gazebo World → Physics 內,你會看到 以下關鍵選項:
| 選項 | 說明 | 範例值 |
|---|---|---|
| Physics Engine | 選擇物理引擎 (ODE, Bullet, DART, Simbody) | ODE (預設) |
| Real Time Update Rate | 物理計算頻率 (Hz),影響模擬流暢度 | 1000 Hz |
| Max Step Size | 每次模擬步長 (s),影響計算精度 | 0.001 s |
| Gravity | 設定世界的重力 (m/s²),預設 -9.81 | 0 0 -9.81 |
| Enable Contact | 啟用碰撞偵測 | True |
| Friction | 設定物體表面的摩擦係數 | 0.5 |
| Solver Type | 計算物理運動的方式 (快速、精確) | QuickStep |
| Iterations | 物理計算的迭代次數 (越高越精確) | 50 |
| Constraint Force Mixing (CFM) | 控制關節的柔軟度 | 0.00001 |
| Error Reduction Parameter (ERP) | 控制碰撞的誤差修正 | 0.2 |
2️⃣ 物理引擎 (Physics Engine)
Gazebo 支援多種物理引擎,每種引擎有不同的計算方式:
| 物理引擎 | 特點 | 適用場景 |
|---|---|---|
| ODE (Open Dynamics Engine) | Gazebo 預設,穩定但計算慢 | 通用機器人模擬 |
| Bullet | 支援剛體與軟體動力學 | 需要精確碰撞的模擬 |
| DART | 高級運動控制,支援軟體機器人 | 人體運動、生物力學 |
| Simbody | 支援複雜的剛體模擬 | 物理真實性要求高的應用 |
🔹 建議使用 ODE,除非有特殊需求。
3️⃣ 物理引擎 XML 設定 (sdf)
在 world.sdf 文件內,這些選項可用 XML 設定:
🔹 如果 Gazebo 運行過慢,可降低 real_time_update_rate 或增大 max_step_size。
4️⃣ 物理引擎問題排除
問題 1️⃣:機器人掉入地面
可能原因:
- 模型沒有碰撞體 (
<collision>) - 地面沒有正確加載 (
ground_plane) cfm和erp參數不適當
解決方案:
- 確保
myrobot.sdf內有<collision>:
問題 2️⃣:物體彈跳過高
可能原因:
erp太高 (誤差修正過度)cfm太低 (接觸點過剛硬)
解決方案:
- 調整
cfm和erp:
5️⃣ 測試與最佳化
1️⃣ 確保物理參數正確
如果回傳 Valid SDF file.,代表格式正確。
2️⃣ 調整物理參數,測試不同 max_step_size
- 如果 模擬過慢,增加
max_step_size(0.002~0.005)。 - 如果 碰撞不穩定,增加
cfm(0.001~0.005)。
🚀 你需要進一步的幫助嗎?
- 需要 調整特定機器人的物理屬性?
- 需要 加入摩擦力、空氣阻力 (drag)?
- 需要 修正 Gazebo 物理模擬異常?
沒有留言:
張貼留言