Revolute关节

说明

revolute表明此关节具备的功能就是旋转,两个link通过一个joint连接后,两个link就具备旋转的功能了。

基本配置

<?xml version="1.0"?>
<robot name="mybox">
    ...
    <joint name="joint0" type="revolute">
        <parent link="base_link"/>
        <child link="link1"/>

        <limit effort="30" velocity="1.0" lower="-3.1415926" upper="3.1415926" />
    </joint>
</robot>

joint的作用是用来连接link的。

joint标签属性

  • name属性为必填项,也是唯一值,表明关节的名称。
  • revolute属性为表达的是 两个link连接的方式为 旋转。

parent和child子标签

  • parentchild子标签代表的是两个要连接的link,和link中的name对应。

  • parentchild还表明了谁接在谁上面,child接在parent上。在此处将parent作为参照物,child围绕parent进行旋转。

limit子标签

limit主要是限制child的旋转的范围。

  • lowerupper限制了旋转的弧度范围
  • effort限制的是转动过程中的受力范围.(正负value值,单位为N)
  • velocity限制了转动时的速度,单位为米/秒m/s

旋转位姿

位置

<joint name="joint0" type="revolute">
        <origin xyz="0 0 1" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="link1"/>

        <limit effort="30" velocity="1.0" lower="-3.1415926" upper="3.1415926" />
</joint>

Tip

体会origin标签中xyz坐标的参考坐标系是谁?

origin标签中xyz坐标的参考坐标系parent对应的link所在的参考坐标系。

<?xml version="1.0"?>
<robot name="mybox">
    <material name="red">
        <color rgba="1.0 0 0 1.0"/>
    </material>
    <material name="green">
        <color rgba="0 1.0 0 1.0"/>
    </material>

    <link name="base_link">
        <visual>
            <origin xyz="0 0 0.5" rpy="0 0 0"/>
            <geometry>
                <box size="0.1 0.2 1"/>
            </geometry>
            <material name="red"/>
        </visual>
    </link>

    <link name="link1">
        <visual>
            <origin xyz="0 0 0.5" rpy="0 0 0"/>
            <geometry>
                <box size="0.1 0.2 1"/>
            </geometry>
            <material name="green"/>
        </visual>
    </link>

    <joint name="joint0" type="revolute">
        <origin xyz="0 0 1" rpy="0 0 0"/>
        <parent link="base_link"/>
        <child link="link1"/>

        <limit effort="30" velocity="1.0" lower="-3.14" upper="3.14" />
    </joint>
</robot>

Tip

体会 jointparent,child间坐标系的相对关系。

jointorigin坐标系位姿,是相对于parent对应link所在的坐标系的。如果parent对应的link是根,那么这个相对坐标系就是世界坐标系。

child对应的参考坐标系是joint.

姿态

<joint name="joint0" type="revolute">
        <origin xyz="0 0 1" rpy="0 0 1.57"/>
        <parent link="base_link"/>
        <child link="link1"/>

        <limit effort="30" velocity="1.0" lower="-3.14" upper="3.14" />
</joint>
<origin xyz="0 0 1" rpy="0 1.57 1.57"/>

Tip

体会 旋转是围绕谁的?

jointrpy的旋转,指的是child对应的link,围绕当前joint坐标系的轴进行旋转。

旋转轴

<joint name="joint0" type="revolute">
        <origin xyz="0 0 1" rpy="0 0 1.57"/>
        <axis xyz="1 0 0"/>
        <parent link="base_link"/>
        <child link="link1"/>

        <limit effort="30" velocity="1.0" lower="-3.14" upper="3.14" />
</joint>

Tip

axis规定了旋转的轴向。此处值为三个,分别代表了x轴,y轴,z轴的向量值。轴向就是三个向量和的轴向.

默认值为1 0 0,表示围绕x轴旋转。

0 1 0表示围绕y轴旋转

0 0 1表示围绕z轴旋转