机器人——改进的D-H参数法
改进的D-H参数法
特点:坐标系{ iii }的轴 ziz_{i}zi 指向关节 iii 的旋转轴。
坐标系建立规则:
(1)关节 iii 和 i+1i+1i+1 的交点或公垂线与关节轴 iii 的交点作为坐标系{ iii }的原点;
(2) ziz_{i}zi 轴为关节 轴 iii 的指向;
(3) xix_{i}xi 轴沿公垂线的指向或垂直于关节轴 ziz_{i}zi 和 zi+1z_{i+1}zi+1 所在的平面(关节轴 iii 和 i+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}αi−1,即αi−1\alpha_{i-1}αi−1 :绕 xi−1x_{i-1}xi−1 轴由 zi−1z_{i-1}zi−1 转向 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}ai−1,即 ai−1a_{i-1}ai−1 :沿 xi−1x_{i-1}xi−1 轴由 zi−1z_{i-1}zi−1 移向 ziz_{i}zi 轴的距离
(3) θi\theta_{i}θi :绕 ziz_{i}zi 轴由 xi−1x_{i-1}xi−1 转向 xix_{i}xi 轴的角度;
(4) did_{i}di :沿 ziz_{i}zi 轴由 xi−1x_{i-1}xi−1 移向 xix_{i}xi 轴的距离;

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

用齐次矩阵形式描述,由于四个步骤均是在变换后的坐标系下进行下一个变换,所以矩阵右乘,我们就得到坐标系{ Ai−1A_{i-1}Ai−1 }向坐标系{ 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}) ii−1T=Rot(X,αi−1)Trans(ai−1,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θ00−sinθ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θ00−sinθ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}) ii−1T=Rot(X,αi−1)Trans(ai−1,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(αi−1)sin(θi)sin(αi−1)0−sin(θi)cos(θi)cos(αi−1)cos(θi)sin(αi−1)00−sin(αi−1)cos(αi−1)0ai−1−sin(αi−1)dicos(αi−1)di1
从而,最终我们就可以得到一个 nnn 自由度机器人从基坐标系{ A0A_0A0 }到末端坐标系{ AnA_nAn }的转换齐次矩阵:
n0T=10T21T...nn−1T ^0_nT=^0_1T^1_2T...^{n-1}_nT n0T=10T21T...nn−1T
得到 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)00−sin(θ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 参数法主要有以下优点:
-
消除奇异性问题
在经典 D-H 中,当相邻关节轴线平行(αi−1=0\alpha_{i-1}=0αi−1=0 且 ai−1=0a_{i-1}=0ai−1=0)时,参数 did_idi 与 rir_iri(或 θi\theta_iθi 与 αi\alpha_iαi)的定义可能不唯一,导致同一机构有多组 D-H 参数。
改进型 D-H 通过不同的坐标系建立规则,避免了这种奇异性,使参数定义在大多数情况下唯一。 -
更直观的连杆坐标系建立
改进型 D-H 将坐标系 iii 固定在连杆 iii 的远端(靠近关节 i+1i+1i+1),而不是近端(经典 D-H 是固定在 proximal end)。
这样,连杆参数 ai,αia_i, \alpha_iai,αi 直接对应于连杆 iii 本身的长度和扭角,便于物理理解。 -
与许多教材和软件一致
像 Craig、Corke(Robotics, Vision & Control 默认 MDH)、一些 MATLAB 机器人工具箱等,采用改进型 D-H,方便直接应用标准公式与代码。 -
便于处理树形或闭链机构
由于参数定义唯一性强,在复杂机构(如人形机器人、并联机器人)建模时,不易因零参数重合而产生歧义。 -
变换矩阵顺序更统一
改进型 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) i−1Ti=Rx(αi−1)⋅Dx(ai−1)⋅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}) i−1Ti=Rz(θi)⋅Dz(di)⋅Rx(αi−1)⋅Dx(ai−1)
两种在数学上等价,但改进型的顺序在某些推导中更符合“先绕 x 轴旋转/平移,再绕 z 轴旋转/平移”的物理装配思路。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)