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:
三、更多示例
參考: