welcom ! Handel home

2025年2月5日 星期三

SDF (Simulation Description Format) XML格式

SDF (Simulation Description Format) 是一種用於描述模擬環境、機器人和其他物件的 XML 格式。

#以下是關於 SDF 格式的說明:

•基本結構:每個 SDF 檔案都以 <sdf> 標籤開始,並以 </sdf> 標籤結束。在 <sdf> 標籤內,可以定義一個或多個 <world> 標籤,每個 <world> 標籤代表一個模擬世界。

•版本:SDF 檔案的開頭會定義 XML 和 SDF 的版本。例如:

•世界定義:<world> 標籤用於定義模擬世界,包括其名稱、物理特性和視覺效果。

◦名稱:<world> 標籤的 name 屬性用於指定世界的名稱。例如:<world name='world_demo'>。

◦物理特性:<physics> 標籤用於定義世界的物理引擎和相關參數。可以選擇不同的物理引擎,例如 Dart, Ode, Bullet, Simbody 等。

▪<physics type='ode' name='1ms'>

◦視覺效果:可以使用 <scene> 標籤來設定環境光 (ambient_light) 和背景顏色 (background_color)。

▪也可以用 <camera> 標籤來設定相機的 x, y, z 位置。


•模型:

◦定義:<model> 標籤用於定義模擬世界中的物件,包括機器人、靜態物體等。

◦載入:可以從 Gazebo Fuel 網站載入模型,並將其貼在 world 標籤內。也可以將模型下載到本地,然後在 SDF 檔案中引用。

◦位置:可以使用 <pose> 標籤來設定模型在世界中的位置和方向。


▪例如:

◦連結 (Link):使用 <link> 標籤來描述物件的實體部分,像是機器人的手臂或輪子。視覺 (visual) 標籤則是用來定義物件在軟體介面中的外觀。

•插件 (Plugins):SDF 格式允許使用插件來擴展模擬功能。

◦World Control 插件:用於控制世界,包括暫停/播放按鈕,顯示模擬時間和實際時間。

◦WorldStats 插件:用於顯示世界訊息,如模擬時間 (sim_time),實際時間 (real_time),模擬/實際時間比例 (real_time_factor),和迭代次數 (iterations)。


#其他標籤:

◦state: 插件狀態,可用 docked 固定在定點,或是用 floating 浮動

◦render_engine: 渲染引擎可選 ogre 或 ogre2

◦stats_topic: 負責世界訊息統計 (模擬時間與實際時間) 的標題

◦start_paused: 若為 true 則 Gazebo 啟動時預設為暫停模擬狀態。


#使用方法:

◦可以透過指令 $ gz sim <sdf_file_name>.sdf 來啟動模擬。

◦使用 VSCode 等程式碼編輯器來編輯 SDF 檔案。

◦可以使用 gz topic -e -t /world/<world_name>/stats 指令監看世界訊息。

總結來說,SDF 格式提供了一個靈活且可擴展的方式來描述模擬環境,它可以定義世界的物理特性、

視覺效果和模型,並使用插件來擴展功能。它在 ROS 和 Gazebo 中被廣泛使用,以實現機器人模擬。

沒有留言: