机器人位置运动学03—D-H参数法

一、关节与连杆

  机器人一般由一系列关节和连杆按任意的顺序连接而成,这些关节可能是滑动(线性)的或旋转(转动)的,它们可能处在不同的平面,旋转轴之间可能存在偏差。连杆也可以是任意长度的(包括零),它可能被扭曲或弯曲,也可能位于任意的平面上。所以任何一组关节和连杆都可以构成机器人。我们必须要能对任何机器人进行建模和分析。
  所以,我们需要给每个关节指定一个参考坐标系,然后确定从一个关节到下一个关节(一个坐标系到下一个坐标系)进行变换的步骤。如果将从基座到第1关节,再从第1关节到第2关节直至最后一个关节的所有变换结合起来,就得到了机器人的总变换矩阵。
  假设机器人由任意多的连杆和关节以任意形式构成,如图所示,有3个顺序的关节和2个连杆,每个关节都可能是旋转的、滑动的或两者都是。指定第1个关节为关节 n ,第2个关节为关节 n + 1 ,第3个关节为关节 n + 2 。连杆 n 位于关节 n n + 1 之间,连杆 n + 1 位于关节 n + 1 n + 2 之间。
  


   D-H参数法  

二、D-H参数法中 x , y , z 轴及参数说明

  为了用D-H表示法对机器人建模,所要做的第一件事是为每个关节指定一个本地的参考坐标系。因此,对于每个关节,都必须指定一个 z 轴和 x ,通常并不需要指定 y 轴,因为 y 轴总是垂直于 x 轴和 z 轴。

  • z 轴:所有关节,无一例外都用 z 轴表示。如果关节是旋转的,那么 z 轴位于按右手规则旋转的方向。如果关节是滑动的,那么 z 轴为沿直线运动的方向。绕关节 n + 1 运动的 z 轴是 z n 对于旋转关节,绕 z 轴的旋转角 θ 是关节变量。对于滑动关节,沿 z 轴的连杆长度 d 是关节变量。
  • x 轴:通常关节不一定平行或相交。因此, z 轴也许是斜线,但总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义本地参考坐标系的 x 轴。所以如果 a n 表示 z n 1 z n 之间的公垂线,则定义 x n 的方向为沿 a n 的方向。
  • 特殊情况:
    (1):如果两个关节的 z 轴平行,那么它们之间就有无数条公垂线。这时可挑选与前一关节的公垂线共线的一条公垂线。
    (2):如果两个相邻关节的 z 轴是相交的,那么它们之间就没有公垂线(或者公垂线的距离为零)。这时可将垂直于两条轴线构成的平面的直线指定为 x 轴,即其公垂线是垂直于包含了两条 z 轴平面的直线。
  • θ :表示绕 z 轴的旋转角
  • d :表示在 z 轴上两条相邻的公垂线之前的距离(关节偏移)
  • a :表示每一条公垂线的长度(连杆长度)
  • α :表示两个相邻的 z 轴之间的角度(扭角)
    通常只有 θ d 是关节变量。

三、D-H参数法的坐标变换矩阵

  现在需要将一个参考坐标系变换到下一个参考坐标系。假设现在位于本地参考坐标系 x n z n ,则通过以下4步标准运动即可到达下一个本地参考坐标系 x n + 1 z n + 1
  (1) z n 轴旋转 θ n + 1 ,使得 x n x n + 1 互相平行。因为 a n a n + 1 都是垂直于 z n 轴的,因此绕 z n 轴旋转 θ n + 1 确实可使 x n x n + 1 平行(且共面)。
  (2)沿 z n 轴平移 d n + 1 距离,使得 x n x n + 1 共线。因为 x n x n + 1 已经平行且垂直于 z n ,则沿着 z n 移动可使它们相互重叠在一起。
  (3)沿已经旋转过的 x n 轴平移 a n + 1 的距离,使得 x n x n + 1 的原点重合。这时两个参考坐标系的原点处在同一位置。
  (4) z 轴绕 x n + 1 轴旋转 α n + 1 ,使得 z n 轴与 z n + 1 轴对准。这时坐标系 n n + 1 完全相同。这样就实现了从一个坐标系变换到下一个坐标系。
  在坐标系 n + 1 n + 2 之间,严格地按照上述的4个步骤就可以将一个坐标系变换到下一个坐标系。通过重复以上步骤,可以实现一系列相邻坐标系之间的变换。从机器人的参考坐标系开始,我们可以将其转换到机器人的第1个关节,在转换到第2个关节,以此类推,直至转换到末端执行器。
  表示前面4个运动的两个依次坐标系之间的变换 n T n + 1 (称为 A n + 1 )是4个运动变换矩阵的乘积。由于所有的变换都是相对于当前的坐标系进行的,因此所有的变换都是右乘的。即
  

n T n + 1 = A n + 1 = R o t ( z , θ n + 1 ) × T r a n s ( 0 , 0 , d n + 1 ) × T r a n s ( a n + 1 , 0 , 0 ) × R o t ( x , α n + 1 )

 
= [ c o s θ n + 1 s i n θ n + 1 0 0 s i n θ n + 1 c o s θ n + 1 0 0 0 0 1 0 0 0 0 1 ] × [ 1 0 0 0 0 1 0 0 0 0 1 d n + 1 0 0 0 1 ] × [ 1 0 0 a n + 1 0 1 0 0 0 0 1 0 0 0 0 1 ] × [ 1 0 0 0 0 c o s α n + 1 s i n α n + 1 0 0 s i n α n + 1 c o s α n + 1 0 0 0 0 1 ]

A n + 1 = [ c o s θ n + 1 s i n θ n + 1 c o s α n + 1 s i n θ n + 1 s i n α n + 1 a n + 1 c o s θ n + 1 s i n θ n + 1 c o s θ n + 1 c o s α n + 1 c o s θ n + 1 s i n α n + 1 a n + 1 s i n θ n + 1 0 s i n α n + 1 c o s α n + 1 d n + 1 0 0 0 1 ]

  在机器人基座上,可以从第1个关节开始变换到第2个关节,然后到第3个关节等等,直到机器人手和最终的末端执行器。若把每个变换定义为 A n + 1 ,则可以得到许多表示变换的 A 矩阵。在机器人的基座与手之间的总变换则为:
  
R T H = R T 1 1 T 2 2 T 3 . . . n 1 T n = A 1 A 2 A 3 . . . A n

  其中 n 是关节数,有几个自由度就有几个 A 矩阵。通常可以制作一张关节和连杆参数的表格,其中每个连杆和关节的参数值可从机器人的机构示意图上确定。

连杆 θ d a α
0-1
1-2

四、正运动学例题

例1:如图所示的简单2轴平面机器人,根据D-H表示法,建立必要的坐标系,填写D-H参数表,导出每个机器人的正运动学方程。


例题

解:首先两个关节都在 x y 平面内旋转,坐标系 x H z H 表示机器人的末端。先指定关节的 z 轴,将关节1指定为 z 0 ,关节2指定为 z 1 ,坐标系0是固定不动的,机器人相对于它而运动。
  然后为每一个坐标系指定 x 轴,因为第1个坐标系(坐标系0)是在机器人基座上,在它之前没有关节,因此 x 0 的方向是任意的。我们可以指定 x 0 的方向与全局坐标系的 x 轴相同。因为 z 0 z 1 是平行的,他们之间的公垂线就在两者之间的方向上,所以 x 1 轴如图所示。
  下表显示了该机器人的变量表。根据D-H的常规步骤,按照如下从一个坐标系到下一个坐标系所必须的4个变换,可以来确认变量表中的这些值。

连杆 θ d a α
0-1 θ 1 0 a 1 0
1- H θ 2 0 a 2 0

  (1)绕 z 0 轴旋转 θ 1 ,使 x 0 x 1 平行;
  (2)由于 x 0 x 1 已经在一个平面内了,不需要在平移 z 0 轴,因此沿着 z 0 轴的偏移量 d 是0;
  (3)沿着已经旋转过的 x 0 轴平移距离 a 1
  (4)因为 z 0 z 1 是平行的,不需要在旋转,因此绕 x 1 轴的旋转角 α 1 是0。
  坐标系1到坐标系 H 之间的变换与上面的过程类似。
  由于有两个旋转关节,因此存在两个未知的变量,即关节角 θ 1 θ 2 。将D-H参数表中的这些参数代入相应的A矩阵中,可以得到机器人的正运动学方程为:
  

A 1 = [ c o s θ 1 s i n θ 1 0 a 1 c o s θ 1 s i n θ 1 c o s θ 1 0 a 1 s i n θ 1 0 0 1 0 0 0 0 1 ] ,   A 2 = [ c o s θ 2 s i n θ 2 0 a 2 c o s θ 2 s i n θ 2 c o s θ 2 0 a 2 s i n θ 2 0 0 1 0 0 0 0 1 ]

  
0 T H = A 1 × A 1 = [ c o s ( θ 1 + θ 2 ) s i n ( θ 1 + θ 2 ) 0 a 2 c o s ( θ 1 + θ 2 ) + a 1 c o s θ 1 s i n ( θ 1 + θ 2 ) c o s ( θ 1 + θ 2 ) 0 a 2 s i n ( θ 1 + θ 2 ) + a 1 s i n θ 1 0 0 1 0 0 0 0 1 ]

  给定 θ 1 θ 2 a 1 a 2 ,根据正运动学方程就可以求出机器人末端的位置和姿态。

五、逆运动学例题

  有了逆运动学解才能确定每个关节的值,从而使机器人到达期望的位姿。
例2:求解例1中的关节角。
解1:设期望的位置和姿态为:

扫描二维码关注公众号,回复: 2254523 查看本文章
0 T H = A 1 × A 1 = [ c o s ( θ 1 + θ 2 ) s i n ( θ 1 + θ 2 ) 0 a 2 c o s ( θ 1 + θ 2 ) + a 1 c o s θ 1 s i n ( θ 1 + θ 2 ) c o s ( θ 1 + θ 2 ) 0 a 2 s i n ( θ 1 + θ 2 ) + a 1 s i n θ 1 0 0 1 0 0 0 0 1 ] = [ n x o x a x p x n y o y a y p y n z o z a z p z 0 0 0 1 ]

则可得: s i n ( θ 1 + θ 2 ) = n y c o s ( θ 1 + θ 2 ) = n x ,所以: θ 1 + θ 2 = A T A N 2 ( n y , n x )
又因为 a 2 c o s ( θ 1 + θ 2 ) + a 1 c o s θ 1 = p x a 2 n x + a 1 c o s θ 1 = p x ,所以: c o s θ 1 = p x a 2 n x a 1
又因为 a 2 s i n ( θ 1 + θ 2 ) + a 1 s i n θ 1 = p y a 2 n y + a 1 s i n θ 1 = p y ,所以: s i n θ 1 = p x a 2 n x a 1
所以: θ 1 = A T A N 2 ( s i n θ 1 , c o s θ 1 ) = A T A N 2 ( p x a 2 n x a 1 , p x a 2 n x a 1 ) 。所以 θ 2 = θ 1 + θ 2 θ 1
解2:在等式中通常乘 A 2 1 ,使得 θ 1 θ 2 中解耦。(常用于多自由度的)
A 1 × A 2 × A 2 1 = [ n x o x a x p x n y o y a y p y n z o z a z p z 0 0 0 1 ] × A 2 1 A 1 = [ n x o x a x p x n y o y a y p y n z o z a z p z 0 0 0 1 ] × A 2 1

[ c o s θ 1 s i n θ 1 0 a 1 c o s θ 1 s i n θ 1 c o s θ 1 0 a 1 s i n θ 1 0 0 1 0 0 0 0 1 ] = [ n x o x a x p x n y o y a y p y n z o z a z p z 0 0 0 1 ] × [ c o s θ 2 s i n θ 2 0 a 2 s i n θ 2 c o s θ 2 0 0 0 0 1 0 0 0 0 1 ]

[ c o s θ 1 s i n θ 1 0 a 1 c o s θ 1 s i n θ 1 c o s θ 1 0 a 1 s i n θ 1 0 0 1 0 0 0 0 1 ] = [ c o s θ 2 n x s i n θ 2 o x s i n θ 2 n x + c o s θ 2 o x a x p x a 2 n x c o s θ 2 n y s i n θ 2 o y s i n θ 2 n y + c o s θ 2 o y a y p y a 2 n y c o s θ 2 n z s i n θ 2 o z s i n θ 2 n z + c o s θ 2 o z a z p z a 2 n z 0 0 0 1 ]

对应位置矩阵元素相等即可求得 θ 1 θ 2 ,其结果和解1一样。

参考文献:SaeedB.Niku 等,机器人学导论——分析、系统及应用(第二版),电子工业出版社,2013.2.

猜你喜欢

转载自blog.csdn.net/qq_22820121/article/details/81066077