
机器人正运动学方程的d-h表示法.docx
21页2.7 机器人正运动学方程的 D-H 表示法在 1955 年,Denavit 和 Hartenberg 在“ASME Journal of Applied Mechanics”发表了一篇论文,后来利用那个这篇论文来对机器人进行表示和建模,并导出了它们的运动方程,这已成为表示机器人和对机器人运动进行建模的标准方法,所以必须学习这部分内容Denavit-Hartenberg(D_H)模型表示了对机器人连杆和关节进行建模的一种非常简单的方法,可用于任何机器人构型,而不管机器人的结构顺序和复杂程度如何它也可用于表示已经讨论过的在任何坐标中的变换,例如直角坐标、圆柱坐标、球坐标、欧拉角坐标及 RPY 坐标等另外,它也可以用于表示全旋转的链式机器人、SCARA 机器人或任何可能的关节和连杆组合尽管采用前面的方法对机器人直接建模会更快、更直接,但 D-H 表示法有其附加的好处,使用它已经开发了许多技术,例如,雅克比矩阵的计算和力分析等假设机器人由一系列关节和连杆组成这些关节可能是滑动(线性)的或旋转(转动)的,它们可以按任意的顺序放置并处于任意的平面连杆也可以是任意的长度(包括零) ,它可能被弯曲或扭曲,也可能位于任意平面上。
所以任何一组关节和连杆都可以构成一个我们想要建模和表示的机器人为此,需要给每个关节指定一个参考坐标系,然后,确定从一个关节到下一个关节(一个坐标系到下一个坐标系)来进行变换的步骤如果将从基座到第一个关节,再从第一个关节到第二个关节直至到最后一个关节的所有变换结合起来,就得到了机器人的总变换矩阵在下一节,将根据 D-H 表示法确定一个一般步骤来为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵图 2.25 通用关节—连杆组合的 D-H 表示假设一个机器人由任意多的连杆和关节以任意形式构成图 2.25 表示了三个顺序的关节和两个连杆虽然这些关节和连杆并不一定与任何实际机器人的关节或连杆相似,但是他们非常常见,且能很容易地表示实际机器人的任何关节这些关节可能是旋转的、滑动的、或两者都有尽管在实际情况下,机器人的关节通常只有一个自由度,但图 2.25 中的关节可以表示一个或两个自由度图 2.25(a)表示了三个关节,每个关节都是可以转动或平移的第一个关节指定为关节 n,第二个关节为关节 n+1,第三个关节为关节 n+2在这些关节的前后可能还有其他关节。
连杆也是如此表示,连杆 n 位于关节 n 与 n+1 之间,连杆 n+1 位于关节 n+1 与 n+2 之间为了用 D-H 表示法对机器人建模,所要做的第一件事是为每个关节指定一个本地的参考坐标系因此,对于每个关节,都必须指定一个 z 轴和 x 轴,通常并不需要指定 y 轴,因为 y 轴总是垂直于 x 轴和 z 轴的此外,D-H 表示法根本就不用 y 轴以下是给每个关节指定本地参考坐标系的步骤: 所有关节,无一例外的用 z 轴表示如果关节是旋转的,z 轴位于按右手规则旋转的方向如果关节是滑动的,z 轴为沿直线运动的方向在每一种情况下,关节 n 处的 z 轴(以及该关节的本地参考坐标系)的下表为 n-1例如,表示关节数 n+1 的 z 轴是 这些简单规则可使我们n很快地定义出所有关节的 z 轴对于旋转关节,绕 z 轴的旋转( 角)是关节变量对于滑动关节,沿 z 轴的连杆长度 d 是关节变量 如图 2.25(a )所示,通常关节不一定平行或相交因此,通常 z 轴是斜线,但总有一条距离最短的公垂线,它正交于任意两条斜线通常在公垂线方向上定义本地参考坐标系的 x 轴所以如果 表示 与 之na1n间的公垂线,则 的方向将沿 。
同样,在 与 之间的公垂线为nxnanz1, 的方向将沿 注意相邻关节之间的公垂线不一定相交或1na1共线,因此,两个相邻坐标系原点的位置也可能不在同一个位置根据上面介绍的知识并考虑下面例外的特殊情况,可以为所有的关节定义坐标系 如果两个关节的 z 轴平行,那么它们之间就有无数条公垂线这时可挑选与前一关节的公垂线共线的一条公垂线,这样做就可以简化模型 入股两个相邻关节的 z 轴是相交的,那么它们之间就没有公垂线(或者说公垂线距离为零) 这时可将垂直于两条轴线构成的平面的直线定义为 x 轴也就是说,其公垂线是垂直于包含了两条 z 轴的平面的直线,它也相当于选取两条 z 轴的叉积方向作为 x 轴这也会使模型得以简化在图 2.25(a )中, 角表示绕 z 轴的旋转角,d 表示在 z 轴上两条相邻的公垂线之间的距离,a 表示每一条公垂线的长度(也叫关节偏移量) ,角 表示两个相邻的 z 轴之间的角度 (也叫关节扭转) 通常,只有 和 d 是关节变量下一步来完成几个必要的运动,即将一个参考坐标系变换到下一个参考坐标系假设现在位于本地坐标系 ,那么通过以下四步标准运动即可到达nzx下一个本地坐标系 。
1nzx(1)绕 轴旋转 (如图 2.25(a)与(b)所示) ,它使得 和 互相nz nx1平行,因为 和 都是垂直于 轴的,因此绕 轴旋转 使它们nanznz平行(并且共面) 2)沿 轴平移 距离,使得 和 共线(如图 2.25(c)所示) 因nz1ndnx1为 和 已经平行并且垂直于 ,沿着 移动则可使它们互相重叠xzn在一起3)沿 轴平移 的距离,使得 和 的原点重合(如图 2.25(d)和n1nanx1(e )所示) 这是两个参考坐标系的原点处在同一位置4)将 轴绕 轴旋转 ,使得 轴与 轴对准(如图 2.25(f)所nz1nx1nnz1n示) 这时坐标系 n 和 n+1 完全相同(如图 2.25(g)所示) 至此,我们成功地从一个坐标系变换到了下一个坐标系在 n+1 和 n+2 坐标系间严格地按照同样的四个运动顺序可以将一个坐标变换到下一个坐标系如有必要,可以重复以上步骤,就可以实现一系列相邻坐标系之间的变换从参考坐标系开始,我们可以将其转换到机器人的基座,然后到第一个关节,第二个关节……,直至末端执行器这里比较好的一点是,在任何两个坐标系之间的变换均可采用与前面相同的运动步骤。
通过右乘表示四个运动的四个矩阵就可以得到变换矩阵 A,矩阵 A 表示了四个依次的运动由于所有的变换都是相对于当前坐标系的(即他们都是相对于当前的本地坐标系来测量与执行) ,因此所有的矩阵都是右乘从而得到结果如下: 11111 ,0,,0, nnnnnn axRotaTrdTrazRotAT 101001 nnn dCS(2.51) 1001011nnnCSa(2.52) 1001111 nnnnn dSSaCA比如,一般机器人的关节 2 与关节 3 之间的变换可以简化为:100333332 dCSSaAT(2.53)在机器人的基座上,可以从第一个关节开始变换到第二个关节,然后到第三个……,再到机器人的手,最终到末端执行器若把每个变换定义为,则可以得到许多表示变换的矩阵在机器人的基座与手之间的总变换则为:(2.54)nnRHATTLL321321其中 n 是关节数对于一个具有六个自由度的机器人而言,有 6 个 A 矩阵。
为了简化 A 矩阵的计算,可以制作一张关节和连杆参数的表格,其中每个连杆和关节的参数值可从机器人的原理示意图上确定,并且可将这些参数代入A 矩阵表 2.1 可用于这个目的在以下几个例子中,我们将建立必要的坐标系,填写参数表,并将这些数值代入 A 矩阵首先从简单的机器人开始,以后再考虑复杂的机器人表 2.1 D-H 参数表# d a 123456例 2.18 对于如图 2.26 所示的简单机器人,根据 D-H 表示法,建立必要的坐标系,并填写相应的参数表解:为方便起见,在此例中,假设关节 2,3 和 4 在同一平面内,即它们的值为 0为建立机器人的坐标系,首先寻找关节(如图 2.26 所示) 该nd机器人有六个自由度,在这个简单机器人中,所有的关节都是旋转的第一个关节(关节 1)在连杆 0(固定基座)和连杆 1 之间,关节 2 在连杆1 和连杆 2 之间,等等首先,如前面已经讨论过的那样,对每个关节建立 z 轴,接着建立 z 轴观察图 2.27 和图 2.28 所示的坐标可以发现,图2.28 是图 2.27 的简化线图应注意每个坐标系原点 3 在它所在位置的原因图 2.26 具有六个自由度的简单链式机器人图 2.27 简单六个自由度链式机器人的参考坐标系图 2.28 简单六个自由度链式机器人的参考坐标系线图从关节 1 开始, 表示第一个关节,它是一个旋转关节。
选择 与参考坐0z 0x标系的 x 轴平行,这样做仅仅是为了方便, 是一个固定的坐标轴,表示机器0x人的基座,它是不动的第一个关节的运动是围绕着 - 轴进行的,但这两个0zx轴并不运动接下来,在关节 2 处设定 ,因为坐标轴 和 是相交的,所以1z1垂直于 和 在 和 之间的公垂线方向上, 在 和 之间的公垂线1x0z12x1z 3x2z3方向上,类似地, 在 和 之间的公垂线方向上最后, 和 是平行且共434 56线的 表示关节 6 的运动,而 表示末端执行的运动通常在运动方程中不5z6z包含末端执行器,但应包含末端执行器的坐标系,这是因为它可以容许进行从坐标系 出发的变换同时也要注意第一个和最后一个坐标系的原点的位5x置,它们将决定机器人的总编换方程可以在第一个和最后的坐标系之间建立其他的(或不同的)中间坐标系,但只要第一个和最后的坐标系没有改变,机器人的总变换便是不变的应注意的是,第一个关节的原点并不在关节的实际位置,但证明这样做是没有问题的,因为无论实际关节是高一点还是低一点,机器人的运动并不会有任何差异因此,考虑原点位置时可不用考虑基座上关节的实际位置接下来,我们将根据已建立的坐标系来填写表 2.2 中的参数。
参考前一节中任意两个坐标系之间的四个运动的顺序从 开始,有一个旋转运动将0xz转到了 ,为使得 与 轴重合,需要沿 和沿 的平移均为零,还需要一0x10x11个旋转将 转到 ,注意旋转是根据右手规则进行的,即将右手手指按旋转的0z方向弯曲,大拇指的方向则为旋转坐标轴的方向到了这时, 就变换到0xz了 1xz接下来,绕 旋转 ,将 转到了 ,然后沿 轴移动距离 ,使坐标系1z21x22x2a原点重合由于前后两个 z 轴是平行的,所以没有必要绕 x 轴旋转按照这样的步骤继续做下去,就能得到所需要的结果必须要认识到,与其他机械类似,机器人也不会保持原理图中所示的一种构型不变尽管机器人的原理图是二维的,但必须要想象出机器人的运动,也就是说,机器人的不同连杆和关节在运动时,与之相连的坐标系也随之运动如果这时原理图所示机器人构型的坐标轴处于特殊的位姿状态,当机器人移动时它们又会处于其他的点和姿态上比如, 总是沿着关节 3 与关节 4 之间连3x线 的方向当机器人的下臂绕关节 2 旋转而运动在确定参数时,必须记住3a这一点表 2.2 例 2.19 机器人的参数# d a 1 10 0 902 20 203 30 3a04 40 4-905 50 0 906 60 0 0表示旋转关节的关节变量,d 表示滑动关节的关节变量。
因为这个机器人的关节全是旋转的,因此所有关节变量都是角度通过简单地从参数表中选取参数代入 A 矩阵,便可写出每两个相邻关节之间的变换例如,在坐标系 0 和 1 之间的变换矩阵 可通过将 (sin =1,cos1o90=0, = )以及指。
