“ URDF(Unified Robot Description Format,统一机器人描述格式)是一种用于描述机器人模型的XML格式文件。今天以ABB六轴机器人为例,使用Matlab Simscape导入urdf文件来创建机器人模型。”
在上一节,我们使用Simscape对二连杆系统进行了建模,请参考文章:
URDF(Unified Robot Description Format,统一机器人描述格式)是一种用于描述机器人模型的XML格式文件。今天以ABB六轴机器人为例,使用Matlab Simscape导入urdf文件来创建机器人模型。
先来预览下最终效果:
01
—
什么是URDF
URDF(Unified Robot Description Format,统一机器人描述格式)是一种用于描述机器人模型的XML格式文件。它被广泛应用于机器人操作系统中,用于定义机器人的物理结构和特性,包括关节、链接、传感器等。URDF文件使得机器人模型的描述变得标准化和易于共享,从而促进了机器人领域的研究和开发。
URDF文件的核心内容主要包括以下几个部分:
-
机器人声明(Robot Declaration)
-
连杆(Links)
-
关节(Joints)
-
传感器和执行器(Sensors and Actuators)
1. 机器人声明
每个URDF文件都以一个<robot>
标签开始,用于声明机器人的名称和其他全局属性。这个标签是整个URDF文件的根节点。
<robot name="my_robot">
...
</robot>
2. 连杆(Links)
连杆是URDF文件中的基本构建块,表示机器人的刚体部分。每个链接包含以下属性:
-
名字(Name):链接的唯一标识符。
-
惯性(Inertial):链接的质量和惯性矩信息。
-
视觉(Visual):链接的可视化模型,通常用于仿真和渲染。
-
碰撞(Collision):链接的碰撞模型,通常用于物理仿真。
-
<link name="base_link"> <inertial> <origin xyz="0 0 0" rpy="0 0 0"/> <mass value="1.0"/> <inertia ixx="0.1" ixy="0.0" ixz="0.0" iyy="0.1" iyz="0.0" izz="0.1"/> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="1 1 1"/> </geometry> <material name="gray"/> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="1 1 1"/> </geometry> </collision> </link>
3. 关节(Joints)
关节连接两个链接,并定义它们之间的运动关系。关节有不同的类型,如固定关节(fixed)、旋转关节(revolute)、平移关节(prismatic)等。每个关节包含以下属性:
-
名字(Name):关节的唯一标识符。
-
类型(Type):关节的类型。
-
父链接(Parent Link):关节的父链接。
-
子链接(Child Link):关节的子链接。
-
原点位置(Origin):关节相对于父链接的起始位置和姿态。
-
运动轴(Axis):关节的运动轴(旋转关节和平移关节)。
<joint name="base_to_link1" type="revolute"> <parent link="base_link"/> <child link="link1"/> <origin xyz="0 0 1" rpy="0 0 0"/> <axis xyz="0 0 1"/> <limit lower="-1.57" upper="1.57" effort="10" velocity="1.0"/> </joint>
4. 传感器和执行器(Sensors and Actuators)
虽然URDF文件本身不直接定义传感器和执行器的详细内容,但它们可以通过链接和关节的属性进行扩展。例如,可以通过定义插件的方式将传感器和执行器添加到机器人模型中。
<gazebo> <sensor type="camera" name="camera_sensor"> <camera> <horizontal_fov>1.3962634</horizontal_fov> <image> <width>800</width> <height>800</height> <format>R8G8B8</format> </image> <clip> <near>0.1</near> <far>100</far> </clip> </camera> </sensor> </gazebo>
举个例子,下图中所示的二自由度机器人:
其URDF模型可以表示为:
02
—
Simscape导入urdf
URDF文件的创建我们在这里不赘述。此处直接给出ABB某款机器人模型的URDF文件。
URDF文件包常见文件结构如下:
此处我们使用同样的文件结构:
此时我们已经具备了导入urdf模型的基础条件,那么如何导入呢?
很简单,只需要smimport即可,具体如下:
-
addpath([pwd filesep 'Geometry']) [mdl_h] = smimport('sm_abbIrb120.urdf','ModelName','sm_abbIrb120_1_RawImport_test');
静待几秒后,你会看到:
是不是似曾相识?没错,导入urdf文件后,因为urdf文件中已经描述了机器人的模型信息,所以simcape会根据urdf中描述自动创建模型。让我们随便打开一个子系统,可以看到:机器人的坐标系描述、3d模型、质量惯量等信息均已被导入。
同样按照上节中所讲内容创建输入输出:
简单加个正弦输入:
仿真曲线:
到此我们就能看到文章开头的预览效果啦。
代码分享给大家,供学习交流。