URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签) 与 关节(joint标签), URDF 中的有以下不同标签:
一、robot 根标签
在机器人建模领域,URDF(Unified Robot Description Format)是一种用于描述机器人模型的XML文件格式。在URDF文件中,`<robot>` 元素是根标签,用于包含整个机器人模型的描述。以下是一个简单的URDF文件的例子,展示了 `<robot>` 根标签的基本结构:
<robot name="my_robot">
<!-- Link definitions go here -->
<!-- Joint definitions go here -->
</robot>
在上面的例子中,`<robot>` 标签包含了一个名为 "my_robot" 的机器人模型。在 `<robot>` 标签内部,通常会包含 `<link>` 和 `<joint>` 标签,用于定义机器人的链接和关节。
`<link>` 标签用于描述机器人的刚体或部件,包括其几何形状、质量属性等。
`<joint>` 标签用于描述连接两个链接的关节,包括关节类型(如固定关节、旋转关节等)和关节参数。以下是一个简单的例子,包含了一个机器人模型,其中有两个链接和一个关节:
<robot name="my_robot">
<link name="base_link">
<!-- Link properties go here -->
</link>
<link name="end_effector">
<!-- Link properties go here -->
</link>
<joint name="joint1" type="revolute">
<!-- Joint properties go here -->
<parent link="base_link"/>
<child link="end_effector"/>
</joint>
</robot>
上述例子中,`<robot>` 标签包含了两个链接 (`<link>`),分别命名为 "base_link" 和 "end_effector"。同时,它还包含一个旋转关节 (`<joint>`),将这两个链接连接起来,关节的名字是 "joint1"。
这只是一个简单的例子,实际的URDF文件会更加复杂,具体的内容会根据机器人的结构和特性而有所不同。通过使用 `<robot>` 根标签,URDF提供了一种结构化的方式来描述机器人的物理结构和连接关系。
二、link 连杆标签
在URDF(Unified Robot Description Format)文件中,`<link>` 元素用于描述机器人模型中的刚体或连接杆。每个 `<link>` 元素定义了一个机器人的一个物理部分,包括它的几何形状、质量属性和其他相关信息。
以下是一个简单的 `<link>` 元素的示例
<link name="my_link">
<!-- Link properties go here -->
</link>
在这个例子中,`<link>` 元素有一个名为 "my_link" 的名称,可以用来唯一标识该链接。在 `<link>` 标签内部,你可以定义该链接的属性,这些属性通常包括:
Visual Properties: 用于描述链接的外观,可以包括几何形状、颜色、纹理等。例如:
<visual>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
</visual>
Collision Properties: 用于描述链接在物理碰撞中的属性。通常与 `visual` 属性相似,但可能有不同的几何形状和分辨率。
<collision>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
</collision>
Inertial Properties:用于描述链接的质量和惯性矩阵。
<inertial>
<mass value="1.0"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
其他属性:你还可以添加其他属性,例如传感器、附着点等。
实际的 `<link>` 元素会包含一个或多个这样的子元素,具体取决于你对链接的描述。下面是一个简化的例子,包含了一个带有视觉、碰撞和惯性属性的链接:
<link name="my_link">
<visual>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
<material name="red">
<color rgba="1 0 0 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
</collision>
<inertial>
<mass value="1.0"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
三、joint 关节标签
在URDF(Unified Robot Description Format)文件中,`<joint>` 元素用于描述机器人模型中连接两个链接的关节。 `<joint>` 元素定义了连接链接的类型、位置、方向以及其他关节属性。
以下是一个 `<joint>` 元素的简单示例:
<joint name="my_joint" type="revolute">
<!-- Joint properties go here -->
<parent link="link1"/>
<child link="link2"/>
</joint>
在这个例子中,`<joint>` 元素有一个名为 "my_joint" 的名称,表示关节的唯一标识符。它的类型是 "revolute",这表示这是一个旋转关节。 `<parent>` 元素指定了连接到关节的父链接(`link1`),而 `<child>` 元素指定了连接到关节的子链接(`link2`)。
在 `<joint>` 标签内部,你可以定义关节的其他属性,这些属性通常包括:
Origin: 指定关节相对于父链接的位置和方向。
<origin xyz="0 0 0" rpy="0 0 0"/>
Axis: 对于旋转关节,指定旋转轴的方向。
<axis xyz="0 0 1"/>
Limit: 对于关节的角度或位移限制。
<limit lower="-3.14" upper="3.14" effort="10" velocity="3.14"/>
-Dynamics: 描述关节的动力学特性,如摩擦和阻尼。
<dynamics damping="0.01" friction="0.1"/>
其他属性: 你还可以添加其他属性,例如传感器、附着点等。
下面是一个带有更多关节属性的示例:
<joint name="my_joint" type="revolute">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="link1"/>
<child link="link2"/>
<axis xyz="0 0 1"/>
<limit lower="-3.14" upper="3.14" effort="10" velocity="3.14"/>
<dynamics damping="0.01" friction="0.1"/>
</joint>