目标:学习如何为连杆(link-被翻译为链接)添加碰撞和惯性属性,以及如何为关节添加关节动力学。
教程级别:中级
时间:10 分钟
目录
碰撞
物理性质
惯性
接触系数
关节动力学
其他标签
下一步
在本教程中,我们将学习如何为您的 URDF 模型添加一些基本的物理属性以及如何指定其碰撞属性。
碰撞
到目前为止,我们只用一个子元素 visual
指定了我们的链接,这个子元素定义了机器人看起来的样子(这并不奇怪)。然而,为了使碰撞检测工作或模拟机器人,我们还需要定义一个 collision
元素。以下是具有碰撞和物理属性的新 urdf。
以下是我们新基础链接的代码。
<link name="base_link">
<!-- 定义一个名为base_link的链接 -->
<visual>
<!-- 定义视觉元素 -->
<geometry>
<!-- 定义几何形状 -->
<cylinder length="0.6" radius="0.2"/>
<!-- 定义一个圆柱体,长度为0.6,半径为0.2 -->
</geometry>
<material name="blue">
<!-- 定义一个名为blue的材质 -->
<color rgba="0 0 .8 1"/>
<!-- 定义颜色为蓝色,RGBA值为(0, 0, 0.8, 1) -->
</material>
</visual>
<collision>
<!-- 定义碰撞元素 -->
<geometry>
<!-- 定义几何形状 -->
<cylinder length="0.6" radius="0.2"/>
<!-- 定义一个圆柱体,长度为0.6,半径为0.2 -->
</geometry>
</collision>
</link>
碰撞元素是链接对象的直接子元素,与视觉标签处于同一级别。
碰撞元素通过几何标签以与视觉元素相同的方式定义其形状。几何标签的格式与视觉元素的格式完全相同。
您还可以以与视觉元素相同的方式指定碰撞标签的子元素中的原点。
在许多情况下,您会希望碰撞几何和原点与视觉几何和原点完全相同。然而,有两种主要情况您不会这样做:
更快的处理。对两个网格进行碰撞检测比对两个简单几何体进行碰撞检测要复杂得多。因此,您可能希望在碰撞元素中用更简单的几何体替换网格。
安全区域。您可能希望限制靠近敏感设备的移动。例如,如果我们不希望任何东西碰撞到 R2D2 的头部,我们可以将碰撞几何体定义为包围他头部的圆柱体,以防止任何东西过于靠近他的头部。
物理性质
为了使您的模型正确模拟,您需要定义机器人的一些物理属性,即物理引擎(如 Gazebo)所需的属性。
惯性
每个被模拟的链接元素都需要一个惯性标签。这里有一个简单的例子。
<link name="base_link">
<!-- 定义一个名为base_link的链接 -->
<visual>
<!-- 定义视觉元素 -->
<geometry>
<!-- 定义几何形状 -->
<cylinder length="0.6" radius="0.2"/>