ROS 学习-------建立自己的urdf文件

(一)ROS的学习——建立自己的urdf文件
1、构建树结构
本图片描述了接下来!,我们将写一个urdf文件描述下图的“机器人”
ROS 学习-------建立自己的urdf文件在这幅图片里的机器人是一个树状结构。下面可以选择自己喜欢的editor创建名为my_robot.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>

创建过程非常的简单,为了检验该文件是否可以被解析,可以利用一款简单的命令工具,可以检验语法是否正确。可以使用如下命令进行安装:
$ 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

2、添加维度信息
根据第一步,我们已经构建了基本的树状结构,现在添加合适的维度信息。正如上面机器人图像显示,每个链接的参考帧(绿色)位于链接的底部,并且与关节的参考帧相同。因此,要向树中添加维度信息,只需要指定从链接到其子节点的偏移量。为此,我们将向每个关节添加字段<origin>
以第二关节为例,joint2在y方向与link1偏移,在负x方向与link1偏移一点,它围绕z轴旋转90度。因此,我们需要添加以下元素:

<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 
   8   <joint name="joint1" type="continuous">
   9     <parent link="link1"/>
  10     <child link="link2"/>
  11     <origin xyz="5 3 0" rpy="0 0 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   </joint>
  19 
  20   <joint name="joint3" type="continuous">
  21     <parent link="link3"/>
  22     <child link="link4"/>
  23     <origin xyz="5 0 0" rpy="0 0 -1.57" />
  24   </joint>
  25 </robot>

更新my_robot.urdf,并且运行一下:
$ check_urdf my_robot.urdf
3、完善运动信息
到此为止,我们还不清楚关节围绕着那些坐标轴旋转,一旦我们添加该项信息,我们就可以得到这个机器人完整的运动学模型啦!我们只需要给每个关节添加<axis>元素就可以了。完善后的代码如下所示:

    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 my_robot.urdf
现在您可以尝试使用graphiz来可视化urdf文件
$ urdf_to_graphiz my_robot.urdf
可以使用自己喜欢的PDF查看器打开生成的文件:
$ evince test_robot.pdf
结果如下图所示:
ROS 学习-------建立自己的urdf文件