SDF (Simulation Description Format) 是 Gazebo 模擬器使用的標準 XML 格式,用來描述 機器人、環境、傳感器、燈光、物理屬性等。相比 URDF (Unified Robot Description Format),SDF 支援更多 仿真相關的物理設定,例如摩擦、彈性、流體動力學等。
📖 1️⃣ SDF XML 基本結構
📌 2️⃣ SDF XML 標籤說明
標籤 | 作用 | 範例 |
---|---|---|
<sdf> | SDF 主標籤,指定版本 | <sdf version="1.9"> |
<world> | 定義仿真世界 | <world name="default"> |
<include> | 引入模型 | <include><uri>model://ground_plane</uri></include> |
<model> | 定義機器人或物體 | <model name="myrobot"> |
<static> | 設定模型是否固定 | <static>false</static> |
<link> | 定義機器人組件 | <link name="chassis"> |
<pose> | 位置與姿態 | <pose>0 0 0.1 0 0 0</pose> |
<inertial> | 定義質量與慣性 | <mass>10.0</mass> |
<visual> | 設定外觀模型 | <visual name="chassis_visual"> |
<geometry> | 幾何形狀 | <box><size>0.4 0.2 0.1</size></box> |
<material> | 設定材質 | <ambient>0.8 0.8 0.8 1</ambient> |
<collision> | 設定碰撞體 | <collision name="chassis_collision"> |
<surface> | 設定物理屬性 | <friction><ode><mu>0.5</mu></ode></friction> |
📌 3️⃣ SDF 設計與編寫工具流程
✅ 1. 選擇適合的編輯工具
工具 | 用途 |
---|---|
VS Code | 推薦,支援 SDF XML 語法高亮 |
Gazebo Model Editor | 內建 SDF 視覺化編輯 |
SDF Validator (sdf CLI) | 檢查 SDF 格式正確性 |
Blender + .dae /.stl | 建立 3D 模型,匯出至 SDF |
✅ 2. 撰寫 SDF 文件
建立 SDF 檔案
撰寫
model.sdf
撰寫
model.config
(用於 Gazebo 瀏覽模型)
✅ 3. 測試 SDF 模型
檢查 SDF 格式是否正確
如果沒有錯誤,則表示格式正確。
將模型加載到 Gazebo
然後在 Gazebo 內:
- Insert → myrobot → 拖曳進場景
📌 4️⃣ SDF vs. URDF (主要區別)
功能 | URDF | SDF |
---|---|---|
支援 Gazebo | ❌ 需要 gazebo_ros 轉換 | ✅ 原生支援 |
物理屬性 | 🚫 限制較多 | ✅ 更完整 (摩擦、彈性) |
感測器 | 🚫 需額外定義 | ✅ 內建支援 |
燈光 | ❌ 需手動添加 | ✅ 內建 <light> 支援 |
流體動力學 | 🚫 不支援 | ✅ 支援 |
🛠 建議:
- 要在 ROS 內控制機器人 → URDF + gazebo_ros_control
- 要完整模擬物理世界 → SDF
✅ 結論
- SDF 是 Gazebo 的原生格式,支援完整的物理屬性。
- 可以用 VS Code / Gazebo Model Editor 來設計 SDF。
- 使用
sdf validate
確保 SDF 格式正確。 - 用
model.config
讓 Gazebo 讀取你的模型。
🚀 你還需要什麼額外的 SDF 設定,例如感測器 (sensor
)、燈光 (light
)、或馬達 (joint
+ actuator
) 嗎?
沒有留言:
張貼留言