welcom ! Handel home

2025年1月10日 星期五

Gazebo Simulaiton (3D 物理模擬系統)

 Gazebo Simulaiton (3D 物理模擬系統)

#Gazebo 是一個 3D 即時物理模擬系統1,可以模擬現實世界中各種模型及物體的軟體2,非常適合用來實驗機器人如何與周遭環境互動2。Gazebo 本身是一個獨立的開源機器人仿真平台3,與 ROS 無關4,但它與 ROS 整合得非常好23,可以讓開發者將機器人導入 Gazebo 中,並存取機器人的所有資訊2。

#Gazebo 的架構包含兩個主要部分:

>Server 端:負責基本的物理運動運算,以及感測器產生數據等2。Server 端可以單獨執行,只需輸入 "run headless" 這樣的參數2。

>Client 端:主要執行圖形化使用者介面 (GUI),方便視覺化模擬2。


#Gazebo 的運作模式如下:

>模型 (Model):在 Gazebo 世界中,所有看到的物體都是模型56。模型由連桿 (links) 和關節 (joints) 組成56。

連桿是模型的一部分,可以是簡單的形狀或是使用者匯入的自訂網格56。關節用於連接兩個連桿56。

>世界 (World):Gazebo 的世界檔案描述了模擬環境,例如重力、時間流逝速度、光線、視角等7。

>物理引擎:Gazebo 使用物理引擎 (例如 ODE) 來模擬機器人的運動學和動力學3。

>感測器模擬:Gazebo 可以模擬機器人常用的感測器,例如雷射雷達、攝影機和 IMU3。

>外掛程式 (Plugin):Gazebo 允許使用者加入自訂的外掛程式,來擴展模擬的功能4。

      例如,可以使用外掛程式來控制 Gazebo 中機器人輪子的轉速8。


Gazebo 與 ROS 的整合透過 gazebo_ros_pkgs 這個套件來實現910,它可以讓 ROS 和 Gazebo 之間傳遞訊息和服務10。此套件提供了一些工具,可以讓你使用 roslaunch 啟動 Gazebo11,並從 ROS 存取 Gazebo 的資訊。

>時間同步:PX4 和 Gazebo 沒有實施鎖步機制,PX4 會訂閱 Gazebo 的時鐘並將其用作時鐘源12。

>獨立模式:Gazebo 可以單獨啟動,讓 PX4 知道不應啟動 Gazebo 實例13.

>ROS topics: Gazebo 可以將感測器資料透過 bridge 傳遞到 ROS2,例如 LiDAR 的資料14.


Gazebo 使用 SDF (Simulation Description Format) 格式來描述模型15,SDF 是一種 XML 格式,

可以使用文字編輯器或 Gazebo 提供的 GUI 編輯器來編輯15。


>URDF: ROS 使用 URDF (Unified Robot Description Format) 檔案來描述機器人7。可以使用 gz sdf -p myrobot.urdf > myrobot.sdf 指令將 URDF 轉換為 SDF16.


總結來說,Gazebo 是一個功能強大的機器人模擬器,它可以獨立運作,也可以與 ROS 整合。

Gazebo 的核心概念包括模型、世界、物理引擎和外掛程式。

透過 gazebo_ros_pkgs 套件,ROS 可以與 Gazebo 進行通訊,實現機器人的模擬和控制。


沒有留言: