美文网首页
ROS系统实践(1) - URDF实践

ROS系统实践(1) - URDF实践

作者: helloworldzlg | 来源:发表于2017-05-12 19:34 被阅读0次

URDF(nified Robot Description Format) 统一机器人描述格式。

我们可以通过编辑自己的URDF文件来创建自己的机器人模型,以下就通过构建一个简单的小车模型来说明如何创建机器人模型。

1.描述整体的结构

整体的结构用部件(Link)和关节(Joint)来描述,关节用来连接部件;

我们要描述一个带有4个轮子的车子,那么首先有5个部件(车身、轮子)和4个关节:

<robot name="test_robot">
    <link name="base_link"/>
    <link name="wheel_1"/>
    <link name="wheel_2"/>
    <link name="wheel_3"/>
    <link name="wheel_4"/>
    
    <joint name="joint_base_wheel1" type="fixed">
        <parent link="base_link">
        <child  link="wheel_1">
    </joint>
    
    <joint name="joint_base_wheel2" type="fixed">
        <parent link="base_link">
        <child  link="wheel_2">
    </joint>

    <joint name="joint_base_wheel3" type="fixed">
        <parent link="base_link">
        <child  link="wheel_3">
    </joint> 

    <joint name="joint_base_wheel4" type="fixed">
        <parent link="base_link">
        <child  link="wheel_4">
    </joint> 
</robot>

我们可以采用 check_urdf xxx.urdf 命令来检查我们写好的urdf文件的语法正确性

2.部件和关节的详细属性说明

我们的小车各部件还没有形状和大小的描述,在URDF中可以用
visual 用来描述模块的视觉效果。
geometry 用来描述模块的形状和大小。
origin 用来描述模块的位置。

添加好上述属性的urdf文件:

<robot name="test_robot"> 
  <link name="base_link"> 
    <visual> 
       <geometry> 
         <box size="0.2 .3 .1"/>  
       </geometry> 
       <origin rpy="0 0 0" xyz="0 0 0.05"/> 
    </visual> 
  </link> 
  
  <link name="wheel_1"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> 
    </visual> 
  </link> 
  
  <link name="wheel_2"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> 
    </visual> 
  </link> 
  
  <link name="wheel_3"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> 
    </visual> 
  </link> 
  
  <link name="wheel_4"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> 
    </visual> 
  </link> 
  
  <joint name="joint_base_wheel1" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_1"/> 
  </joint> 
  
  <joint name="joint_base_wheel2" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_2"/> 
  </joint> 
  
  <joint name="joint_base_wheel3" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_3"/> 
  </joint> 
  
  <joint name="joint_base_wheel4" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_4"/> 
  </joint> 
</robot> 

3.在rviz中查看增加颜色属性

<robot name="test_robot"> 
  <link name="base_link"> 
    <visual> 
       <geometry> 
         <box size="0.2 .3 .1"/>  
       </geometry> 
       <origin rpy="0 0 0" xyz="0 0 0.05"/> 
       <material name="white"> 
         <color rgba="1 1 1 1"/>  
       </material> 
    </visual> 
  </link> 
  
  <link name="wheel_1"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> 
      <material name="black"> 
        <color rgba="0 0 0 1"/>  
      </material> 
    </visual> 
  </link> 
  
  <link name="wheel_2"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> 
      <material name="black"/> 
    </visual> 
  </link> 
  
  <link name="wheel_3"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> 
      <material name="black"/> 
    </visual> 
  </link> 
  
  <link name="wheel_4"> 
    <visual> 
      <geometry> 
        <cylinder length="0.05" radius="0.05"/>  
      </geometry> 
      <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> 
      <material name="black"/> 
    </visual> 
  </link> 
  
  <joint name="joint_base_wheel1" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_1"/> 
  </joint> 
  
  <joint name="joint_base_wheel2" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_2"/> 
  </joint> 
  
  <joint name="joint_base_wheel3" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_3"/> 
  </joint> 
  
  <joint name="joint_base_wheel4" type="fixed"> 
    <parent link="base_link"/> 
    <child link="wheel_4"/> 
  </joint> 
</robot> 

当然ROS提供的属性描述tag还有很多,具体参见:
urdf_description

创建好的模型如下:


car_urdf.png

相关文章

网友评论

      本文标题:ROS系统实践(1) - URDF实践

      本文链接:https://www.haomeiwen.com/subject/vrrtxxtx.html