改进的D-H参数法

特点:坐标系{ iii }的轴 ziz_{i}zi 指向关节 iii 的旋转轴。

坐标系建立规则:

(1)关节 iiii+1i+1i+1 的交点或公垂线与关节轴 iii 的交点作为坐标系{ iii }的原点;
(2) ziz_{i}zi 轴为关节 轴 iii 的指向;
(3) xix_{i}xi 轴沿公垂线的指向或垂直于关节轴 ziz_{i}zizi+1z_{i+1}zi+1 所在的平面(关节轴 iiii+1i+1i+1 相交);
(3) yiy_{i}yi 轴根据右手定则确定;

D-H参数定义

见下图:则
(1) αi\alpha_{i}αi :绕 xix_{i}xi 轴由 ziz_{i}zi 转向 zi+1z_{i+1}zi+1 轴的角度;//这里的 αi\alpha_{i}αi在建立D-H参数时写为αi−1\alpha_{i-1}αi1,即αi−1\alpha_{i-1}αi1 :绕 xi−1x_{i-1}xi1 轴由 zi−1z_{i-1}zi1 转向 ziz_{i}zi 轴的角度
(2) aia_{i}ai :沿 xix_{i}xi 轴由 ziz_{i}zi 移向 zi+1z_{i+1}zi+1 轴的距离;//这里的 aia_{i}ai在建立D-H参数表时写为 ai−1a_{i-1}ai1,即 ai−1a_{i-1}ai1 :沿 xi−1x_{i-1}xi1 轴由 zi−1z_{i-1}zi1 移向 ziz_{i}zi 轴的距离
(3) θi\theta_{i}θi :绕 ziz_{i}zi 轴由 xi−1x_{i-1}xi1 转向 xix_{i}xi 轴的角度;
(4) did_{i}di :沿 ziz_{i}zi 轴由 xi−1x_{i-1}xi1 移向 xix_{i}xi 轴的距离;

在这里插入图片描述

如图为机器人的两个相邻连杆,即第 i−1i-1i1 关节,然后是 i−1i-1i1 连杆、第 iii 关节、第 iii 连杆、……,按照图中的坐标系设定,坐标系{ Ai−1A_{i-1}Ai1 }固连在连杆 i−1i-1i1 上,坐标系{ AiA_{i}Ai }固连在连杆 iii 上,现在我们要求出从坐标系{ Ai−1A_{i-1}Ai1 }向坐标系{ AiA_{i}Ai }的转换矩阵,从图中看,可以分解为以下四个步骤完成:
步骤1:坐标系初始位于坐标系{ Ai−1A_{i-1}Ai1 },绕 Xi−1X_{i-1}Xi1 轴旋转 αi−1α_{i-1}αi1 ,使 ZZZ 轴与 ZiZ_{i}Zi 轴平行;
步骤2:坐标系沿 Xi−1X_{i-1}Xi1 轴平移 ai−1a_{i-1}ai1 ,使 ZZZ 轴与 ZiZ_{i}Zi 轴共线;
步骤3:坐标系绕 Zi−1Z_{i-1}Zi1 (同时也是 ZiZ_{i}Zi )旋转 θiθ_{i}θi ,使 XXX 轴与 XiX_{i}Xi 轴平行;
步骤4:坐标系沿 Zi−1Z_{i-1}Zi1 (同时也是 ZiZ_{i}Zi )平移 did_{i}di ,此时已变换到{ AiA_{i}Ai }。

在这里插入图片描述

用齐次矩阵形式描述,由于四个步骤均是在变换后的坐标系下进行下一个变换,所以矩阵右乘,我们就得到坐标系{ Ai−1A_{i-1}Ai1 }向坐标系{ AiA_{i}Ai }的变换矩阵:
ii−1T=Rot(X,αi−1)Trans(ai−1,0,0)Rot(Z,θi)Trans(0,0,di) ^{i-1}_iT=Rot(X,α_{i-1})Trans(a_{i-1},0,0)Rot(Z,θ_{i})Trans(0,0,d_{i}) ii1T=Rot(X,αi1)Trans(ai1,0,0)Rot(Z,θi)Trans(0,0,di)

式中: RotRotRot 为旋转矩阵, TransTransTrans 为平移矩阵。 R(X,θ)=[10000cosθ−sinθ00sinθcosθ00001]R(X,θ)=\left[\begin{matrix} 1&0&0&0\\ 0&cosθ&-sinθ&0\\ 0&sinθ&cosθ&0\\ 0&0&0&1\\ \end{matrix}\right]R(X,θ)= 10000cosθsinθ00sinθcosθ00001 R(Z,θ)=[cosθ−sinθ00sinθcosθ0000100001]R(Z,θ)=\left[\begin{matrix} cosθ&-sinθ&0&0\\ sinθ&cosθ&0&0\\ 0&0&1&0\\ 0&0&0&1\\ \end{matrix}\right]R(Z,θ)= cosθsinθ00sinθcosθ0000100001 Trans(x,y,z)=[100x010y001z0001]Trans(x,y,z)=\left[\begin{matrix} 1&0&0&x\\ 0&1&0&y\\ 0&0&1&z\\ 0&0&0&1\\ \end{matrix}\right]Trans(x,y,z)= 100001000010xyz1
可计算出:
ii−1T=Rot(X,αi−1)Trans(ai−1,0,0)Rot(Z,θi)Trans(0,0,di) ^{i-1}_iT=Rot(X,α_{i-1})Trans(a_{i-1},0,0)Rot(Z,θ_{i})Trans(0,0,d_{i}) ii1T=Rot(X,αi1)Trans(ai1,0,0)Rot(Z,θi)Trans(0,0,di)

=[cos(θi)−sin(θi)0ai−1sin(θi)cos(αi−1)cos(θi)cos(αi−1)−sin(αi−1)−sin(αi−1)disin(θi)sin(αi−1)cos(θi)sin(αi−1)cos(αi−1)cos(αi−1)di0001] =\left[\begin{matrix} cos(θ_i)&-sin(θ_i)&0&a_{i-1}\\ sin(θ_i)cos(α_{i-1})&cos(θ_i)cos(α_{i-1})&-sin(α_{i-1})&-sin(α_{i-1})d_i\\ sin(θ_i)sin(α_{i-1})&cos(θ_i)sin(α_{i-1})&cos(α_{i-1})&cos(α_{i-1})d_i\\ 0&0&0&1\\ \end{matrix}\right] = cos(θi)sin(θi)cos(αi1)sin(θi)sin(αi1)0sin(θi)cos(θi)cos(αi1)cos(θi)sin(αi1)00sin(αi1)cos(αi1)0ai1sin(αi1)dicos(αi1)di1

从而,最终我们就可以得到一个 nnn 自由度机器人从基坐标系{ A0A_0A0 }到末端坐标系{ AnA_nAn }的转换齐次矩阵:

n0T=10T21T...nn−1T ^0_nT=^0_1T^1_2T...^{n-1}_nT n0T=10T21T...nn1T

得到 n0T^0_nTn0T 后,其矩阵 n0T=[n0Rn0p0001]^0_nT=\left[\begin{matrix} & &^0_nR& &^0_np\\ &0&0&0&1\\ \end{matrix}\right]n0T=[0n0R00n0p1] 的左上角3×3矩阵 n0R^0_nRn0R 即为末端在基坐标系中的旋转矩阵,向量 n0p^0_npn0p 即为末端在基坐标系中的空间位置坐标。

坐标系建立原则

以下以改进D-H法为准

1 基座连杆坐标系:定义为0号坐标系{ A0A_0A0 },它也是机器人的基坐标系,0号坐标系在基座上的位置和方向可任选,但一般 z0z_0z0 轴线与关节1的轴线 z1z_1z1 重合或相交。

Z轴确定

Z轴一定过连杆首端关节的旋转轴(或滑动轴);

X轴确定

X轴位置根据本坐标系的Z轴与下一个连杆固连坐标系的Z轴的关系确定,X轴方向任选,但一般指向下一个关节。
情况1:两关节Z轴既不平行也不相交,取两Z轴公垂线为X轴,方向一般指向下一个关节;
情况2:两关节Z轴平行,此时,两Z轴之间有无数条公垂线,可选与前一关节Z轴公垂线相交的一条公垂线,方向也是一般指向下一个关节
情况3:两关节Z轴相交,取两条Z轴的叉积(向量积)方向作为X轴,即取同时垂直于两条Z轴的直线作为X轴,此时X轴方向任选

Y轴确定

X轴和Z轴确定后,按右手定则确定Y轴。

还有一点要注意:D-H表是在确定了各连杆坐标系后对应建立的, 同一个机器人,坐标系建立不同,D-H表就不同
标准D-H方法

两者的区别是固连到连杆上的坐标系不同,以及变换顺序不同。
与前面介绍的改进D-H法比较,改进D-H法的坐标系是固连在每个连杆的首端,而标准D-H的坐标系固连在每个连杆的末端。
此时,同样也是分解为四个步骤,但变换顺序与改进D-H不同了:
1:坐标系初始位于坐标系{ AnA_{n}An },绕 znz_{n}zn 轴旋转 θn+1θ_{n+1}θn+1 ,使 xnx_nxn 轴与 xn+1x_{n+1}xn+1 轴平行;
2:坐标系沿 znz_{n}zn 轴平移 dn+1d_{n+1}dn+1 ,使 xnx_nxn 轴与 xn+1x_{n+1}xn+1 轴共线;
3:坐标系绕 xnx_{n}xn (同时也是 xn+1x_{n+1}xn+1 )旋转 αn+1α_{n+1}αn+1 ,使 znz_nzn 轴与 zn+1z_{n+1}zn+1 轴平行;
4:坐标系沿 xnx_{n}xn (同时也是 xn+1x_{n+1}xn+1 )平移 an+1a_{n+1}an+1 ,此时已变换到{ An+1A_{n+1}An+1 }。
对应的,其变换矩阵形式也不同,这里列出

n+1nT=Rot(X,θn+1)Trans(0,0,dn+1)Rot(X,αn+1)Trans(an+1,0,0) ^n_{n+1}T=Rot(X,θ_{n+1})Trans(0,0,d_{n+1})Rot(X,α_{n+1})Trans(a_{n+1},0,0) n+1nT=Rot(X,θn+1)Trans(0,0,dn+1)Rot(X,αn+1)Trans(an+1,0,0)

=[cos(θn+1)−sin(θn+1)cos(αn+1)sin(θn+1)sin(αn+1)cos(θn+1)an+1sin(θn+1)cos(θn+1)cos(αn+1)−cos(θn+1)sin(αn+1)sin(θn+1)an+10sin(αn+1)cos(αn+1)dn+10001] =\left[\begin{matrix} cos(θ_{n+1})&-sin(θ_{n+1})cos(α_{n+1})&sin(θ_{n+1})sin(α_{n+1})&cos(θ_{n+1})a_{n+1}\\ sin(θ_{n+1})&cos(θ_{n+1})cos(α_{n+1})&-cos(θ_{n+1})sin(α_{n+1})&sin(θ_{n+1})a_{n+1}\\ 0&sin(α_{n+1})&cos(α_{n+1})&d_{n+1}\\ 0&0&0&1\\ \end{matrix}\right] = cos(θn+1)sin(θn+1)00sin(θn+1)cos(αn+1)cos(θn+1)cos(αn+1)sin(αn+1)0sin(θn+1)sin(αn+1)cos(θn+1)sin(αn+1)cos(αn+1)0cos(θn+1)an+1sin(θn+1)an+1dn+11
不管哪种方法,原理是一致的,实际上只要弄懂了其中一种,另一种只是变个形式而已。我们一般采用改进D-H法。
改进型 D-H 参数法(Modified Denavit-Hartenberg,常称 MDH 或 Craig 约定)相比经典 D-H 参数法主要有以下优点:

  1. 消除奇异性问题
    在经典 D-H 中,当相邻关节轴线平行(αi−1=0\alpha_{i-1}=0αi1=0ai−1=0a_{i-1}=0ai1=0)时,参数 did_idirir_iri(或 θi\theta_iθiαi\alpha_iαi)的定义可能不唯一,导致同一机构有多组 D-H 参数。
    改进型 D-H 通过不同的坐标系建立规则,避免了这种奇异性,使参数定义在大多数情况下唯一。

  2. 更直观的连杆坐标系建立
    改进型 D-H 将坐标系 iii 固定在连杆 iii远端(靠近关节 i+1i+1i+1),而不是近端(经典 D-H 是固定在 proximal end)。
    这样,连杆参数 ai,αia_i, \alpha_iai,αi 直接对应于连杆 iii 本身的长度和扭角,便于物理理解。

  3. 与许多教材和软件一致
    像 Craig、Corke(Robotics, Vision & Control 默认 MDH)、一些 MATLAB 机器人工具箱等,采用改进型 D-H,方便直接应用标准公式与代码。

  4. 便于处理树形或闭链机构
    由于参数定义唯一性强,在复杂机构(如人形机器人、并联机器人)建模时,不易因零参数重合而产生歧义。

  5. 变换矩阵顺序更统一
    改进型 D-H 的变换顺序通常为:
    i−1Ti=Rx(αi−1)⋅Dx(ai−1)⋅Rz(θi)⋅Dz(di) ^{i-1}T_i = R_x(\alpha_{i-1}) \cdot D_x(a_{i-1}) \cdot R_z(\theta_i) \cdot D_z(d_i) i1Ti=Rx(αi1)Dx(ai1)Rz(θi)Dz(di)
    而经典 D-H 是:
    i−1Ti=Rz(θi)⋅Dz(di)⋅Rx(αi−1)⋅Dx(ai−1) ^{i-1}T_i = R_z(\theta_i) \cdot D_z(d_i) \cdot R_x(\alpha_{i-1}) \cdot D_x(a_{i-1}) i1Ti=Rz(θi)Dz(di)Rx(αi1)Dx(ai1)
    两种在数学上等价,但改进型的顺序在某些推导中更符合“先绕 x 轴旋转/平移,再绕 z 轴旋转/平移”的物理装配思路。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐