教程四 RoArm-M1 ROS2 URDF模型教程

来自Waveshare Wiki
跳转至: 导航搜索

RoArm-M1 教程目录

RoArm-M1 ROS2 URDF模型教程

  • 本文档用于RoArm-M1的ROS2 URDF模型构建。

ROS2有关URDF的官方教程链接

官方教程

什么是URDF

  • URDF(Unifiled Robot Dercription Format)是统一机器人描述格式的缩写,用于描述ROS中机器人的几何结构和组织。
  • 简单来说,URDF是用来描述机器人结构的文件格式。

如何查看RoArm-M1的URDF

如果您在教程三中安装ROS2使用的是方法一,则是在roarm_ws文件夹下查看;如果您安装ROS2使用的是方法二,则是在RoArm-M1文件夹下查看;这里我都是在roarm_ws下查看的。
首先,在ubuntu中打开文件夹,可以看见在主目录下有个roarm_ws的文件夹,接着在roarm_ws/src/roarm目录下有两个文件夹,分别是meshes和urdf。
meshes:用来保存urdf中引用的机器人模型所需要的三维模型文件,这些文件为.stl格式,根据机器人的运动自由度,将机器人模型分割成了不同部分。
urdf:包含了一个roarm.urdf文件,这个文件用来描述meshes中的机器人模型相对位置的机构运动关系。
我们着重介绍roarm.urdf这个文件中的内容。

<material>标签

<material>标签主要是用于设置机器人模型某个部分的材质,包括颜色、纹理等。这个标签会被引用于<link>标签上,如果没有对<material>标签进行设置或者设置错误,所有机器人模型最终显示出来的颜色都会是红色。

<material name="gray">
  <color rgba="0.8 0.8 0.8 1"/>
</material>

<material name="white">
  <color rgba="1 1 1 1"/>
</material>

这里分别给名称为“gray”和“white”的<material>设置了颜色。name是<material>标签的名称属性,在给<link>标签指定材质时,输入对应的名称属性就可以将对应的材质指定给对应的机器人模型。
rgba用于定义材质的颜色,后面的四个参数分别为四个通道:红色、绿色、蓝色、透明(阿尔法)通道。

<link>标签

<link>标签主要是用于描述机器人模型某个部分的外观和物理属性,包括形状、位置等。

<link name="base_link">
  <visual>
    <geometry>
      <mesh filename="package://roarm/meshes/base.stl"/>
    </geometry>
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <material name="gray"/>
  </visual>
</link>

<link name="l1_link">
  <visual>
    <geometry>
      <mesh filename="package://roarm/meshes/L1.stl"/>
    </geometry>
    <origin rpy="0 0 0" xyz="0 0 -0.062"/>
    <material name="white"/>
  </visual>
</link>

name是<link>标签的名称属性,定义机器人模型某个部分的名称。
visual是<link>标签的可视化属性,即这个机器人模型部分呈现的形状颜色等。
mesh filename中输入的是这个部分所对应的.stl文件的地址,如果不采用文件地址形式,也可以使用其它形状的名称(例如cylinder)+形状的参数来定义这个部分。例如:

<geometry>
   <cylinder length="0.6" radius="0.2"/>
</geometry>  

表示这个机器人部分是一个长为0.6、横截面半径为0.2的圆柱体。
origin是<link>标签的坐标系属性,其中rpy表示的是roll、pitch、yaw三个轴的旋转,这里的角度使用弧度制;xyz表示的是这个部分对应的坐标系位置,单位为米。
material表明引用相对应名称的材质。

<joint>标签

<joint>标签是用来连接两个具体link部分的关节,主要是描述机器人关节的运动学和动力学属性。

<joint name="base_to_L1" type="revolute">
  <axis xyz="0 0 1"/>
  <limit effort="1000.0" lower="-3.14" velocity="0.5"/>
  <parent link="base_link"/>
  <child link="l1_link"/>
  <origin xyz="0 0 0.062"/>
</joint>

name是这个关节的名称。
type是关节类型,revolute是旋转关节。(其他关节类型参照下表)
关节类型图.png
axis xyz是旋转轴,数值为0的就是不旋转的轴,数值为1的就是旋转的轴,这里表示运动轴为z轴。
limit是用来定义旋转的角度限制,-3.14~3.14是弧度制的-180~180°,其余的力量和速度参数不重要。
parent link,用于定义两个link部分运动关系的父级。
child link,用于定义两个link部分运动关系的子级
origin xyz,用于定义这个关节对应的坐标系位置,单位为米。

总结

上面只描述了两个材质、两个模型和一个关节,其余部分的定义方法相同,在此不再赘述。