RoArm-M2-S ROS2 URDF 生成教程
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 是旋转关节。(其他关节类型参照下表)
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_Web端使用
- RoArm-M2-S_开发工具使用
- RoArm-M2-S_JSON指令含义
- RoArm-M2-S_WIFI配置
- RoArm-M2-S_机械臂控制
- RoArm-M2-S_末端关节设置
- RoArm-M2-S_FLASH文件系统操作
- RoArm-M2-S_步骤录制和重现
- RoArm-M2-S_ESP-NOW控制
- RoArm-M2-S_Python串口通信控制
- RoArm-M2-S_Python HTTP请求通信