ROS学习心得:URDF

1. URDF Construction

  URDF由一些不同的功能包和组件组成,下图描述了这些组件之间的联系。

11

3      URDF教程

如下图所示,本节将创建一个如下图所示结构的机器人模型。

12

3.1       基础模型

上图所示是一个树形机器人模型,我们先从机器人的整体结构出发,不考虑过多的细节,可以将机器人通过如下的URDF表示:

  1. <robot name="test_robot">
  2.   <link name="link1" />
  3.   <link name="link2" />
  4.   <link name="link3" />
  5.   <link name="link4" />
  6.  
  7.   <joint name="joint1" type="continuous">
  8.     <parent link="link1"/>
  9.     <child link="link2"/>
  10.   </joint>
  11.  
  12.   <joint name="joint2" type="continuous">
  13.     <parent link="link1"/>
  14.     <child link="link3"/>
  15.   </joint>
  16.  
  17.   <joint name="joint3" type="continuous">
  18.     <parent link="link3"/>
  19.     <child link="link4"/>
  20.   </joint>
  21. </robot>

上边的URDF模型定义了机器人的4个环节(link),然后定义了三个关节(joint)来描述环节之间的关联。

ROS为用户提供了一个检查URDF语法的工具:

$ sudo apt-get install liburdfdom-tools

安装完毕后,执行检查:

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

3.2       添加机器人尺寸

在基础模型之上,我们为机器人添加尺寸大小。由于每个环节的参考系都位于该环节的底部,关节也是如此,所以在表示尺寸大小时,只需要描述其相对于连接的关节的相对位置关系即可。URDF中的<origin>域就是用来表示这种相对关系。

例如,joint2相对于连接的link1x轴和y轴都有相对位移,而且在x轴上还有90度的旋转变换,所以表示成<origin>域的参数就如下所示:

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

为所有关节应用尺寸:

  1. <robot name="test_robot">
  2.   <link name="link1" />
  3.   <link name="link2" />
  4.   <link name="link3" />
  5.   <link name="link4" />
  6.  
  7.   <joint name="joint1" type="continuous">
  8.     <parent link="link1"/>
  9.     <child link="link2"/>
  10.     <origin xyz="5 3 0" rpy="0 0 0" />
  11.   </joint>
  12.  
  13.   <joint name="joint2" type="continuous">
  14.     <parent link="link1"/>
  15.     <child link="link3"/>
  16.     <origin xyz="-2 5 0" rpy="0 0 1.57" />
  17.   </joint>
  18.  
  19.   <joint name="joint3" type="continuous">
  20.     <parent link="link3"/>
  21.     <child link="link4"/>
  22.     <origin xyz="5 0 0" rpy="0 0 -1.57" />
  23.   </joint>
  24. </robot>

再次使用check_urdf检查通过后继续下一步。

3.3       添加运动学参数

如果我们为机器人的关节添加旋转轴参数,那么该机器人模型就可以具备基本的运动学参数。

例如,joint2围绕正y轴旋转,可以表示成:

  1. <axis xyz="0 1 0" />

同理,joint1的旋转轴是:

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

应用到我们的URDF中:

  1. <robot name="test_robot">
  2.   <link name="link1" />
  3.   <link name="link2" />
  4.   <link name="link3" />
  5.   <link name="link4" />
  6.  
  7.   <joint name="joint1" type="continuous">
  8.     <parent link="link1"/>
  9.     <child link="link2"/>
  10.     <origin xyz="5 3 0" rpy="0 0 0" />
  11.     <axis xyz="-0.9 0.15 0" />
  12.   </joint>
  13.  
  14.   <joint name="joint2" type="continuous">
  15.     <parent link="link1"/>
  16.     <child link="link3"/>
  17.     <origin xyz="-2 5 0" rpy="0 0 1.57" />
  18.     <axis xyz="-0.707 0.707 0" />
  19.   </joint>
  20.  
  21.   <joint name="joint3" type="continuous">
  22.     <parent link="link3"/>
  23.     <child link="link4"/>
  24.     <origin xyz="5 0 0" rpy="0 0 -1.57" />
  25.     <axis xyz="0.707 -0.707 0" />
  26.   </joint>
  27. </robot>
       便忘记使用 check_urdf 检查语法错误。

猜你喜欢

转载自blog.csdn.net/linyijiong/article/details/80251317