ROS中的URDF Link元素参考,中文翻译
原文地址http://wiki.ros.org/urdf/XML/link
1. link 元素
link元素的body中包含了惯性、视觉特征、碰撞属性等内容
下面是一个使用link元素的例子
<link name="my_link">
<inertial>
<origin xyz="0 0 0.5" rpy="0 0 0"/>
<mass value="1"/>
<inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="1 1 1" />
</geometry>
<material name="Cyan">
<color rgba="0 1.0 1.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder radius="1" length="0.5"/>
</geometry>
</collision>
</link>
2. 参数
- name (必须的)
- link的名字
3. 子元素
- <inertial> (可选的)
- link中的惯性属性
- <origin> (可选的): 默认值为一致的
- 这是惯性参考系相对于Link参考系的位姿. 惯性参考系的原点必须在link的重心上.惯性参考系不需要与惯性主轴(转动惯量的主轴坐标系)对齐。
- xyz (可选: 默认为0向量)
- 代表x,y,z轴方向上的偏移
- rpy (可选: 默认值为一致的)
- 代表roll,pitch和yaw角,用弧度表示
- <mass>
- 该元素的value属性表示了link的质量
- <inertia>
- 3*3的转动惯量矩阵,代表惯量参考系。由于转动惯性矩阵的对称性,只需要6个上三角元素 ixx, ixy, ixz, iyy, iyz, izz作为属性
- <visual>(可选)
- link的视觉属性.本元素形象化的指定了物体的形状(盒状、圆筒状等).注意:生成相同的link可以使用多个不同的<visual>实例.它们定义的几何结构联合形成了link的视觉表示.
- name(可选)
- 指定link的几何结构中一部分的名字.这可以用来引用link几何结构中的特定位.
- <origin> (可选的): 默认值为一致的
- 视觉元素的参考系相对于link参考系的位姿
- xyz (可选: 默认为0向量)
- 代表x,y,z轴方向上的偏移
- rpy (可选: 默认值为一致的)
- 代表roll,pitch和yaw角,用弧度表示
- <geometry>(必须的)
- 物体的视觉形状,可从下面选一个:
- <box>
- 一个立方体,size属性包含三维的长度,原点在立方体中心
- <cylinder>
- 一个圆柱体,需指定radius(半径)和length(高)属性,原点在圆柱体中心
- <sphere>
- 一个球体,需指定radius(半径)属性,原点在球体中心
- <mesh>
- 一个不规则网线图,通过元素filename指定网线图文件,可选的元素scale用来指定缩放,缩放的为网线图的轴对称边界框围成的立方体.虽然.stl文件格式也被支持,但是为了得到最好的质地和颜色,推荐使用Collada的.dae文件格式.不能在多个机器上使用同一个模型.必须使用本地文件.
- <material>(可选的)
- 视觉元素的材质.该选项被允许在顶层元素robot中指定一个link物体之外的材质元素,在link元素内你可以使用name属性来引用一种材质
- name 材质的名称
- <color>(可选)
- rgba参数,使用四个数组的集合表示材质的颜色,分别代表red/green/blue/alpha,其中数组的取值为[0,1]
- <texture>(可选)
- 通过filename参数来指定一种纹理
- <collision>(可选)
- link的碰撞属性.请注意,这可能与link的visual属性不同,例如,通常使用更简单的碰撞模型来减少计算时间.注意:同一link可以存在多个<collision>标签实例.它们定义的几何结构联合形成了link的碰撞表示.
- name(可选)
- 指定link的碰撞几何中的一部分的名字,这可以用来引用link碰撞几何中特定位.
- <origin> (可选的): 默认值为一致的
- 碰撞元素的参考系相对于link参考系的位姿
- xyz (可选: 默认为0向量)
- 代表x,y,z轴方向上的偏移
- rpy (可选: 默认值为一致的)
- 代表roll,pitch和yaw角,用弧度表示
- <geometry>
- 参考visual元素中关于geometry元素的表述
4. 推荐的mesh分辨率
对于使用ROS运动规划程序包进行碰撞检查,建议将每个link中放入URDF的碰撞网格的面数尽可能少(理想情况下小于1000).如果可能,鼓励使用其他基元近似网格.
5. 多个碰撞体
即使有时候会用到,但是我们还是决定URDF中不支持多个碰撞体.URDF仅被用来表示实际机器人的属性,而不是为额外的实物做碰撞检测,比如控制器碰撞检测. 在URDF中,<visual>元素应尽可能准确到真实机器人,并且<collision>元素仍然应该是近似的,尽管网格中的三角形要少得多.
如果确实需要courser-grain,超大尺寸的碰撞几何图形,例如碰撞检查和控制器,则可以将这些网格/几何图形移动到自定义XML元素。 例如,如果您的控制器需要一些特殊的粗略碰撞检查几何,您可以在<collision>元素之后添加标记<collision_checking>:
<link name="torso">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://robot_description/meshes/base_link.DAE"/>
</geometry>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
<geometry>
<mesh filename="package://robot_description/meshes/base_link_simple.DAE"/>
</geometry>
</collision>
<collision_checking>
<origin rpy="0 0 0" xyz="-0.065 0 0.0"/>
<geometry>
<cylinder length="0.7" radius="0.27"/>
</geometry>
</collision_checking>
<inertial>
...
</inertial>
</link>
URDF将忽略这些自定义元素,如“collision_checking”,您的特定程序可以解析XML本身以获取此信息.