机械臂D-H参数法分析

文章目录

  • 前言
  • 连杆D-H参数法介绍
  • D-H参数法的坐标变换矩阵
  • 特殊情况加实例分析
  • 方法总结

前言

笔者在看D-H参数法的时候对此方法的适用性产生了好奇,通过个人构思推导得出传统D-H参数表有时不适用的原因,并相出一种简洁的判断方法,列在文章最末,原理十分简单,欢迎指点。

本人对手边的一只五自由度旋转舵机机械手进行了坐标系的建模。为了方便理解画了一个示意图,图省事所以画成了圆柱形,各个旋转关节不影响理解即可。

机械臂D-H参数法分析_第1张图片 机械臂D-H参数法分析_第2张图片

机械臂在底座上有四节连杆。第一节为相对于底座转动的连杆。第二节相对于第一节的连轴处旋转。第三节相对于第二节的连轴处旋转,第四节相对于第三节的连轴处旋转。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,由于不关心夹子的开合角度,便简化为一个示意的形状。其中第四节的转轴距第四节形心轴向后偏了距离为h。

为了看得更清楚,在建模软件中调整一下角度,可看出机械臂大致的运动姿态。

机械臂D-H参数法分析_第3张图片

下面进入正题,第一部分介绍推算D-H参数与坐标轴方向的方法;第二部分介绍一下根据D-H参数得到的坐标变换矩阵;第三部分为我在建模时遇到的问题和自己的分析;第四部分为我总结的步骤。

连杆D-H参数法介绍

机械臂D-H参数法分析_第4张图片

建立连杆坐标系的基本原则如图所示。规定连杆 i i i的坐标系为 i i i,坐标系 i i i z i z_i zi轴与关节轴 i i i重合,坐标系 的原点位于连杆长度 a i a_i ai与关节轴线 i i i的交点处,坐标系 i i i x i x_i xi轴沿着 a i a_i ai由轴 i i i指向轴 i + 1 i+1 i+1,坐标系 i i i y i y_i yi由右手定则确定。

如图所示,表示了机器人的两个连杆 i − 1 i-1 i1 i i i,图中的四个参数 α i − 1 \alpha_{i-1} αi1 a i − 1 a_{i-1} ai1 d i d_i di θ i \theta_i θi为连杆 i i i的D-H参数。

根据蔡自兴老师的《机器人学》第三版第42页的Craig法则:可得出四个参数的计算方法。

a i − 1 a_{i-1} ai1=沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。
α i − 1 \alpha_{i-1} αi1=绕 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1旋转到 z i z_i zi的转角。
d i d_i di=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_i xi的距离。
θ i \theta_i θi=沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1旋转到 x i x_i xi的转角。

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

建立相邻连杆的坐标系变换的一般形式,然后将这些变换联系起来,就可以求出最后一个连杆相对于基坐标系的位置和姿态,即运动学方程的矩阵表示,如图所示。连杆变换即坐标系 i − 1 i-1 i1向坐标系 i i i的变换。变换过程可以看成是坐标系 i − 1 i-1 i1经过4次子变换得到了坐标系 i i i,建立3个中间坐标系 R R R Q Q Q P P P。坐标系 i − 1 i-1 i1先绕坐标轴 x i − 1 x_{i-1} xi1旋转 α i − 1 \alpha_{i-1} αi1得到坐标系 R R R;坐标系 R R R沿着轴线 i − 1 i-1 i1和轴线 i i i的公垂线方向移动 a i − 1 a_{i-1} ai1,得到坐标系 Q Q Q;坐标系 Q Q Q绕坐标轴 z Q z_Q zQ旋转 θ i \theta_i θi,得到坐标系 P P P;坐标系 P P P沿着坐标轴 z P z_P zP方向移动 d i d_i di,得到坐标系 i i i

机械臂D-H参数法分析_第5张图片

由坐标系变换法则可知,这四个变换可以用四个齐次变换矩阵表示,分别是 R i − 1 T _{R}^{i-1} T Ri1T Q R T _{Q}^R T QRT P Q T _{P}^Q T PQT i P T _{i}^P T iPT,根据坐标变换的链式法则,坐标系 i − 1 i-1 i1到坐标系 i i i的变换矩阵可以写成
i − 1 i T = R i − 1 T Q R T P Q T i P T = R o t ( x , α i − 1 ) T r a n s ( x , a i − 1 ) R o t ( z , θ i ) T r a n s ( z , d i ) = [ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] _{i-1}^i T=_{R}^{i-1} T_{Q}^R T_{P}^Q T_{i}^P T =Rot(x,\alpha_{i-1})Trans(x,a_{i-1})Rot(z,\theta_{i})Trans(z,d_i) =\begin{bmatrix} cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1 \end{bmatrix} i1iT=Ri1TQRTPQTiPT=Rot(x,αi1)Trans(x,ai1)Rot(z,θi)Trans(z,di)=cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

其中, R o t ( x , α i − 1 ) Rot(x,\alpha_{i-1}) Rot(x,αi1)表示坐标系绕 x x x轴旋转 α i − 1 \alpha_{i-1} αi1 T r a n s ( x , a i − 1 ) Trans(x,a_{i-1}) Trans(x,ai1)表示沿着 x x x轴平移 a i − 1 a_{i-1} ai1

在得到每个连杆变换后,通过链式法则就可以得到执行机构相对于基坐标系的位姿,即机械臂的运动学方程,可由齐次矩阵 0 5 T _0^5T 05T表示。
5 0 T = 1 0 T 2 1 T 3 2 T 4 3 T 5 4 T = [ 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 ] _5^0T=_1^0T _2^1T _3^2T _4^3T _5^4T=\begin{bmatrix} 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\\ \end{bmatrix} 50T=10T21T32T43T54T=nxnynz0oxoyoz0axayaz0PxPyPz1

特殊情况加实例分析

上述方法中,转轴仅绕参考坐标系即上一个关节的 x x x轴与 z z z轴旋转,移动。其中绕 z z z轴的转角为关节舵机的主动转角,若舵机转角为0, θ \theta θ为0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

从图中可以看出,这是一个五自由度的机械臂,所有关节均为转动关节。最底下为底座,将其圆心视为全局坐标系的 O O O点,竖直向上方向为全局坐标系的 z z z正方向,向前的方向为 x x x轴正方向。底座的高度为 l 0 l_0 l0

在底座上有四节连杆。第一节为相对于底座转动的连杆,长度为 l 1 l_1 l1。第二节相对于第一节的连轴处旋转,长度为 l 2 l_2 l2。第三节相对于第二节的连轴处旋转,长度为 l 3 l_3 l3,第四节相对于第三节的连轴处旋转,长度为 l 4 l_4 l4。第四节末端为机械手工作部件,抓取夹,绕第四节末端的轴转动,其中此转轴距第四节形心轴向后偏了距离为 h h h,在此图中状态看为向全局坐标系x轴负方向偏了 h h h

机械臂D-H参数法分析_第6张图片

根据上述规则,将图中机械臂各关节坐标系一一标出。并得到D-H参数表。

连杆 关节角 θ i / ° \theta_i/° θi/° 连杆偏移量 d i / m d_i/m di/m 扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/° 连杆长度 a i − 1 / m a_{i-1}/m ai1/m
1 0 l 0 l_0 l0 0 0
2 0 l 1 l_1 l1 − 90 ° -90° 90° 0
3 -90° 0 0 l 2 l_2 l2
4 0 0 0 l 3 l_3 l3
5 -90° 0 − 90 ° -90° 90° 0

其中前四个关节的D-H参数都依照规则较为简单地求出,但是第五关节比较奇怪。按照描述 a i − 1 a_{i-1} ai1为沿 x i − 1 x_{i-1} xi1轴,从 z i − 1 z_{i-1} zi1移动到 z i z_i zi的距离。 d i d_i di为沿 z i z_i zi轴,从 x i − 1 x_{i-1} xi1移动到 x i x_{i} xi的距离。

z 4 z_4 z4移动到 z 5 z_5 z5的距离为h,但是在 x 4 x_4 x4上的分量为0; x 4 x_4 x4 x 5 x_5 x5相交,故 d d d也为 0 0 0
但这很明显是不可能的,此关节的两个空间尺度 l 4 l_4 l4 h h h都没有用上,那这个关节岂不是变成质点了吗?

于是我尝试了三种思路得到参数
(1)不管轴方向的分量,强行将此二值代入,认为:

连杆 关节角 θ i / ° \theta_i/° θi/° 连杆偏移量 d i / m d_i/m di/m 扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/° 连杆长度 a i − 1 / m a_{i-1}/m ai1/m
5 θ 5 \theta_5 θ5 l 4 l_4 l4 − 90 ° -90° 90° h h h

并得到变换矩阵 5 4 T _5^4T 54T
5 4 T = [ c o s θ 5 − s i n θ 5 0 h 0 0 1 l 4 − s i n θ 5 − c o s θ 5 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix} cos\theta_5&-sin\theta_5&0&h\\ 0&0&1&l_4\\ -sin\theta_5&-cos\theta_5&0&0\\ 0&0&0&1 \end{bmatrix} 54T=cosθ50sinθ50sinθ50cosθ500100hl401

按照机械臂的初始状态, θ 5 = − 90 ° \theta_5=-90° θ5=90°,代入得
5 4 T = [ 0 1 0 h 0 0 1 l 4 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&h\\0&0&1&l_4\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100hl401,明显不对

(2)考虑到坐标系 5 5 5的原点相对于坐标系 4 4 4 x x x方向位移为 l 4 l_4 l4 y y y方向为 − h -h h,猜测为

连杆 关节角 θ i / ° \theta_i/° θi/° 连杆偏移量 d i / m d_i/m di/m 扭转角 α i − 1 / ° \alpha_{i-1}/° αi1/° 连杆长度 a i − 1 / m a_{i-1}/m ai1/m
5 θ 5 \theta_5 θ5 -h -90° l 4 l_4 l4
机械臂D-H参数法分析_第7张图片

可得坐标变换矩阵 5 4 T = [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix} 54T=001010000100l4h01,坐标系 5 5 5的原点代入求该点在坐标系 4 4 4对应的坐标: [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 0 0 0 1 ] = [ l 4 − h 0 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0\\0\\0\\1\end{bmatrix}=\begin{bmatrix}l_4\\-h\\0\\1\end{bmatrix} 001010000100l4h010001=l4h01,这次好像对了,再将点(1,2,3)代入试试 [ 0 1 0 l 4 0 0 1 − h 1 0 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 2 + l 4 3 − h 1 1 ] \begin{bmatrix}0&1&0&l_4\\0&0&1&-h\\1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}2+l_4\\3-h\\1\\1\end{bmatrix} 001010000100l4h011231=2+l43h11,可观察出在坐标系4中应当为 ( 3 + l 4 , − 1 − h , − 2 ) (3+l_4,-1-h,-2) (3+l4,1h,2),所以此矩阵错误。

(3) 这是为什么呢,我观察了下,现在它是 − 90 ° , -90°, 90°我把它转回去看看。即绕 z 5 z_5 z5轴正转 90 90 90度。

机械臂D-H参数法分析_第8张图片

可以看出 x 5 x_5 x5 x 4 x_4 x4并非平行,相反地, y 5 y_5 y5 y 4 y_4 y4是平行的。说明坐标系 5 5 5为绕 y y y轴转动了 90 90 90度,然后在 x x x y y y方向产生了位移。这个变换矩阵应当自行计算:
5 4 T = T r a n s ( y , − h ) T r a n s ( x , l 4 ) R o t ( y , 90 ° ) R o t ( z , θ 5 ) = [ 1 0 0 l 4 0 1 0 − h 0 0 1 0 0 0 0 1 ] [ 0 0 1 0 0 1 0 0 − 1 0 0 0 0 0 0 1 ] [ c o s θ 5 − s i n θ 5 0 0 s i n θ 5 c o s θ 5 0 0 0 0 1 0 0 0 0 1 ] _5^4T=Trans(y,-h)Trans(x,l_4)Rot(y,90°)Rot(z,\theta_5) =\begin{bmatrix}1&0&0&l_4\\0&1&0&-h\\0&0&1&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}0&0&1&0\\0&1&0&0\\-1&0&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}cos\theta_5&-sin\theta_5&0&0\\sin\theta_5&cos\theta_5&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} 54T=Trans(y,h)Trans(x,l4)Rot(y,90°)Rot(z,θ5)=100001000010l4h010010010010000001cosθ5sinθ500sinθ5cosθ50000100001

= [ 0 0 1 l 4 s i n θ 5 c o s θ 5 0 − h − c o s θ 5 s i n θ 5 0 0 0 0 0 1 ] =\begin{bmatrix}0&0&1&l_4\\sin\theta_5&cos\theta_5&0&-h\\-cos\theta_5&sin\theta_5&0&0\\0&0&0&1\end{bmatrix} =0sinθ5cosθ500cosθ5sinθ501000l4h01

θ = − 90 ° \theta=-90° θ=90°代入得 5 4 T = [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] _5^4T=\begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix} 54T=010000101000l4h01,再将点 ( 1 , 2 , 3 ) (1,2,3) (1,2,3)代入试试 [ 0 0 1 l 4 − 1 0 0 − h 0 − 1 0 0 0 0 0 1 ] [ 1 2 3 1 ] = [ 3 + l 4 − 1 − h − 2 1 ] \begin{bmatrix}0&0&1&l_4\\-1&0&0&-h\\0&-1&0&0\\0&0&0&1\end{bmatrix}\begin{bmatrix}1\\2\\3\\1\end{bmatrix}=\begin{bmatrix}3+l_4\\-1-h\\-2\\1\end{bmatrix} 010000101000l4h011231=3+l41h21,正确。

反复验证,此种方法得到的矩阵应该不存在问题。

方法总结

于是就出现了问题,难道传统 D − H D-H DH参数法是错的?那肯定不是,之前的学者们肯定遇到了各种特殊情况,并且给出了解决方法,但我觉得书上描述的针对一般性问题的描述过于复杂,在此,我想出了一种比较快速的方法。

根据前面的描述,若舵机转角为 0 0 0 θ \theta θ 0 0 0,即仅绕 x x x轴产生转动,转动后的新 x x x轴应当与原 x x x轴平行。

故,看到机械臂关节后的建立坐标转换矩阵的步骤为:

(1)根据 C r a i g Craig Craig规则,确定各原点以及 x i , y i , z i x_i,y_i,z_i xi,yi,zi 的方向。并根据规则算出此状态时的角度 θ i 0 \theta_{i0} θi0
(2)将关节 i i i沿转轴 z i z_i zi旋转 − θ i 0 -\theta_{i0} θi0,得到关节 i i i相对于上一个转角为 0 0 0时的坐标系,观察此时的 x x x轴是否与上一个关节的 x x x轴平行,若平行,则满足前述规则,直接求出 D − H D-H DH参数,并代入矩阵

[ c o s θ i − s i n θ i 0 a i − 1 s i n θ i c o s α i − 1 c o s θ i c o s α i − 1 − s i n α i − 1 − d i s i n α i − 1 s i n θ i s i n α i − 1 c o s θ i s i n α i − 1 c o s α i − 1 d i c o s α i − 1 0 0 0 1 ] \begin{bmatrix}cos\theta_i&-sin\theta_i&0&a_{i-1}\\ sin\theta_icos\alpha_{i-1}&cos\theta_icos\alpha_{i-1}&-sin\alpha_{i-1}&-d_isin\alpha_{i-1}\\ sin\theta_isin\alpha_{i-1}&cos\theta_isin\alpha_{i-1}&cos\alpha_{i-1}&d_icos\alpha_{i-1}\\ 0&0&0&1\\ \end{bmatrix} cosθisinθicosαi1sinθisinαi10sinθicosθicosαi1cosθisinαi100sinαi1cosαi10ai1disinαi1dicosαi11

(3)若此时的 x x x轴与上一个关节的 x x x轴不平行,则必定有绕 y y y轴的转动,此时需要观察,另行推算出坐标变换矩阵。一般优先考虑转角,后考虑位移。一般情况下机械臂不会有很奇怪的角度,通过观察可得到沿 x x x y y y轴的转角。若同时具有 x x x y y y轴的转角并且角度不是 90 90 90的倍数,也可根据坐标轴之间的夹角求出转角。

另:在上面那个机械臂的例子中 x 3 x_3 x3 x 4 x_4 x4也不是平行的,但考虑到此状态的 θ = − 90 ° \theta=-90° θ=90°,将 θ 3 \theta_3 θ3正转 90 ° 90° 90°后, x 3 x_3 x3 x 4 x_4 x4平行。

2019-01-03 上海

你可能感兴趣的:(机器人学心得,机械臂,D-H参数)