<Joint> 元素

joint元素描述了机器人关节的运动学和动力学,并且指定了关节的安全限制。

下面是一个使用joint元素的例子:

   1  <joint name="my_joint" type="floating">
   2     <origin xyz="0 0 1" rpy="0 0 3.1416"/>
   3     <parent link="link1"/>
   4     <child link="link2"/>
   5 
   6     <calibration rising="0.0"/>
   7     <dynamics damping="0.0" friction="0.0"/>
   8     <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
   9     <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
  10  </joint>

joint.png

属性

joint元素中拥有两个属性:

  • name (必需的)

    • 指定joint的名字(唯一的)

    type (必需的)

    • 指定joint的类型,有下列选项:
      • revolute - 可以绕着一个轴旋转的铰链关节,有最大值和最小值限制。
      • continuous - 连续型的铰链关节,可以绕一个轴旋转,没有最大值和最小值限制。
      • prismatic - 滑动关节,可以沿着一个轴滑动,有最大值和最小值限制。
      • fixed - 这不是一个实际的关节,因为它无法运动,所有的自由度都被锁定。这种类型的关节不需要指定轴、动力学特征、标度和最大值最小值限制。
      • floating - 这是一个具有6个自由度的关节。
      • planar - 此关节在一个平面内运动,垂线是运动轴。

子元素

joint元素拥有下列几个子元素:

  • <origin> (optional: defaults to identity if not specified)

    • 从parent link到child link的变换,joint位于child link的原点,具体如图所示。

      xyz (optional: defaults to zero vector)

      • 代表

        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        轴方向上的偏移,单位米。

      rpy (optional: defaults 'to zero vector 'if not specified)

      • 代表绕着固定轴旋转的角度:roll绕着x轴,pitch绕着y轴,yaw绕着z轴,用弧度表示。

    <parent> (required)

    • parent link的名字是一个强制的属性:

      link

      • parent link的名字,是这个link在机器人结构树中的名字。

    <child> (required)

    • child link的名字是一个强制的属性:

      link

      • child link的名字,是这个link在机器人结构树中的名字。

    <axis> (optional: defaults to (1,0,0))

    • joint的axis轴在joint的坐标系中。这是revolute joint旋转的轴,prismatic joint移动的轴,是planar joint的标准平面。这个轴在joint坐标系中被指定。fixed和floating类型的joint不需要用到这个字段。

      xyz (required)

      • 代表轴向量的

        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        分量,这应该是一个标准化的向量。

    <calibration> (optional)

    • joint的参考点,用来矫正joint的绝对位置。

      rising (optional)

      • 当joint正向运动时,参考点会触发一个上升沿。

      falling (optional)

      • 当joint正向运动时,参考点会触发一个下降沿。

    <dynamics> (optional)

    • 该元素用来指定joint的物理性能。它的值被用来描述joint的建模性能,尤其是在仿真的时候。

      damping (optional, defaults to 0)

      • joint的阻尼值。(移动关节为

        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        ,旋转关节为
        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        ).

      friction (optional, defaults to 0)

      • joint的摩擦力值(移动关节为

        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        , 旋转关节为
        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        ).

    <limit> (required only for revolute and prismatic joint)

    • 该元素包含以下属性:

      lower (optional, defaults to 0)

      • 指定joint运动范围下界的属性(revolute joint的单位为弧度,prismatic joint的单位为米),连续型的joint忽略该属性。

      upper (optional, defaults to 0)

      • 指定joint运动范围上界的属性(revolute joint的单位为弧度,prismatic joint的单位为米),连续型的joint忽略该属性。

      effort (required)

      • 该属性指定了joint运行时的最大的力。 (

        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        applied effort
        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        effort
        latex error! exitcode was 1 (signal 0), transscript follows:
        
        This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=latex)
        
        kpathsea: Running mktexfmt latex.fmt
        mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
        mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
        mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
        mktexfmt:   /usr/share/httpd/.texlive2018/texmf-config/web2c/fmtutil.cnf
        /usr/bin/mktexfmt: mkdir(/usr/share/httpd/.texlive2018/) failed: Permission denied
        I can't find the format file `latex.fmt'!
        
        ). 详见安全限制.

      velocity (required)

    <mimic> (optional) (New with ROS Groovy. See issue)

    • 这个标签用于指定已定义的joint来模仿已存在的joint。这个joint的值可以用以下公式计算 value = multiplier * other_joint_value + offset. 有如下可选的属性: joint (required)

      • 需要模仿的joint的名字。

      multiplier (optional)

      • 指定上述公式中的乘数因子。

      offset (optional)

      • 指定上述公式中的偏移项。默认值为0(revolute joint的单位为弧度,prismatic joint的单位为米)。

    <safety_controller> (optional)

    • 该元素包含下列属性:

      soft_lower_limit (optional, defaults to 0)

      • 该属性指定了joint安全控制边界的下界,是joint安全控制的起始限制点。这个值需要大于上述的limit中的lower值。 更多细节详见 安全限制

      soft_upper_limit (optional, defaults to 0)

      • 该属性指定了joint安全控制边界的上界,是joint安全控制的起始限制点。这个值需要小于上述的limit中的upper值。 更多细节详见 安全限制

      k_position (optional, defaults to 0)

      • 本属性用于说明位置和速度之间的关系。 更多细节详见 安全限制

      k_velocity (required)

      • 本属性用于说明力和速度之间的关系。 更多细节详见 安全限制

Wiki: cn/urdf/XML/joint (last edited 2019-04-21 09:42:20 by Yoshito Okada)