1. 程式人生 > >【ROS Gazebo專題】二、Gazebo的使用上

【ROS Gazebo專題】二、Gazebo的使用上

跳的比較快,別人光介紹基礎以及ros的基本操作就寫了十幾二十篇,我一下就跳到了Gazebo這,可怕有沒有。

其實原因很簡單,如果你將ros官網的基礎篇章練習完了,在最後一篇 where Next?中告訴我們進階應該做什麼,第一步就講到使用模擬器Gazebo,所以如果基礎內容大家實在是看不懂英文,你們可以看看csdn很多博主翻譯過來的基礎篇,寫的都很不錯,我就不做無用功了,寫部落格也挺花時間的。就像第一篇 ros基礎一句話總結 一樣,我寫了二十天,因為工作,生活的緣故,所以進度不是很快,希望理解。

另外,我也將預設大家是有基礎的朋友,如果沒有基礎,推薦先進行基礎學習,然後再進行交流。

1、Gazebo是什麼?

Gazebo是一個模擬環境(平臺),可以進行三維機器人動力學模擬等,夠模擬複雜和現實的環境中關節型機器人。很強大。

2、Gazebo官網在哪裡?

3、瞭解一下Gazebo的版本

官網中明確的提示了版本,並且將新版本的開發計劃及釋出時間公佈了出來,如圖:


官方除了已經把2020年的版本都想好了,還將各個版本的最後更新支援時間列了出來,就那個EOL(End of Life)時間。

如果你還注意到了那個版本後面的標籤,Ubuntu P Q V T之類的,這個應該是Ubuntu對應的版本號的開頭大寫字母,就像Android 和 Ios一樣,除了數字版本,每一代都有名字。

另外一個標籤,ROS I、ROS H、ROS J 應該就是對應了ROS 的Indigo Hydro Jade三個版本了吧。注意到ROS I 的版本是2.2,等會兒驗證(我裝的就是Indigo版本)。

4、Gazebo最新版本如何安裝?在ROS下Gazebo又是如何安裝?

首先要明白Gazebo目前只支援Ubuntu系統,windows和mac os都在開發計劃中,目前還沒有推出。

最新的Gazebo請去官網下載,你可以找到最新版本,點選下載。

如果你想在ros中使用,請跳過a)小節。

a)如圖,最新版本,點這個(要記得,官網下載需要翻牆)

然後就下載到一個gazebo7_install.sh的檔案對吧?

使用終端,為這個檔案新增許可權(假設你的檔案在你的/home/user/下載   這個資料夾下面)

在終端裡進入這個資料夾路徑:

cd /home/user/下載

終端裡賦予許可權:

chmod +x gazebo7_install.sh

終端裡執行:

./gazebo7_install.sh
然後就可以了,如果提示卻庫了,根據提示,缺什麼你就去找什麼,自己補充一下就可以了。

        b)ROS下的Gazebo安裝

如果你當初安裝ROS是使用的full全部安裝模式,那麼恭喜你,你不需要在安裝了。

如果不是,只裝了部分,請使用這個命令(注意啊,如果是indigo版本的ros,用這個,其它版本把對應版本的名字替換掉indigo部分就可以了,注意多使用tab鍵,有的版本字尾的模擬器名字不同的)

sudo apt-get install ros-indigo-simulators

在終端中啟動Gazebo:

gazebo

如圖為啟動後的視窗介面:


看一下我的Gazebo版本,如圖:


看見了嗎?2.2.3,前面ROS I的標籤支援的是2.2,這說明我可能猜對了,如果不對的話,請指正,Ros Jade和Ros Hydro版本的我就不測了,裝了這兩個版本的朋友可以告知下。

5、Gazebo簡單認識

使用ros命令開啟的一個empty world 的gazebo 和我直接用gazebo命令開啟的軟體是沒有區別的,因為都是空的內容裡面。

但是實際使用是有區別的,使用roslaunch命令 開啟的gazebo實際上是包含了一個ros通訊節點,這樣就可以使用其他的ros指令將gazebo和你自己編寫的檔案聯絡起來。

著急學習的朋友建議直接上官網,裡面有詳細教程。

a)介面認識

這個空的世界中,只有一個大地模型和光源效果。

b)新增一些東西上去


如圖,添加了兩個球體和一個圓柱以及一個正方體。

c)基本工具介紹

移動工具


旋轉工具

縮放工具


或者使用ctrl+B來進行地圖編輯


6、接下來按照ROS的教程走

a)寫一個urdf的模型檔案

使用終端,建立並編輯urdf檔案,我推薦gedit方便

gedit object.urdf

寫入程式碼:
<robot name="simple_box">
  <link name="my_box">
    <inertial>
      <origin xyz="2 0 0" />
      <mass value="1.0" />
      <inertia  ixx="1.0" ixy="0.0"  ixz="0.0"  iyy="100.0"  iyz="0.0"  izz="1.0" />
    </inertial>
    <visual>
      <origin xyz="2 0 1"/>
      <geometry>
        <box size="1 1 2" />
      </geometry>
    </visual>
    <collision>
      <origin xyz="2 0 1"/>
      <geometry>
        <box size="1 1 2" />
      </geometry>
    </collision>
  </link>
  <gazebo reference="my_box">
    <material>Gazebo/Blue</material>
  </gazebo>
</robot>
儲存關閉文字編輯器。

其中:

原文解釋在這:

Here the origins of the inertial center, visual and collision geometry centers are offset in +x by 2m relative to the model origin. The box geometry primitive is used here for visual and collision geometry, and has sizes 1m wide, 1m deep and 2m tall. Note that visual and collision geometries do not always have to be the same, sometimes you want to use a simpler collision geometry to save collision detection time when running a dynamic simulation. The box inertia is defined as 1kg mass and principal moments of inertia ixx=izz=1 kg*m2 and iyy=100 kg*m2.

大意就是表達上面的urdf檔案,構建了一個長1m寬1m高2m的盒子對應box size = 1 1 2,並且最後給予了慣性要求,對應ixx = 1 iyy = 100,其他的標籤意思有空再去查一下,看翻譯雖然有個大概理解,但是具體的區別大家自己嘗試一下吧,但注意一下,gezebo reference = my_box 這個標籤,對應的是匯入gazebo中的模型名稱。

接下來我們開啟終端,使用命令列將這個檔案匯入到gazebo。

首先使用終端開啟gazebo,這次使用roslaunch命令開啟,因為要開一個節點:

roslaunch gazebo_ros empty_world.launch

接下來使用rosrun命令將前面寫的urdf檔案放進去(記得先用終端cd到你放置urdf檔案的路徑下):

rosrun gazebo_ros spawn_model -file 'pwd'/object.urdf -urdf -z 1 -model my_object


執行結束之後,會發現你的gazebo多了一個藍色的物體,如圖:


今天先寫到這,下班回家了。