如何在 Gazebo 中添加新的世界和模型
1. 添加新的世界
Gazebo 提供了一些 預設世界,但你也可以 自訂 .world
檔案,來建立自己的模擬環境。
1.1 使用預設世界
Gazebo 預設提供了一些 內建世界,例如:
empty_world.launch
(空白世界)willowgarage_world.launch
(Willow Garage 環境)mud_world.launch
(泥地環境)
可以使用 roslaunch
啟動:
1.2 創建自訂世界
建立
.world
檔案.world
檔案使用 SDF(Simulation Description Format) 格式來描述環境。- 內容示例:
- 這個
.world
檔案包含:- 地面 (
ground_plane
) - 太陽光源 (
sun
)
- 地面 (
將
.world
檔案存放至合適位置- 可以將
.world
文件存放於 ROS 工作區(如~/catkin_ws/src/my_package/worlds/
)。
- 可以將
建立
.launch
啟動檔- 這個
.launch
檔案 會載入my_world.world
並啟動 Gazebo。
- 這個
使用
roslaunch
啟動新世界
2. 添加新的模型
Gazebo 允許載入內建模型,也可以 自訂模型(SDF 或 URDF 格式)。
2.1 使用內建模型
Gazebo 提供 官方和社群的內建模型,可以在 .world
檔案中直接引用:
這樣會在 座標 (0,0,0) 處添加一個方形模型。
2.2 自訂模型
如果要 自己創建模型,需使用 SDF 或 URDF 格式。
建立 SDF 格式模型
- 這個模型是一個 1x1x1 的方塊,可以移動。
將 SDF 檔案放入 Gazebo 模型資料夾
模型結構
將模型載入世界
- 在
.world
檔案中:
- 在
3. 使用 spawn_model
動態載入模型
Gazebo 支援透過 spawn_model
指令 在運行時 動態添加模型:
- 參數解釋:
-file
→ 指定 SDF/URDF 檔案-sdf
→ 指定模型格式(-urdf
代表 URDF 格式)-model
→ 指定模型名稱
如果模型是 XACRO 格式,需先轉換為 URDF:
4. 與 ROS 互動
當模型載入後,可以 透過 ROS topic 與 Gazebo 互動。
4.1 監聽模型狀態
輸出範例
4.2 發送指令控制機器人
這樣會讓機器人向前移動。
5. 總結
步驟 | 內容 |
---|---|
添加世界 | 建立 .world 檔案,使用 roslaunch 啟動 |
使用預設世界 | roslaunch gazebo_ros empty_world.launch |
自訂世界 | 創建 .world ,加入地形與光線 |
添加內建模型 | 在 .world 檔案中使用 <include> 加載模型 |
自訂模型 | 創建 SDF 或 URDF 模型,放入 ~/.gazebo/models/ |
動態載入模型 | rosrun gazebo_ros spawn_model -file model.sdf -sdf -model my_box |
與 ROS 互動 | 使用 rostopic 監聽 /gazebo/model_states ,發送指令控制機器人 |
Gazebo 不僅支援預設世界和模型,也允許用戶自訂環境、載入新模型,並透過 ROS 進行控制,這使得它成為機器人開發與模擬的強大工具。 🚀
沒有留言:
張貼留言