打开 07-physics.urdf ,以 base_link 为例
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
1.碰撞属性(Collision)
到目前为止,我们只指定了links的连接,用visual定义了机器人的外形。
然而,为了使碰撞检测工作,或者模拟机器人在类似于 Gazebo 的地方工作,我们还需要定义一个碰撞元素。
-
碰撞元素是 link 的子元素,与 visual 处于同一级别。
-
碰撞元素定义其形状的方式与 visual 相同,带有几何标记。几何标记的格式与 visual 的格式完全相同。
-
你也可以用与碰撞标记的子元素相同的方式指定原点(origin)(与可视的一样)
-
在许多情况下,碰撞元素的形状和原点 可以和 visual完全相同。
-
然而,有两个主要情况不行:
快速处理 --- 对两个网格进行碰撞检测,相对于两个简单几何体进行碰撞检测要复杂得多。因此,用碰撞元素中更简单的几何图形替换网格。
安全区 --- 你可能需要限制向敏感设备接近的移动。例如,如果我们不希望任何东西与机器人的头部发生碰撞,我们可以将碰撞几何体定义为包围其头部的圆柱体,以防止任何东西接近其头部。
2.物理属性(Physical Properties)
为了使你的模型能够正确地模拟,你需要定义你的机器人的几个物理特性,像Gazebo就需要这样的物理特性。
2.1 惯性(Inertia)
每个被模拟的 link 都需要一个惯性标签。
-
此元素也是link的子元素。
-
质量(mass) 以 kg 为单位。
-
3x3转动惯量矩阵由惯量元素指定。因为这是对称的,所以只能用6个元素来表示。
如:
ixx | ixy | ixz |
ixy | iyy | iyz |
ixz | iyz | izz |
2.2 接触系数(Contact Coefficients)
您还可以定义 link 彼此接触时的行为方式。
这是通过名为“接触系数(contact_coefficients)”的碰撞标签的子元素完成的。要指定三个属性:
mu——摩擦系数
kp——刚度系数
kd——阻尼系数
2.3 关节动力学(Joint Dynamics)
关节的移动方式由关节的 dynamics tag 定义。这里有两个属性:
-
摩擦-物理静态摩擦。对于棱柱形接头,单位为牛顿。对于旋转接头,单位为牛顿米。
-
阻尼-物理阻尼值。对于棱柱关节,单位为每米牛顿秒。对于旋转接头,每弧度牛顿米秒。