RoArm-M2-S ROS2 URDF 生成教程

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

RoArm-M2-S ROS2 URDF 模型构建教程

本文档主要用于了解 RoArm-M2-S 的 ROS2 URDF 模型构建。


ROS2有关URDF的官方教程链接

官方教程


什么是 URDF

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


如何查看 RoArm-M2-S 的 URDF

RoArm-M2-S 末端关节有两种形态。若要查看“夹爪”形态的,则在 roarm_ws_em0 文件夹下查看;若查看“手腕”形态的,则在 roarm_ws_em1 文件夹下查看。本教程中以默认“夹爪”形态来查看 RoArm-M2-S ROS2 URDF 生成。

首先,在 ubuntu 中打开文件夹,可以看见在主目录下有个 roarm_ws_em0 的文件夹,接着可以在 roarm_ws_em0/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"/>
    <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" upper="3.14"/>
  <parent link="base_link"/>
  <child link="l1_link"/>
  <origin xyz="0 0 0"/>
</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,用于定义这个关节对应的坐标系位置,单位为米。


总结

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


RoArm-M2-S 教程目录

RoArm-M2-S 使用教程

RoArm-M2-S ROS2基础教程