iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
自我挑戰組

ROS 筆記:要怎麼叫無人機自己飛系列 第 17

【ROS 筆記:要怎麼叫無人機自己飛】Day 17:匯入模型到 Gazebo 中(三),介紹世界檔(World file)

  • 分享至 

  • xImage
  •  

今天繼續介紹怎麼用 XML 格式來設定 Gazebo 的模擬環境。透過世界檔,我們就可以設置模擬中使用的物理參數、光源、地形以及需要匯入的模型。

建立一個 ROS-Gazebo 專案的世界檔

建立世界檔 .world

前往 world 目錄建立一個世界檔 my_world.world

$ touch world/my_world.world

my_world.world 中加入內容如下,它同樣是採用 XML 格式的配置文件,並且包含世界檔的基本結構:

<?xml version="1.0" ?>

<sdf version="1.5">
	<world name="default">
		<!-- 全域光源 -->
		<include>
			<uri>model://sun</uri>
		</include>

		<!-- 基礎地面 -->
		<include>
			<uri>model://ground_plane</uri>
		</include>
		
		<!-- Gazebo 官方的無人機模型 -->
		<include>
			<uri>model://parrot_bebop_2</uri>
			<pose>0 4 0 0 0 0</pose> <!-- 設置模型在世界中的位置和姿態 -->
		</include>
		
		<!-- 自定義模型, 放兩個 -->
		<include>
			<uri>model://my_model</uri>
			<name>my_model_1</name>
			<pose>2 1 0 0 0 0</pose>
		</include>
		<include>
			<uri>model://my_model</uri>
			<name>my_model_2</name>
			<pose>-3 0 5 0.78 0 0</pose>
		</include>
	</world>
</sdf>
  1. <sdf> 標籤和 <world> 標籤:

    SDF 格式一般用在定義模型,不過在較新版本的 Gazebo 世界檔中也會使用 SDF 來描述模擬環境,這讓世界檔在更新的 SDF 版本推出時有較好的相容性。

    <world> 標籤是整個世界檔的根基,用來包住所有的內容。這裡可以用 name="world_name" 定義世界的名稱,或是可以直接用預設名稱 default。通常只有在需要同時執行多個世界的模擬時才需要特別命名。

  2. 匯入模型:

    我們可以使用 <include> 標籤來加入 Gazebo 官方的預設模型或是我們自定義的模型。

    格式:

    <include>
      <uri>model://[model_name]</uri>
      <name>model_name</name>
      <pose>x y z roll pitch yaw</pose>
    </include>
    

    在我提供的範例裡設定比較簡單,其實世界檔中還可以加入各式各樣的模擬環境設定,包含場景、光源、物理參數等,根據自己的需求來讓模擬環境更加貼近真實世界的樣子。

使用 roslaunch 啟動 Gazebo

現在我們把主角都設定完成了。現在我們可以透過 Day 15 設定好的 .launch 檔啟動 Gazebo 並自動匯入模型和場景,看看最後的樣子了。

格式:

roslaunch <package_name> <launch_file.launch>

另外在啟動之前,為了確保 Gazebo 可以正確載入我們建立的自定義模型,需要為 Gazebo 環境變數的模型路徑新增我們的模型路徑。設置完成後,就來啟動我們這兩天設置的模型:

$ export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/catkin_ws/src/my_simulations/models

$ roslaunch my_simulation my_launch.launch


花了不少功夫,終於成功開啟 Gazebo 並且將模型丟進模擬環境裡啦!再來就要來用程式控制 Gazebo 裡面的機器人了。


上一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 16:匯入模型到 Gazebo 中(二),介紹模型描述檔(Model SDF file)
下一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 18:使用 Gazebo 的插件(plugins)來控制模型
系列文
ROS 筆記:要怎麼叫無人機自己飛25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言