ROS學習筆記十:URDF詳解


Unified Robot Description Format,簡稱為URDF(標准化機器人描述格式),是一種用於描述機器人及其部分結構、關節、自由度等的XML格式文件。

一、URDF語法規范

參見:XML 基礎學習


二、URDF教程

如下圖所示,本節將創建一個如下圖所示結構的機器人模型。


2.1 基礎模型

上圖所示是一個樹形機器人模型,我們先從機器人的整體結構出發,不考慮過多的細節,可以將機器人通過如下的URDF表示:

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />
 
  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
  </joint>
 
  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
  </joint>
 
  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
  </joint>
</robot>

上邊的URDF模型定義了機器人的4個環節(link),然后定義了三個關節(joint)來描述環節之間的關聯。


ROS為用戶提供了一個檢查URDF語法的命令:

check_urdf my_robot.urdf

如果一切正常,將會有如下顯示:

robot name is: test_robot
---------- Successfully Parsed XML ---------------
root Link: link1 has 2 child(ren)
    child(1):  link2
    child(2):  link3
    child(1):  link4

2.2 添加機器人尺寸

在基礎模型之上,我們為機器人添加尺寸大小。由於每個環節的參考系都位於該環節的底部,關節也是如此,所以在表示尺寸大小時,只需要描述其相對於連接的關節的相對位置關系即可。URDF中的<origin>域就是用來表示這種相對關系。

例如,joint2相對於連接的link1在x軸和y軸都有相對位移,而且在x軸上還有90度的旋轉變換,所以表示成<origin>域的參數就如下所示:

<origin xyz="-2 5 0" rpy="0 0 1.57" />

為所有關節應用尺寸:

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />
 
  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="5 3 0" rpy="0 0 0" />
  </joint>
 
  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
    <origin xyz="-2 5 0" rpy="0 0 1.57" />
  </joint>
 
  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
    <origin xyz="5 0 0" rpy="0 0 -1.57" />
  </joint>
</robot>

再次使用check_urdf檢查通過后繼續下一步。


2.3 添加運動學參數

如果我們為機器人的關節添加旋轉軸參數,那么該機器人模型就可以具備基本的運動學參數。

例如,joint2圍繞正y軸旋轉,可以表示成:

<axis xyz="0 1 0" />

同理,joint1的旋轉軸是:

<axis xyz="-0.707 0.707 0" />

應用到我們的URDF中:

<robot name="test_robot">
  <link name="link1" />
  <link name="link2" />
  <link name="link3" />
  <link name="link4" />
 
  <joint name="joint1" type="continuous">
    <parent link="link1"/>
    <child link="link2"/>
    <origin xyz="5 3 0" rpy="0 0 0" />
    <axis xyz="-0.9 0.15 0" />
  </joint>
 
  <joint name="joint2" type="continuous">
    <parent link="link1"/>
    <child link="link3"/>
    <origin xyz="-2 5 0" rpy="0 0 1.57" />
    <axis xyz="-0.707 0.707 0" />
  </joint>
 
  <joint name="joint3" type="continuous">
    <parent link="link3"/>
    <child link="link4"/>
    <origin xyz="5 0 0" rpy="0 0 -1.57" />
    <axis xyz="0.707 -0.707 0" />
  </joint>
</robot>

繼續使用check_urdf檢查語法錯誤。


2.4 圖形化顯示URDF模型

如果你希望以圖形的方式來查看它,那么可以使用urdf_to_graphiz命令工具:

$ urdf_to_graphiz my_robot.urdf

此命令將生成兩個文件:my_robot.gv 和 my_robot.pdf。可以使用 evince 打開:

$ evince my_robot.pdf

然后即可看到圖形化的URDF:


三、更多示例

參見:ROS_wiki_Example


參考:

ROS探索總結(二十三)——解讀URDF



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM