三 機器人模擬軟體Gazebo介紹
ROS教程
這是小弟的學習筆記,有錯求請拍,多指教,謝謝
三 機器人模擬軟體Gazebo介紹
Gazebo功能
1.構建機器人運動模擬模型
在Gazebo裡,提供了最基礎的三個物體,球體,圓柱體,立方體,利用這三個物體以及它們的伸縮變換或者旋轉變換,可以設計一個最簡單的機器人三維模擬模型。更加地,Gazebo提供了CAD,Blender等各種2D,3D設計軟體的介面,可以匯入這些圖紙讓Gazebo的機器人模型更加真實,這些之後會詳細介紹。同時,Gazebo提供了機器人的運動模擬,通過Model Editor下的plugin,來新增我們需要驗證的演算法檔案,就可以在Gazebo裡對機器人的運動進行模擬
2.構建現實世界各種場景的模擬模型
Gazebo可以建立一個用來測試機器人的模擬場景,通過新增物體庫,放入垃圾箱,雪糕桶,甚至是人偶等物體來模仿現實世界,還可以通過Building Editor,新增2D的房屋設計圖,在設計圖基礎上構建出3D的房屋
3.構建感測器模擬模型
Gazebo擁有一個很強大的感測器模型庫,包括camera,depth camera,laser,imu等機器人常用的感測器,並且已經有模擬庫,已經可以直接使用,也可以自己從0建立一個新的感測器,新增它的具體引數,甚至還可以新增感測器噪聲模型,讓感測器更加真實
4.為機器人模型新增現實世界的物理性質
Gazebo裡有force,physics的選項,可以為機器人新增例如重力,阻力等,Gazebo有一個很接近真實的物理模擬引擎,要記得一般的地面是沒有阻力的,和現實世界有區別
Gazebo安裝
1.注意
如果是安裝了full版本的ROS,是不需要再安裝Gazebo的,檢查自己是否安裝了Gazebo的方法:
1)在搜尋欄輸入“Gazebo”查詢;
2)通過命令列查詢$ dpkg -l|grep gazebo
,可以查詢Gazebo是否已經安裝,並且檢視版本號,建議安裝最新版本
如果安裝了舊版本的Gazebo,應該先解除安裝再安裝新版本,現在最新版本是Gazebo8,可以通過Gazebo官網檢視最新版本Gazebo8
解除安裝舊版本Gazebo的方法:
1)通過Ubuntu軟體管理中心解除安裝
2)命令列方法
查詢與Gazebo相關的軟體包
$ dpkg --get-selections | grep gazebo
在不記得軟體具體名稱以及它的各個附帶軟體時,可以通過該命令來查詢
解除安裝命令$ sudo apt-get remove gazebo7
但是要把與之相關的軟體,附加項都解除安裝,比較麻煩,可以通過autoremove一次性解除安裝所有相關的軟體
$ sudo apt-get autoremove gazebo7
2.安裝Gazebo的方法
1)通過安裝指令碼來安裝
從官網的教程來看,通過sh指令碼來安裝是最方便的,指令碼是linux系統裡一個比較方便的工具,就像ROS裡的launch檔案一樣,sh檔案啟動後,會自動執行指令碼設定好的工作,下邊是官網推薦的通過指令碼安裝的具體步驟:
點選下載安裝指令碼 install.sh指令碼下載地址
通常來說,下載的檔案會放在檔案目錄~/home/下載/
下,通過命令列
$ cd 下載
進入資料夾目錄
執行指令碼檔案$ sh gazebo8_install.sh
有時需要管理員許可權,則加上sudo
即可
2)注意,不建議完全照搬官網的安裝步驟,因為下載指令碼檔案的資料夾有區別
參考網址
Gazebo/tutorials/1
Gazebo介面與操作
1.介面
1)初始介面
2)建立模型介面
將滑鼠移至左上角,會看到有Edit選項
點選Model Editor選項
模型介面
節點/關節建立介面
參考網址
Gazebo/tutorials/2
2.操作
滑鼠操作方法,這裡用了Gazebo官網的圖,一般常用的就是“shift+滑鼠左鍵”轉換視角,“滑鼠左鍵”平移視角,“滾輪”縮放大小
鍵盤的快捷鍵有很多,值得自己去發掘,但要謹記,在建立模型的時候,“ctrl+z”的撤回鍵是不能用的,所以每次操作完成之後,最好按以下“esc”鍵退出當前操作至選擇物體模式,這樣會避免誤點
用Gazebo建立第一個機器人模型
1.機器人模型在Gazebo中需要的結構
我們可以在“Model Editor”介面下看到
一個模型的建立,主要包括裡四個方面:
“Models”指的是從模型庫新增的模型,是已經構建好的物體,具有一定功能和外觀的,例如感測器,房屋,車體,車輪等
“Model Plugins”指的是關於目前正在建立的模型的一些功能描述資訊
“Links”指當前通過球體/圓柱/立方體建立的物體
“Joints”指各個物體之間的連線關節
2.建立步驟
1)進入“Model Editor”模型編輯介面
2)建立車體
通過基礎圖形來建立一個簡單的二輪差分運動模型
拖拽一個圓柱體到面板中,並雙擊圓柱體,開啟“Link Inspector”編輯物體屬性
點選“Visual”和“Collision”,修改Geometry,把半徑和厚度改成自己需要的大小,本模型將厚度改成0.1m,保持半徑大小不變
“Visual”是該物體的外觀
“Collision”是物體的實際性質,在模擬引擎中呼叫的引數
因為作為車體底盤,所以儘量把第一塊模型的x,y,z座標調整至座標軸上,方便以後對於其他物體的調整。在“Link”標籤中,滑動到最低,會看到有一個“Pose”標籤,這個就是調整物體的座標還有偏轉角度的
因為要配合車輪的位置,所以在這個時候應該根據車輪的半徑,來確定底盤的z座標。車輪擬定半徑0.2m,所以底盤的z座標也調整至0.2m,可以方便以後的工作
謹記,所有的長度,座標,都是根據物體中心或中線來確定的
3)建立支柱
按照上邊的步驟新增圓柱,並修改引數。半徑為0.02m,厚度為0.4m
複製出4根支柱,暫時放在任意位置
4)建立頂層板
複製第二步建立的車體底盤,暫時放在任意位置
5)連線部件
點選頂部的“Joint”,開啟節點編輯器,點選父物體,再點選子物體,即可建立一個節點。
父物體是帶動子物體運動的,所以應該以底盤為父級,支柱為子級
6)調整節點屬性
“Joint types”:一般常用的有Fixed,Revolute,Ball,分別是固定連線,可以旋轉的,球體多方向轉動(類似萬向輪)。支柱屬於固定連線,所以選擇Fixed
“Align links”:使用“Align links”選項可以快速調整兩個零件的位置關係,三個按鈕分別是左貼合,歸中,右貼合,“Reverse”是在貼合後更改內外關係的,調整子物體的哪個面與父物體接觸,如果想支柱在底盤內,則不要勾選Reverse,勾選了的話支柱會在底盤外
留意黃色框,試一下改變每一個軸的Reverse選項
7)重複操作,按照關節型別為Fixed的方法,連線剩下的零件
注意,要把頂層板和四個支柱都連線在一起,其實Fixed的作用就相當於螺絲,把零件連線在一起,只有這樣才能保證模擬的真實性
8)建立車輪
二輪差分模型有兩個主動輪加上一到兩個萬向輪
車輪依然是簡單的圓柱體,但這一次要把圓柱體轉個90度,90度=1.5707 rad
更改半徑,厚度
9)連線車輪和車體
黃色框是值得注意的地方,滾動的車輪要選擇可選轉的關節型別“Revolute”,並且調節可旋轉的軸,物體將繞著有小黃圓圈標記的軸旋轉
重複該步驟建立另一邊的車輪,留意車輪是否著地。通過目測是十分困難的,最好是寫下每個零件的半徑,厚度等引數,通過計算得出車輪是否著地
10)建立萬向輪
在簡易模型裡,我們可以直接用球體來代替萬向輪, 其實在現實生活中,萬向輪大多也是球體
嘗試一下計算,看看球體萬向輪的半徑要多大,才能讓球體緊貼地面,並且著地時高度不超過底盤?
答案是 :底盤的Z座標/2
一定要注意,“VIsual”和“Collision”都要更改
11)連線萬向輪
有時使用“Align links”不能讓萬向輪著地,這個時候可以再調整它與父物體的相關位置
不建議一開始就使用Pose來調整,調整物體位置時“Align links”會更加直觀方便
重複建立一個萬向輪模型
3.新增感測器
1)尋找合適的庫
http://gazebosim.org/models/是官方的模型庫,開啟並找到深度攝像頭“Depth camera”,拖拽到面板中。最好直接拖拽到紅色的軸線上
2)安裝感測器
在安裝感測器到車體上的時候並不能用Align links快速調整位置的方法,需要自己手動移動,望大神指導如何準確移動。這個時候要很小心,因為容易誤點了其他零件導致不必要的移動
把深度攝像頭移動到車頂,然後用Fixed型別的節點讓車體與攝像頭連線
3)配置Plugin
參考了Gazebo官網的教程,我們在Model標籤下,找到Plugin的add按鈕,開啟並填寫
“Plugin name”一定是獨立的,不能出現重複,這個可以自己定義
“Filename”是連結檔案的名稱,一般是連結一些動態庫,有關動態庫的筆記之後學到了再寫
因為libFollowerPlugin.so動態庫並沒有要求輸入什麼引數,所以“Innerxml”不需要填寫
4.儲存並退出
將滑鼠移動到左上角,點選“FIle”,進行儲存和退出操作
5.在World介面進行模擬
在機器人前邊放置一個立方體,然後點選下方的開始按鍵,看到機器人朝著方塊運動,證明模型建立成功
參考網址
Gazebo/tutorials/3