




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
機器人操作系統(tǒng)(ROS)機器人操作系統(tǒng)(ROS)機器人模型構(gòu)建與仿真10.1機器人操作系統(tǒng)(ROS)10.1.1URDF介紹URDF(UnifiedRobotDescriptionFormat,統(tǒng)一機器人描述格式)是一個XML語法框架下用來描述機器人的語言格式,主要用于存儲模型的形狀、尺寸、顏色等基本屬性。在構(gòu)建機器人模型之前,我們需要了解URDF的語法和常用的標(biāo)簽。(1)URDF語法在URDF中編輯文件需要一定的編寫語法,語言要求包含本體、關(guān)節(jié)、節(jié)點的定義以及節(jié)點間各關(guān)節(jié)的連接關(guān)系。下面將詳細(xì)介紹URDF中幾種常用的標(biāo)簽。(2)常用標(biāo)簽<link>標(biāo)簽<link>標(biāo)簽描述機器人某個剛體部分的外觀和物理屬性,包括連桿尺寸(size)、顏色(color)、形狀(shape)、慣性矩陣(inertialmatrix)、碰撞屬性(collisionproperties)等。機器人中每個link都會成為一個坐標(biāo)系。link結(jié)構(gòu)機器人操作系統(tǒng)(ROS)10.1.1URDF介紹一個典型的link標(biāo)簽如下:<linkname="my_link"><inertial><originxyz="000.5"rpy="000"/><massvalue="1"/><inertiaixx="100"ixy="0"xz="0"iyy="100"iyz="0"izz="100"/></inertial><visual><originxyz="000"rpy="000"/><geometry><boxsize="111"/></geometry><materialname="Cyan"><colorrgba="01.01.01.0"/></material></visual><collision><originxyz="000"rpy="000"/><geometry><cylinderradius="1"length="0.5"/></geometry></collision></link>首先,定義該link的名字(linkname),<inertial>標(biāo)簽用于描述link部分的慣性參數(shù),這個標(biāo)簽是可選的,如果未指定,則默認(rèn)為零質(zhì)量和零慣性。originxyz和rpy分別為為慣性參考系相對于link參考系的位置和姿態(tài),rpy以弧度表示固定軸滾動、俯仰和偏航角。此外,還可以設(shè)置質(zhì)量(massvalue)、慣性矩陣(inertia)。<visual>標(biāo)簽用于描述link的外觀參數(shù),<visual>標(biāo)簽用于描述link的外觀參數(shù)(可選),<collision>標(biāo)簽用于描述link的碰撞屬性(可選),同一個link可以存在多個<collision>標(biāo)簽。它們所定義的幾何圖形的并集構(gòu)成了link的碰撞描述。通常,使用更簡單的碰撞模型來減少計算時間。機器人操作系統(tǒng)(ROS)10.1.1URDF介紹<joint>標(biāo)簽與人的關(guān)節(jié)相似,<joint>標(biāo)簽用于描述機器人關(guān)節(jié),包括關(guān)節(jié)運動的位置和速度限制。joint結(jié)構(gòu)一個典型的<joint>標(biāo)簽如下:<jointname="my_joint"type="floating"><originxyz="001"rpy="003.1416"/><parentlink="link1"/><childlink="link2"/><calibrationrising="0.0"/><dynamicsdamping="0.0"friction="0.0"/><limiteffort="30"velocity="1.0"lower="-2.2"upper="0.7"/></joint>每一個joint連接兩個link,其中的origin是從parentlink到childlink的轉(zhuǎn)換。接頭位于parentlink的原點,是相對于上一個joint的origin描述的,而上面的<link>標(biāo)簽中的origin是相對于joint坐標(biāo)系表達的。除了必須指定的兩個link,關(guān)節(jié)的其他屬性為可選屬性,如<calibration>,作用是設(shè)置joint的參考位置,用于校準(zhǔn)joint的絕對位置;<dynamics>的作用是描述關(guān)節(jié)的物理屬性,如阻尼值、物理靜摩擦力等。<dynamics>用于描述運動極限值,僅用于revolute(旋轉(zhuǎn)關(guān)節(jié))prismatic(滑動關(guān)節(jié))的joint類型。機器人操作系統(tǒng)(ROS)<robot>標(biāo)簽<robot>是URDF中機器人描述文件的根標(biāo)簽,所有其他元素必須封裝在其中。一個完整的機器人模型由一系列的<link>和<joint>等標(biāo)簽組成,典型的robot結(jié)構(gòu)如圖。在<robot>標(biāo)簽里可以設(shè)置該機器人的名稱。robot結(jié)構(gòu)10.1.1URDF介紹機器人操作系統(tǒng)(ROS)10.1.2創(chuàng)建URDF模型并校驗創(chuàng)建模型(本書配套的機器人模型放在myrobot_description功能包下)創(chuàng)建模型文件myrobot_description/urdf/myrobot.urdf:<?xmlversion="1.0"encoding="utf-8"?><robotname="myrobot_description"><linkname="base_link"><inertial><originxyz="000"rpy="000"/><inertiaixx="0.0029446"ixy="-1.0694E-05"ixz="8.6442E-05"iyy="0.0086395"iyz="-7.9718E-07"izz="0.0097467"/></inertial><visual><originxyz="000"rpy="000"/>……該機器人底盤模型包括6個link和5個joint。6個link包括1個機器人底板、一個與底盤連接的放置激光雷達的臺架和4個驅(qū)動輪,4個joint負(fù)責(zé)將驅(qū)動輪安裝到機器人底板上,并設(shè)計了fixed和continuous類型的連接方式,fixed是固定關(guān)節(jié),continuous類型的關(guān)節(jié)圍繞單軸無限旋轉(zhuǎn)。這樣,一個比較基本的四輪實驗小車模型就建立好了。機器人操作系統(tǒng)(ROS)URDF文件校驗編程創(chuàng)建URDF文件后,必須進行文件校驗,查看是否存在語法錯誤。對于我們這次創(chuàng)建的機器人模型,可以使用簡單的命令工具來分析建立的結(jié)構(gòu)是否存在語法錯誤,輸入以下命令在終端安裝工具:$sudoapt-getinstallliburdfdom-tools進入myrobot_description/urdf目錄下,然后運行如下命令對myrobot.urdf文件進行檢查:$check_urdfmyrobot.urdfcheck_urdf命令將解析myrobot.urdf文件,并顯示在解析過程中檢查出的錯誤。如果文件沒有錯誤,終端將打印如圖所示的信息。終端信息10.1.2創(chuàng)建URDF模型并校驗機器人操作系統(tǒng)(ROS)準(zhǔn)備工作在終端運行如下命令,顯示所構(gòu)建的URDF結(jié)構(gòu)關(guān)系:$urdf_to_graphizmy_robot.Urdf終端執(zhí)行完畢后會得到一個PDF文件,展示了編程構(gòu)建的機器人模型的URDF關(guān)系文件:
機器人模型的URDF關(guān)系10.1.2創(chuàng)建URDF模型并校驗機器人操作系統(tǒng)(ROS)10.1.3在rviz中顯示模型可以使用rviz將已創(chuàng)建的機器人模型可視化顯示出來,用來檢查構(gòu)建你的模型是否符合設(shè)計預(yù)期。啟動文件目錄為myrobot_description/launch/display_urdf.launch,launch文件詳細(xì)內(nèi)容如下:<launch><paramname="robot_description"textfile="$(findlingao_description)/urdf/myrobot.urdf"/><!—設(shè)置GUI參數(shù),顯示關(guān)節(jié)控制插件--><paramname="use_gui"value="true"/><!—設(shè)置joint_state_publisher節(jié)點,發(fā)布機器人的關(guān)節(jié)狀態(tài)--><nodename="joint_state_publisher"pkg="joint_state_publisher"type="joint_state_publisher"><paramname="rate"value="20.0"/></node><!—設(shè)置robot_state_publisher節(jié)點,發(fā)布TF轉(zhuǎn)換--><nodename="robot_state_publisher"pkg="robot_state_publisher"type="robot_state_publisher"> <paramname="rate"value="20.0"/></node><!--運行rviz可視化界面--><nodename="rviz"pkg="rviz"type="rviz"args="/></launch>創(chuàng)建啟動文件機器人操作系統(tǒng)(ROS)運行啟動文件在終端輸入以下命令運行該啟動文件:$roslaunchmyrobot_descriptiondisplay_urdf.launch若出現(xiàn)如下報錯:CouldnotfindtheGUI,installthe‘joint_state_publisher_gui’package則使用下面命令進行安裝:$sudoapt-getinstallros-melodic-joint-state-publisher-gui若運行成功,則會出現(xiàn)如下界面:10.1.3在rviz中顯示模型rviz界面機器人操作系統(tǒng)(ROS)10.1.3在rviz中顯示模型在rviz界面中點擊Add,添加RobotModel和TF,如圖所示,并將FixedFrame修改為base_link,此時將會在rviz中顯示之前構(gòu)建好的機器人模型。添加機器人模型添加TF機器人操作系統(tǒng)(ROS)10.1.3在rviz中顯示模型rviz界面中的機器人模型機器人操作系統(tǒng)(ROS)10.1.4在仿真環(huán)境中控制小車運動在本節(jié)中,我們使用rviz界面來實現(xiàn)機器人運動的仿真控制。需要安裝軟件包rbx1和ArbotiX功能包。rbx1軟件包(來源于《ROSbyExample》),包括路徑規(guī)劃,視覺,語音識別和其他功能的一些程序包。ArbotiX是一款控制電機、舵機的控制板,提供相應(yīng)的ROS功能包arbotix_ros,該功能包不僅可以驅(qū)動真實的驅(qū)動板,還提供了一個控制器,通過接收速度控制指令更新機器人的joint狀態(tài),從而幫助我們實現(xiàn)仿真機器人的運動控制。機器人操作系統(tǒng)(ROS)首先安裝rbx1的軟件包,通過執(zhí)行如下命令將rbx1克隆到本地或拷貝本書配套的源碼到工作空間:$gitclone/pirobot/rbx1.git$cdrbx1$gitcheckoutmelodic-devel通過以下命令下載arbotix_ros的源碼或復(fù)制本書源碼至工作空間中:$gitclone/vanadiumlabs/arbotix_ros.git下載完成后編譯功能包。軟件基礎(chǔ)10.1.4在仿真環(huán)境中控制小車運動機器人操作系統(tǒng)(ROS)接下來,需要將虛擬機器人啟動文件(fake_turtlebot.launch)中修改成自己的urdf文件,修改后的文件如下所示:<launch><paramname="/use_sim_time"value="false"/><!--LoadtheURDF/Xacromodelofourrobot--><!--argname="urdf_file"default="$(findxacro)/xacro.py'$(findrbx1_description)/urdf/turtlebot.urdf.xacro'"/--><argname="urdf_file"default="$(findxacro)/xacro.py'$(findmyrobot_description)/urdf/myrobot.urdf'"/><paramname="robot_description"command="$(argurdf_file)"/><nodename="arbotix"pkg="arbotix_python"type="arbotix_driver"output="screen"clear_params="true"><rosparamfile="$(findrbx1_bringup)/config/fake_turtlebot_arbotix.yaml"command="load"/><paramname="sim"value="true"/></node><nodename="robot_state_publisher"pkg="robot_state_publisher"type="state_publisher"><paramname="publish_frequency"type="double"value="20.0"/></node><!--Weneedastatictransformsforthewheels--><nodepkg="tf"type="static_transform_publisher"name="base_link_to_footprint"args="000000/base_footprint/base_link100"/></launch>軟件基礎(chǔ)10.1.4在仿真環(huán)境中控制小車運動機器人操作系統(tǒng)(ROS)運行如下指令啟動仿真機器人和rviz:$roslaunchrbx1_bringupfake_turtlebot.launch$rosrunrvizrviz-d`rospackfindrbx1_nav`/sim.rviz在rviz界面中點擊Add,添加RobotModel,將FixedFrame修改為odom,會出現(xiàn)如圖界面。rviz界面中的機器人模型10.1.4在仿真環(huán)境中控制小車運動機器人操作系統(tǒng)(ROS)使用以下指令通過命令行發(fā)送機器人控制命令:$rostopicpub-r10/cmd_velgeometry_msgs/Twist{linear:{x:0.1,y:0,z:0},angular:{x:0,y:0,z:-0.5}}”若想可視化機器人的運動,點擊Add,添加Odometry,將Topic修改為/odom。這時,可以看到機器人在做圓周運動。發(fā)送機器人控制命令可視化機器人圓周運動10.1.4在仿真環(huán)境中控制小車運動機器人操作系統(tǒng)(ROS)除了命令行的方式外,我們還可以通過編寫腳本的方式控制機器人移動。創(chuàng)建Python腳本文件timed_out_and_back.py,該節(jié)點實現(xiàn)的功能是讓小車模型先前進1米,再旋轉(zhuǎn)180度,重復(fù)兩次。部分內(nèi)容如下:#-*-coding:utf-8-*-#!/usr/bin/envpythonimportrospyfromgeometry_msgs.msgimportTwistfrommathimportpiclassOutAndBack():def__init__(self):rospy.init_node('ou
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 客運安全協(xié)議合同(2篇)
- 植保員行業(yè)現(xiàn)狀的試題及答案總結(jié)
- 成功秘訣:無人機駕駛員執(zhí)照考試的試題及答案詳細(xì)講解
- 2024年種子繁育員知識點細(xì)化試題及答案
- 如何在2024年體育經(jīng)紀(jì)人考試中取得優(yōu)異成績試題及答案
- 農(nóng)作物種子繁育員的職業(yè)晉升路徑試題及答案
- 2024年農(nóng)作物繁育員考試復(fù)習(xí)全攻略試題及答案
- 2024體育經(jīng)紀(jì)人考試指導(dǎo)書試題及答案
- 白酒加盟代理合同協(xié)議
- 特殊氣體運輸合同協(xié)議
- 中藥養(yǎng)護記錄表
- 實驗室安全自查表樣表
- 外賣食物中毒起訴書
- 《機械設(shè)計基礎(chǔ)》復(fù)習(xí)備考題庫(含答案)
- 安全生產(chǎn)責(zé)任書安全制度
- xk5036數(shù)控立式銑床總體及橫向進給傳動機構(gòu)設(shè)計論文大學(xué)本科畢業(yè)論文
- 小學(xué)五六年級青春期女生健康心理講座PPT
- 基于模型預(yù)測控制的無人駕駛車輛軌跡跟蹤控制算法研究共3篇
- 空冷島空冷機組管束更換施工方案
- 2023年大學(xué)生數(shù)學(xué)競賽天津市試題參考及答案
- JJG 644-2003振動位移傳感器
評論
0/150
提交評論