ROS自学笔记十四:URDF语法详解

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ironmao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值