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 物理模擬異常?
沒有留言:
張貼留言