ROS2与URDF入门教程-向URDF模型添加物理和碰撞属性
说明:
- 介绍如何向 URDF 模型添加一些基本物理属性以及如何指定其碰撞属性
步骤:
- 用一个子元素指定了我们的链接visual。然而,为了让碰撞检测工作或模拟机器人,我们还需要定义一个collision元素。 这是具有碰撞和物理特性的新 urdf。新的基本链接的代码
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
<material name="blue">
<color rgba="0 0 .8 1"/>
</material>
</visual>
<collision>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</collision>
</link>
碰撞元素是链接对象的直接子元素,与视觉标签处于同一级别
碰撞元素以与视觉元素相同的方式定义其形状,并带有几何标记。几何标记的格式在此处与视觉对象完全相同
可以以与碰撞标记的子元素相同的方式指定原点(与视觉一样)
Inertia,每个被模拟的链接元素都需要一个惯性标签
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
<material name="blue">
<color rgba="0 0 .8 1"/>
</material>
</visual>
<collision>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0.4" ixy="0.0" ixz="0.0" iyy="0.4" iyz="0.0" izz="0.2"/>
</inertial>
</link>
此元素也是链接对象的子元素。
质量以公斤定义。
3x3 转动惯量矩阵由惯量元素指定。由于这是对称的,因此它只能由 6 个元素表示。
这些信息可以通过 MeshLab 等建模程序提供给您。几何基元(圆柱、盒子、球体)的惯性可以使用维基百科的惯性张量列表计算(并在上面的例子中使用)。
惯性张量取决于物体的质量和质量分布。一个好的初步近似是假设质量在物体的体积中分布相等,并根据物体的形状计算惯性张量,如上所述。
如果不确定要放什么,ixx/iyy/izz=1e-3 或更小的矩阵通常是中型链路的合理默认值(它对应于边长为 0.1 m、质量为 0.6 kg 的盒子)。单位矩阵是一个特别糟糕的选择,因为它通常太高了(它对应于一个边长为 0.1 m、质量为 600 kg 的盒子!)。
您还可以指定原点标记来指定重心和惯性参考系(相对于链接的参考系)。
使用实时控制器时,零(或几乎为零)的惯性元素会导致机器人模型在没有警告的情况下崩溃,并且所有链接都将显示其原点与世界原点重合。
接触系数。定义链接在彼此接触时的行为方式。这是通过名为 contact_coefficients 的碰撞标签的子元素完成的。需要指定三个属性
mu -摩擦系数
kp -刚度系数
kd -阻尼系数
关节的运动方式由关节的动力学标签定义。
这里有两个属性:
friction- 物理静摩擦。对于棱柱接头,单位是牛顿。对于旋转接头,单位是牛顿米。
damping- 物理阻尼值。对于棱柱接头,单位是牛顿秒/米。对于旋转接头,牛顿米秒每弧度。
其他标签
在纯 URDF 领域(即不包括 Gazebo 特定标签),还有两个标签可以帮助定义关节:校准和安全控制器。
查看规范,因为它们不包含在本教程中。
参考:
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号