《鴻蒙機(jī)器人編程》7-仿真工具Gazebo及URDF-教案_第1頁
《鴻蒙機(jī)器人編程》7-仿真工具Gazebo及URDF-教案_第2頁
《鴻蒙機(jī)器人編程》7-仿真工具Gazebo及URDF-教案_第3頁
《鴻蒙機(jī)器人編程》7-仿真工具Gazebo及URDF-教案_第4頁
《鴻蒙機(jī)器人編程》7-仿真工具Gazebo及URDF-教案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

仿真工具Gazebo與URDFurdf介紹urdf(unifiedrobotdescriptionformat)是ROS中描述機(jī)器人的一種語言,在ROS開發(fā)中占據(jù)了非常重要的地位。urdf主要用途在于標(biāo)識機(jī)器人物理模型有哪些部件、每個部件的尺寸、部件間以何種關(guān)節(jié)連接、關(guān)節(jié)限制等,可容易實(shí)現(xiàn)關(guān)節(jié)空間坐標(biāo)與笛卡爾坐標(biāo)的轉(zhuǎn)換,如配合robot_state_publisher包使用,可根據(jù)關(guān)節(jié)的值確定出部件的位置和姿態(tài)。urdf定義了一系列XML標(biāo)簽來描述機(jī)器人模型,最核心的兩個標(biāo)簽為:<link>——機(jī)器人部件/連桿/剛體,<joint>——機(jī)器人關(guān)節(jié)/運(yùn)動副。<robot>標(biāo)簽為根標(biāo)簽,是其它標(biāo)簽的容器,其作用類似于launch文件中的launch標(biāo)簽。它有一個屬性name,用來設(shè)置機(jī)器人的名字。如下如所示:<link>標(biāo)簽用于描述機(jī)器人某個部件(也即剛體部分)的外觀和物理屬性。機(jī)器人底座、輪子、激光雷達(dá)、攝像頭等,每個部件都對應(yīng)一個link。在link標(biāo)簽內(nèi),可以設(shè)計該部件的形狀、尺寸、顏色、慣性矩陣、碰撞參數(shù)等一系列屬性。屬性name用于設(shè)置部件名字。下圖為一些子標(biāo)簽具體設(shè)置:<joint>標(biāo)簽用于描述機(jī)器人關(guān)節(jié)的運(yùn)動學(xué)和動力學(xué)屬性,還可以指定關(guān)節(jié)運(yùn)動的安全極限。機(jī)器人的兩個部件(parentlink與childlink)以"關(guān)節(jié)"的形式相連接,不同的關(guān)節(jié)有不同的運(yùn)動形式:旋轉(zhuǎn)、滑動、固定、旋轉(zhuǎn)速度、旋轉(zhuǎn)角度限制。屬性name,設(shè)置關(guān)節(jié)的名字;屬性type,設(shè)置關(guān)節(jié)類型。以下是一些Joint類:Revolute:轉(zhuǎn)動關(guān)節(jié),但是有轉(zhuǎn)動范圍,必須要求之后的limit參數(shù)中必須含有上下界才合法。Continuous:連續(xù)轉(zhuǎn)動關(guān)節(jié),沒有轉(zhuǎn)動范圍。Prismatic:平動關(guān)節(jié),也需要上下界的定義。Fixed:完全固定,連接的兩個link幷沒有可動關(guān)系,可以理解為純粹為了標(biāo)識固定傳感器相對位置與姿態(tài)而設(shè)立的。Floating:允許link與link之間有完全6個自由度的轉(zhuǎn)換,跟fixed一樣,一般是標(biāo)識一些環(huán)境物體或者無人機(jī)在全局位置姿態(tài)的。Planar:與floating類似,用于標(biāo)識地面機(jī)器人在地面上的位置姿態(tài)。Gearbox:描述了齒輪傳動的轉(zhuǎn)動關(guān)系。Ball:球關(guān)節(jié),兩個轉(zhuǎn)動自由度的合成。Screw:類似于螺絲的運(yùn)動,單個自由度,但轉(zhuǎn)動與平動位移的合成。取消了floating與planar。下圖為一些子標(biāo)簽具體設(shè)置:urdf本身設(shè)計有一些缺陷。整個joint與link成樹狀描述,而機(jī)器人存在一些的物理模型例如并聯(lián)機(jī)構(gòu),環(huán)狀機(jī)構(gòu)等就無法表示。一些標(biāo)簽設(shè)置也不是非常合理,還有整個xml語法上也不是非常靈活。這些問題的存在使urdf在一些情況中顯得非常雞肋,但是對于大部分移動機(jī)器人與機(jī)械臂,urdf已經(jīng)夠用,關(guān)鍵是已經(jīng)有大量現(xiàn)成工具,使得urdf在ROS中的地位還是不可撼動。XACRO宏介紹復(fù)雜的機(jī)器人常常有多達(dá)十幾個joint和link,許多joint或link非常相似,整個urdf文件顯得非常冗長、復(fù)雜,urdf文件中還經(jīng)常存在一些值計算依賴。XACRO是ROS中簡化大型xml文件的寫法、增加結(jié)構(gòu)性與擴(kuò)展性的XML宏語言,提供了屬性定義,數(shù)學(xué)運(yùn)算,條件判斷和宏定義等功能。使用宏能極大增加urdf文件的層次感與可讀性,在各個機(jī)器人公開的ROSurdfpackage中,基本都是用XACRO工具進(jìn)行組織。需要注意:必須在robot標(biāo)簽中加入xmlns:xacro="/wiki/xacro"屬性。屬性:使用<xacro:property>標(biāo)簽定義,用${屬性名稱}來調(diào)用該參數(shù)。如下圖所示:數(shù)學(xué)運(yùn)算:在變量的大括號中可以使用基本的數(shù)學(xué)運(yùn)算,可以使用Python數(shù)學(xué)模塊中的函數(shù)和常量。如下圖所示:條件判斷:表達(dá)式中的結(jié)果必須是0、1、true或false,在<expression>中任何結(jié)果為布爾值的Python表達(dá)式都是可以的。如下圖所示:宏定義:使用xacro:macro來定義一個宏,參數(shù)用空格分割,參數(shù)可以用:=來添加默認(rèn)值。如下圖所示:仿真簡述仿真/模擬(Simulation),泛指基于實(shí)驗或訓(xùn)練的目的,將原本的系統(tǒng)、事務(wù)或流程,建立一個模型以表征其關(guān)鍵特性(keycharacteristics)或者行為/功能,予以系統(tǒng)化與公式化,以便進(jìn)行可對關(guān)鍵特征做出模擬。當(dāng)所研究的系統(tǒng)造價昂貴、實(shí)驗的危險性大或需要很長的時間才能了解系統(tǒng)參數(shù)變化所引起的后果時,仿真是一種特別有效的研究手段。它廣泛應(yīng)用于電氣、機(jī)械、化工、水力、熱力、社會、經(jīng)濟(jì)、生態(tài)、管理等領(lǐng)域。重要工具就是計算機(jī)。ROS中的仿真軟件有g(shù)azebo、stage、matlab等。Gazebo仿真工具gazebo是一款開源免費(fèi)、功能強(qiáng)大的三維物理仿真平臺,具備強(qiáng)大的物理引擎,高質(zhì)量的圖形渲染,方便的編程與圖形接口。其典型應(yīng)用場景包括測試機(jī)器人算法、機(jī)器人的設(shè)計、現(xiàn)實(shí)情景下的回溯測試等等。gazebo能夠支持多種的物理引擎,例如ODE、bullet等等。它是一個3D圖形的仿真平臺,支持傳感器的模擬等很多插件,還提供了很多知名的機(jī)器人模型。它的傳輸協(xié)議是tcpip,非常便于編程。他還有一個云的仿真平臺,同時支持命令行工具。gazebo的架構(gòu)分成兩部分:gzserver和gzclient。gzserver負(fù)責(zé)產(chǎn)生傳感器數(shù)據(jù)、更新物理參數(shù),可以運(yùn)行在云端;gzclient基于QT的用戶界面,控制仿真特性,可同時運(yùn)行多個人機(jī)界面。下圖為架構(gòu)示意圖:gazebo的運(yùn)行界面分為五個區(qū)域,分別為最大的3D視圖區(qū),上方的工具欄區(qū),模型列表區(qū),模型屬性項區(qū)以及時間顯示區(qū)。Gazebo與ROS的接口為了實(shí)現(xiàn)ros和Gazebo的通信,我們定義了以下的接口:gazebo_ros主要用于gazebo接口封裝、gazebo服務(wù)端和客戶端的啟動、URDF模型生成等。gazebo_msgs是gazebo的Msg和Srv數(shù)據(jù)結(jié)構(gòu)。gazebo_plugins-用于gazebo的通用傳感器插件。gazebo_ros_api_plugin和gazebo_ros_path_plugin這兩個Gazebo的插件實(shí)現(xiàn)接口封裝。安裝啟動如果你已經(jīng)成功安裝了桌面完整版的ROS,可以直接跳過這一步驟,否則,請使用如下命令進(jìn)行安裝:sudoapt-getinstallros-indigo-gazebo-ros-pkgsros-indigo-gazebo-ros-control我們可以通過命令啟動:roscorerosrungazebo_rosgazebo也可以通過launch文件啟動:roslaunchgazebo_rosempty_world.launch這個launch文件實(shí)際上主要啟動了兩個node節(jié)點(diǎn)一個node節(jié)點(diǎn)就是gazeboserver,另一個node節(jié)點(diǎn)就是gazeboclient。這里面設(shè)置了一些參數(shù):paused-以暫停狀態(tài)啟動Gazebo,默認(rèn)為false。use_sim_time-ROS的node是否使用Gazebo通過/clocktopic發(fā)布的仿真時間,默認(rèn)為true。gui-啟用Gazebo的用戶交互接口來控制視圖,默認(rèn)為true。headless-禁用仿真渲染組件的功能,當(dāng)gui:=true時,不能使能此參數(shù),默認(rèn)為false。debug-在gdb中啟動gzserver(GazeboServer)以用于調(diào)試,默認(rèn)為false。world_name以相對路徑指定了world模型的定義文件,絕對路徑由GAZEBO_RESOURCE_PATH這個環(huán)境變量決定。默認(rèn)為/usr/share/gazebo-x.x,對indigo版本來說為/usr/share/gazebo-2.2。建議:為保證模型順利加載,請?zhí)崆皩⒛P臀募螺d并放置到本地路徑下。(/osrf/gazebo_models/downloads/)創(chuàng)建仿真環(huán)境模型庫加載完后,就可以直接添加環(huán)境模型,如下圖所示。我們還可以通過buildingeditor這個頁面自己去創(chuàng)建。修改機(jī)器人模型Gazebo使用SDF仿真描述格式定義仿真環(huán)境和模型,而ROS使用URDF通用機(jī)器人描述格式來定義機(jī)器人模型,且此格式定義的文件不能直接用于Gazebo,使用中需加以轉(zhuǎn)換,添加用于描述仿真定義的標(biāo)簽。必須步驟:

(1)在每一個<link>內(nèi)添加<inertia>標(biāo)簽。(2)向URDF文件中的joint添加<transmission>標(biāo)簽。代碼如下:向URDF文件中添加ros_control插件,并添加相應(yīng)插件的controller配置文件。ros_control是為用戶提供的應(yīng)用與機(jī)器人之間的中間件,包含一系列控制器接口、傳動裝置接口、硬件接口、控制器工具箱等等,可以幫助機(jī)器人應(yīng)用快速落地,提高開發(fā)效率。對不同類型的控制器(底盤、機(jī)械臂等),ros_control可以提供多種類型的控制器。但是這些控制器的接口各不相同,為了提高代碼的復(fù)用率,ros_control還提供一個硬件的抽象層。它的構(gòu)成有以下幾個部分:ControllerManager:機(jī)器人可能有多個controller,管理器提供一種通用的接口來管理不同的controller。Controller:完成每個joint的控制,請求下層的硬件資源,提供了PID控制器,讀取硬件資源狀態(tài),在發(fā)布控制命令。HardwareRescource:為上下兩層提供硬件資源的接口。RobotHW:硬件抽象層和硬件直接打交道,通過write和read方法來完成硬件的操作。RealRobot:要有自己的嵌入式控制器??蛇x步驟

:(1)在每一個<link>內(nèi)添加<gazebo>標(biāo)簽。將外觀顏色轉(zhuǎn)換成Gazebo格式;將stl文件轉(zhuǎn)換成dae文件,獲得更好的渲染效果;添加傳感器插件。(2)在每一個<joint>內(nèi)添加<gazebo>標(biāo)簽。設(shè)置適當(dāng)?shù)淖枘釀恿ο禂?shù);添加執(zhí)行器控制插件。(3)在<robot>標(biāo)簽內(nèi)添加<gazebo>。模型加載接下來,我們要把模型加載到gazebo里。一種方式是用gazebo_ros功能包下名為spawn_model的python腳本,通過封裝接口向Gazebo發(fā)起服務(wù)調(diào)用,請求加載指定的URDF文件。rosrungazebo_rosspawn_model-file`rospackfindbaxter_description`/urdf/baxter.urdf-urdf-z1-modelbaxter我們也可以通過launch文件完成加載。對于xacro格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論