welcom ! Handel home

2025年2月6日 星期四

Gazebo WORD#Physics (物理) 內介面說明

 

 Gazebo Physics (物理) 內介面說明

GazeboWorld 面板中,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.810 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 設定:

<world name="default"> <physics type="ode"> <real_time_update_rate>1000</real_time_update_rate> <max_step_size>0.001</max_step_size> <gravity>0 0 -9.81</gravity> <ode> <solver> <type>quick</type> <iters>50</iters> </solver> <constraints> <cfm>0.00001</cfm> <erp>0.2</erp> </constraints> </ode> </physics> </world>

🔹 如果 Gazebo 運行過慢,可降低 real_time_update_rate 或增大 max_step_size


4️⃣ 物理引擎問題排除

問題 1️⃣:機器人掉入地面

可能原因

  1. 模型沒有碰撞體 (<collision>)
  2. 地面沒有正確加載 (ground_plane)
  3. cfmerp 參數不適當

解決方案

  • 確保 myrobot.sdf 內有 <collision>
    <collision name="base_collision"> <geometry> <box><size>0.5 0.5 0.1</size></box> </geometry> </collision>

問題 2️⃣:物體彈跳過高

可能原因

  1. erp 太高 (誤差修正過度)
  2. cfm 太低 (接觸點過剛硬)

解決方案

  • 調整 cfmerp
    <constraints> <cfm>0.001</cfm> <erp>0.8</erp> </constraints>

5️⃣ 測試與最佳化

1️⃣ 確保物理參數正確

sdf validate world.sdf

如果回傳 Valid SDF file.,代表格式正確。

2️⃣ 調整物理參數,測試不同 max_step_size

gazebo world.sdf --verbose
  • 如果 模擬過慢,增加 max_step_size (0.002 ~ 0.005)。
  • 如果 碰撞不穩定,增加 cfm (0.001 ~ 0.005)。

🚀 你需要進一步的幫助嗎?

  • 需要 調整特定機器人的物理屬性
  • 需要 加入摩擦力、空氣阻力 (drag)
  • 需要 修正 Gazebo 物理模擬異常

沒有留言: