在 Robot Operating System (ROS) 中,SDF (Simulation Description Format) 和 URDF (Unified Robot Description Format) 是兩種用來描述機器人的模型格式。兩者的主要區別如下:
1. URDF (Unified Robot Description Format)
URDF 是 ROS 主要用來描述機器人的 XML 格式。它定義了機器人的結構、連結 (links)、關節 (joints) 以及慣性、碰撞、視覺模型等資訊。
URDF 主要特點
- 主要用於 ROS 生態系統,特別是 RViz (可視化) 和 MoveIt! (運動規劃)。
- 簡單且輕量,適用於大多數機器人應用。
- 支援關節限制 (joint limits)、慣性 (inertial properties)、碰撞模型 (collision)、視覺模型 (visual)。
- 透過 xacro(XML Macro)簡化模型建立,提高可讀性與重複使用性。
- 不支援 高級物理屬性,例如摩擦係數、彈性等。
URDF 使用範例
2. SDF (Simulation Description Format)
SDF 是 Gazebo 模擬器主要使用的機器人描述格式。它提供比 URDF 更完整的機器人建模能力,特別是在物理模擬方面。
SDF 主要特點
- 更強大的物理引擎支持,包括 摩擦力、彈性、流體動力學、光照屬性等。
- 支援多機器人模擬(URDF 只能描述單一機器人)。
- 更靈活的坐標系統,允許自由定義連結與關節的座標。
- 多版本支持(比 URDF 更靈活)。
- 適用於 Gazebo,但不像 URDF 那樣深度集成到 ROS。
SDF 使用範例
3. URDF vs. SDF 比較
特性 | URDF | SDF |
---|---|---|
主要用途 | ROS (RViz, MoveIt!) | Gazebo 模擬 |
支援的模擬特性 | 基本的物理屬性(慣性、碰撞) | 進階物理屬性(摩擦、彈性、流體) |
多機器人支持 | 不支援 | 支援 |
語法靈活性 | 比較受限 | 更靈活,支援更複雜的結構 |
擴展性 | 透過 xacro 來提升可讀性 | 支援內建多層次結構 |
座標系統 | 受限於樹狀結構 | 支援自由座標系統 |
Gazebo 支持 | 需轉換成 SDF 格式 | 原生支持 |
4. 何時使用 URDF 或 SDF?
使用 URDF
- 如果只在 ROS (RViz, MoveIt!) 進行視覺化或運動規劃。
- 機器人模型較簡單,不需要進階物理屬性。
- ROS 生態系統內的開發,如機器人導航、控制等。
使用 SDF
- 需要在 Gazebo 進行物理模擬。
- 需要 更細緻的物理屬性(例如摩擦力、彈性等)。
- 需要 模擬多台機器人 或 更複雜的場景。
5. URDF 轉換成 SDF
因為 Gazebo 使用 SDF,但 ROS 使用 URDF,所以經常需要轉換格式,這可以透過 gz sdf
或 gz urdf
指令來完成:
或使用 ROS 提供的插件:
6. 總結
- URDF 是 ROS 主要使用的機器人描述格式,適合視覺化與控制。
- SDF 是 Gazebo 主要使用的模擬格式,支援更強的物理屬性與多機器人建模。
- 如果需要同時使用 ROS 與 Gazebo,通常先寫 URDF,然後轉換成 SDF。
沒有留言:
張貼留言