• 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


  • 相关阅读:
    stl-序列式容器
    BFS
    Hash
    二分法
    草稿1
    红黑树的左旋、右旋和颜色变换
    动态规划
    自动驾驶-安全
    二叉树

  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/10869157.html
Copyright © 2020-2023  润新知