机器人——改进的D-H参数法
改进的D-H参数法
改进的D-H参数法
特点:坐标系{ i i i }的轴 z i z_{i} zi 指向关节 i i i 的旋转轴。
坐标系建立规则:
(1)关节 i i i 和 i + 1 i+1 i+1 的交点或公垂线与关节轴 i i i 的交点作为坐标系{ i i i }的原点;
(2) z i z_{i} zi 轴为关节 轴 i i i 的指向;
(3) x i x_{i} xi 轴沿公垂线的指向或垂直于关节轴 z i z_{i} zi 和 z i + 1 z_{i+1} zi+1 所在的平面(关节轴 i i i 和 i + 1 i+1 i+1 相交);
(3) y i y_{i} yi 轴根据右手定则确定;
D-H参数定义
见下图:则
(1) α i \alpha_{i} αi :绕 x i x_{i} xi 轴由 z i z_{i} zi 转向 z i + 1 z_{i+1} zi+1 轴的角度;//这里的 α i \alpha_{i} αi在建立D-H参数时写为 α i − 1 \alpha_{i-1} αi−1,即 α i − 1 \alpha_{i-1} αi−1 :绕 x i − 1 x_{i-1} xi−1 轴由 z i − 1 z_{i-1} zi−1 转向 z i z_{i} zi 轴的角度
(2) a i a_{i} ai :沿 x i x_{i} xi 轴由 z i z_{i} zi 移向 z i + 1 z_{i+1} zi+1 轴的距离;//这里的 a i a_{i} ai在建立D-H参数表时写为 a i − 1 a_{i-1} ai−1,即 a i − 1 a_{i-1} ai−1 :沿 x i − 1 x_{i-1} xi−1 轴由 z i − 1 z_{i-1} zi−1 移向 z i z_{i} zi 轴的距离
(3) θ i \theta_{i} θi :绕 z i z_{i} zi 轴由 x i − 1 x_{i-1} xi−1 转向 x i x_{i} xi 轴的角度;
(4) d i d_{i} di :沿 z i z_{i} zi 轴由 x i − 1 x_{i-1} xi−1 移向 x i x_{i} xi 轴的距离;

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

用齐次矩阵形式描述,由于四个步骤均是在变换后的坐标系下进行下一个变换,所以矩阵右乘,我们就得到坐标系{ A i − 1 A_{i-1} Ai−1 }向坐标系{ A i A_{i} Ai }的变换矩阵:
i i − 1 T = R o t ( X , α i − 1 ) T r a n s ( a i − 1 , 0 , 0 ) R o t ( Z , θ i ) T r a n s ( 0 , 0 , d i ) ^{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)
式中: R o t Rot Rot 为旋转矩阵, T r a n s Trans Trans 为平移矩阵。 R ( X , θ ) = [ 1 0 0 0 0 c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 ] 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 , θ ) = [ c o s θ − s i n θ 0 0 s i n θ c o s θ 0 0 0 0 1 0 0 0 0 1 ] 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
, T r a n s ( x , y , z ) = [ 1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1 ] 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
可计算出:
i i − 1 T = R o t ( X , α i − 1 ) T r a n s ( a i − 1 , 0 , 0 ) R o t ( Z , θ i ) T r a n s ( 0 , 0 , d i ) ^{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)
= [ 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 ) − s i n ( α i − 1 ) d i s i n ( θ i ) s i n ( α i − 1 ) c o s ( θ i ) s i n ( α i − 1 ) c o s ( α i − 1 ) c o s ( α i − 1 ) d i 0 0 0 1 ] =\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
从而,最终我们就可以得到一个 n n n 自由度机器人从基坐标系{ A 0 A_0 A0 }到末端坐标系{ A n A_n An }的转换齐次矩阵:
n 0 T = 1 0 T 2 1 T . . . n n − 1 T ^0_nT=^0_1T^1_2T...^{n-1}_nT n0T=10T21T...nn−1T
得到 n 0 T ^0_nT n0T 后,其矩阵 n 0 T = [ n 0 R n 0 p 0 0 0 1 ] ^0_nT=\left[\begin{matrix} & &^0_nR& &^0_np\\ &0&0&0&1\\ \end{matrix}\right] n0T=[0n0R00n0p1] 的左上角3×3矩阵 n 0 R ^0_nR n0R 即为末端在基坐标系中的旋转矩阵,向量 n 0 p ^0_np n0p 即为末端在基坐标系中的空间位置坐标。
坐标系建立原则
以下以改进D-H法为准
1 基座连杆坐标系:定义为0号坐标系{ A 0 A_0 A0 },它也是机器人的基坐标系,0号坐标系在基座上的位置和方向可任选,但一般 z 0 z_0 z0 轴线与关节1的轴线 z 1 z_1 z1 重合或相交。
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:坐标系初始位于坐标系{ A n A_{n} An },绕 z n z_{n} zn 轴旋转 θ n + 1 θ_{n+1} θn+1 ,使 x n x_n xn 轴与 x n + 1 x_{n+1} xn+1 轴平行;
2:坐标系沿 z n z_{n} zn 轴平移 d n + 1 d_{n+1} dn+1 ,使 x n x_n xn 轴与 x n + 1 x_{n+1} xn+1 轴共线;
3:坐标系绕 x n x_{n} xn (同时也是 x n + 1 x_{n+1} xn+1 )旋转 α n + 1 α_{n+1} αn+1 ,使 z n z_n zn 轴与 z n + 1 z_{n+1} zn+1 轴平行;
4:坐标系沿 x n x_{n} xn (同时也是 x n + 1 x_{n+1} xn+1 )平移 a n + 1 a_{n+1} an+1 ,此时已变换到{ A n + 1 A_{n+1} An+1 }。
对应的,其变换矩阵形式也不同,这里列出
n + 1 n T = R o t ( X , θ n + 1 ) T r a n s ( 0 , 0 , d n + 1 ) R o t ( X , α n + 1 ) T r a n s ( a n + 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)
= [ 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 ) c o s ( θ n + 1 ) a 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 ) s i n ( θ n + 1 ) a n + 1 0 s i n ( α n + 1 ) c o s ( α n + 1 ) d n + 1 0 0 0 1 ] =\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 且 a i − 1 = 0 a_{i-1}=0 ai−1=0)时,参数 d i d_i di 与 r i r_i ri(或 θ i \theta_i θi 与 α i \alpha_i αi)的定义可能不唯一,导致同一机构有多组 D-H 参数。
改进型 D-H 通过不同的坐标系建立规则,避免了这种奇异性,使参数定义在大多数情况下唯一。 -
更直观的连杆坐标系建立
改进型 D-H 将坐标系 i i i 固定在连杆 i i i 的远端(靠近关节 i + 1 i+1 i+1),而不是近端(经典 D-H 是固定在 proximal end)。
这样,连杆参数 a i , α i a_i, \alpha_i ai,αi 直接对应于连杆 i i i 本身的长度和扭角,便于物理理解。 -
与许多教材和软件一致
像 Craig、Corke(Robotics, Vision & Control 默认 MDH)、一些 MATLAB 机器人工具箱等,采用改进型 D-H,方便直接应用标准公式与代码。 -
便于处理树形或闭链机构
由于参数定义唯一性强,在复杂机构(如人形机器人、并联机器人)建模时,不易因零参数重合而产生歧义。 -
变换矩阵顺序更统一
改进型 D-H 的变换顺序通常为:
i − 1 T i = R x ( α i − 1 ) ⋅ D x ( a i − 1 ) ⋅ R z ( θ i ) ⋅ D z ( d i ) ^{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 − 1 T i = R z ( θ i ) ⋅ D z ( d i ) ⋅ R x ( α i − 1 ) ⋅ D x ( a i − 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)