教程四 RoArm-M1 ROS2 URDF模型入门教程
RoArm-M1 教程目录
- 教程一 RoArm-M1 产品使用教程
- 教程二 RoArm-M1 二次开发教程
- 教程三 RoArm-M1 VirtualBox ROS2入门教程
- 教程四 RoArm-M1 ROS2 URDF模型入门教程
- 教程五 RoArm-M1 ROS2 串口通信节点
- 教程六 RoArm-M1 视频组装教程
- 教程七 RoArm-M1 图文组装教程
- RoArm-M1 WIKI 主页
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是旋转关节。(其他关节类型参照下表)
axis xyz是旋转轴,数值为0的就是不旋转的轴,数值为1的就是旋转的轴,这里表示运动轴为z轴。
limit是用来定义旋转的角度限制,-3.14~3.14是弧度制的-180~180°,其余的力量和速度参数不重要。
parent link,用于定义两个link部分运动关系的父级。
child link,用于定义两个link部分运动关系的子级
origin xyz,用于定义这个关节对应的坐标系位置,单位为米。
总结
上面只描述了两个材质、两个模型和一个关节,其余部分的定义方法相同,在此不再赘述。