10.3 joint

元素joint用于描述关节的运动学和动力学属性。

10.3.1 <joint>元素

<joint>元素用于描述关节的运动学和动力学属性,此外还可以指定关节的安全限制(safety limits)。

下面是一个<joint>元素的示例:

<joint name="my_joint" type="floating">
   <origin xyz="0 0 1" rpy="0 0 3.1416"/>
   <parent link="link1"/>
   <child link="link2"/>

   <calibration rising="0.0"/>
   <dynamics damping="0.0" friction="0.0"/>
   <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
   <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
</joint>

10.3.2 属性

<joint>元素具有以下两个属性:

(1)name属性

是必须指定的属性,用于指定关节的唯一名称。

(2)type属性

是必须指定的属性,用于指定关节类型,可以是以下六种关节类型之一:

● 旋转(revolute)关节—沿轴旋转并具有由上限和下限指定的有限旋转范围的铰链关节。

● 连续(continuous)关节—绕轴旋转且没有上下限的连续铰链关节。

 棱柱(prismatic)关节—沿轴滑动且具有由上限和下限指定的有限滑动范围的滑动关节。

● 固定(fixed)关节—并不是真正的关节,因为它不能移动。这种类型的关节其所有自由度都被锁定。这种类型的关节不需要轴、校准、动力学、限制或安全控制器。

● 浮动(floating)关节—这种关节允许所有6个自由度的运动。

 平面(planar)关节—这种关节允许在垂直于轴的平面内运动。

10.3.3 子元素

<joint>元素有以下9个子元素:<origin>、<parent>、<child>、<axis>、<calibration>、<dynamics>、<limit>、<mimic>和<safety_controller>。

1、<origin>子元素

可选子元素,用于指定从父级链接到子级链接的坐标变换。关节参考坐标系的原点就位于子级链接参考坐标系的原点,如上图所示。如果未指定,则默认与子级链接的原点相同。

该元素可以用以下两个子元素来描述:

①xyz

可选子元素,用于表达关节参考坐标系原点对子级链接参考坐标系原点在xyz三个轴上的偏移量,默认为0向量。所有偏移量的单位均为米。

②rpy

可选子元素,用于表达关节坐标系绕xyz三个固定轴的旋转角度即横滚角(roll)、俯仰角(pitch)和偏航角(yaw),单位为弧度。如果未指定该子元素的值,则默认情况下为0向量,即不绕三个轴旋转或与子级链接参考坐标系的三个轴方向相同。

2、<parent>子元素

必须指定的子元素,该子元素用必须指定其值的属性link来指定此关节的父级链接名称,即在机器人树形结构中作为此关节的父级链接的链接名称。

3、<child>子元素

必须指定的子元素,该子元素用必须指定其值的属性link来指定此关节的子级链接名称,即在机器人树形结构中作为此关节的子级链接的链接名称。

4、<axis>子元素

可选子元素,默认值为(1,0,0)。用于指定关节坐标系中的关节轴。对于旋转关节或连续关节而言就是其旋转轴,对于棱柱关节而言就是其平移滑动轴,对于平面关节而言就是其表面法线。轴是在关节参考坐标系中指定的。固定关节和浮动关节不会使用axis字段。

具有一个必须指定的子元素xyz,用于指定关节轴,其值是一个向量,该向量的3个分量分别对应xyz三个轴,且该向量必须是一个归一化的向量,即只有其中1个分量的值为1,其余2个分量的值均为0。

5、<calibration>子元素

可选子元素,用于指定关节的参考位置,该参考位置会用于校准关节的绝对位置。

此子元素具有以下2个可选属性:

(1)rising

当关节向正方向移动时,此参考位置将会触发上升。

(2)falling

当关节向反方向移动时,此参考位置将会触发下降。

6、<dynamics>子元素

可选子元素,用于指定关节的物理(动力学)属性。这些元素的值用于指定关节的建模属性,对仿真特别有用。

此子元素具有以下2个可选属性:

(1)damping

可选属性,默认值为0。用于指定关节的物理阻尼值。

(2)friction

可选属性,默认值为0。用于指定关节的物理静摩擦。

7、<limit>子元素

仅对旋转关节和棱柱关节是必须的,用于指定关节限制。此子元素可以包含以下属性:

一个<limit>子元素可以含有以下属性:

(1)lower属性

可选属性,默认值为0。该属性用于指定关节的下限值(对于旋转关节而言其单位为弧度,而对于棱柱关节而言其单位为米)。如果是连续关节,则会省略此属性。

(2)upper属性

可选属性,默认值为0。该属性用于指定关节的上限值(对于旋转关节而言其单位为弧度,而对于棱柱关节而言其单位为米)。如果是连续关节,则会省略此属性。

(3)effort属性

必选属性,用于强制执行关节最大作用力。参见safety limits

(4)velocity属性

必选属性,用于强制执行关节最大速度。参见safety limits

8、<mimic>子元素

可选子元素,是ROS Groovy及其后续发行版的新元素。

此标签用于指定某个定义的关节模仿另一个现有关节。此关节的值可以用公式value = multiplier * other_joint_value + offset进行计算。 该子元素具有以下预期和可选属性:

(1)joint属性

必选属性,用于指定要模仿的关节名称。

(2)multiplier属性

可选属性,用于指定上述计算公式中的乘数

(3)offset属性

可选属性,用于指定要添加到上述计算公式中的偏移量。默认值为0(对旋转关节而言其单位为弧度,对棱柱关节而言其单位为米)。

9、<safety_controller>子元素

可选子元素,可以含有以下属性:

(1)soft_lower_limit属性

可选属性,默认值为0。该属性用于指定关节的下限(边界),安全控制器将会从该下限值开始限制关节的位置。这个限制值要大于关节<limit>元素的lower属性值(见上文)。有关更多详细信息,请参阅安全限制。

(2)soft_upper_limit属性

可选属性,默认值为0。该属性用于指定关节的上限(边界),安全控制器将会从该上限值开始限制关节的位置。这个限制值要小于关节<limit>元素的upper属性值(见上文)。有关更多详细信息,请参阅安全限制。

(3)k_position属性

可选属性,默认值为0。该属性用于指定位置和速度限制之间的关系。有关更多详细信息,请参阅安全限制

(4)k_velocity属性

必选属性,用于指定作用力(effort)和速度限制之间的关系。有关更多详细信息,请参阅安全限制

英语原文地址:wiki.ros.org/urdf/XML