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 中被廣泛使用,以實現機器人模擬。
沒有留言:
張貼留言