标准DH建模与改进DH建模

本文深入解析DH(Denavit-Hartenberg)参数在机器人学中的应用,包括标准DH与修改后的DH参数建立过程,以及两者在坐标系设定和变换顺序上的区别。通过对比,帮助读者理解不同方法在实际建模中的优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

standard_DH

   根据DH表示法确定一个一般步骤为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵。如图所示表示了三个顺序关节和两个连杆,每个关节都是可以转动和平移的。第一个关节指定为关节i-1,第二个关节指定为关节i,第三个关节指定为关节i+1。在这些关节前后可能还有其他关节,连杆也是如此表示,连杆i位于关节i与关节i+1之间。
1、standard_DH建立每个关节参考坐标系步骤
(1)所有关节,无一例外用z轴表示。如果是关节是旋转的,z轴位于按右手定则选装的方向,如果关节是滑动的,z轴为沿实现运动的方向。在每一种情况下,关节i处的z轴(以及该关节的本地参考坐标系)的下标为i-1。
(2) 通常关节不一定平行或相交。因此,通常z轴是斜线,但是总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义x轴。所以如果aia_iai表示zi−1z_{i-1}zi1ziz_izi之间的公垂线,则xix_ixi的方向沿aia_iai
(3)如果两个关节的z轴平行,选取与前一关节的公垂线共线的一条公垂线,可简化模型;如果两个相邻关节的z轴是相交的,那么它们之间没有公垂线,可选取两条z轴的叉积2方向作为x轴,可简化模型。
  θ\thetaθ角表示绕z轴旋转角,d表示在z轴上两条相邻的公垂线之间的距离,a表示每一条公垂线的长度,角α\alphaα表示两个相邻的z轴之间的角度。

2、standard_DH建模步骤
(1)绕zi−1z_{i-1}zi1轴旋转θi\theta_iθi,它使得xi−1x_{i-1}xi1xix_{i}xi互相平行;
(2)沿zi−1z_{i-1}zi1轴平移did_{i}di距离,使得xi−1x_{i-1}xi1xix_{i}xi共线;
(3)沿xix_{i}xi轴平移aia_{i}ai距离,使得xi−1x_{i-1}xi1xix_{i}xi的原点重合;
(4)将zi−1z_{i-1}zi1轴绕xix_{i}xi旋转aia_{i}ai,使得zi−1z_{i-1}zi1轴与ziz_{i}zi轴对准。
  通过右乘四个运动的四个矩阵就可以得到变换矩阵i−1Ti^{i-1}T_ii1Ti
i−1Ti=Rot(zi−1,θi)×Trans((zi−1,di)×Trans((xi,ai)×Rot(xi,αi)\begin{aligned}^{i-1}T_i=Rot(z_{i-1},\theta_i)\times Trans((z_{i-1},d_i)\times Trans((x_{i},a_i)\times Rot(x_{i},\alpha_i)\end{aligned}i1Ti=Rot(zi1,θi)×Trans((zi1,di)×Trans((xi,ai)×Rot(xi,αi)

i−1Ti=[cθi−sθi00sθicθi0000100001][10000100001di0001][100ai010000100001][10000cαi−sαi00sαicαi00001]^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i&0&0\\s\theta_i&c\theta_i&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&d_i\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&a_i\\0&1&0&0\\0&0&1&0\\0&0&0&1\end{bmatrix} \begin{bmatrix} 1&0&0&0\\0&c\alpha_i&-s\alpha_i&0\\0&s\alpha_i&c\alpha_i&0\\0&0&0&1\end{bmatrix}i1Ti=cθisθi00sθicθi000010000110000100001000di1100001000010ai00110000cαisαi00sαicαi00001

i−1Ti=[cθi−sθicαisθisαiaicθisθicθicαi−cθisαiaisθi0sαicαidi0001]^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i c\alpha_i&s\theta_i s\alpha_i&a_i c\theta_i\\s\theta_i&c\theta_i c\alpha_i&-c\theta_i s\alpha_i&a_i s\theta_i\\0&s\alpha_i&c\alpha_i&d_i\\0&0&0&1\end{bmatrix}i1Ti=cθisθi00sθicαicθicαisαi0sθisαicθisαicαi0aicθiaisθidi1

modified_DH

1、modified_DH建立每个关节参考坐标系步骤
(1)找出关节轴i和i+1之间的公垂线或关节轴i和i+1的交点,以关节轴i和i+1的交点或公垂线与关节轴i的交点作为连杆坐标系{i}的原点;
(2)规定ziz_izi轴沿关节轴i的指向;
(3)规定xix_ixi轴沿公垂线的指向,如果关节轴i和i+1相交,则规定xix_ixi垂直于关节轴i和i+1所在平面。
(4)按照右手定则确定yiy_iyi

2、modified_DH建模步骤
(1)aia_iai=沿xix_ixi轴,从ziz_izi移动到zi+1z_{i+1}zi+1的距离;
(2)αi\alpha_iαi=绕xix_ixi轴,从ziz_izi旋转到zi+1z_{i+1}zi+1的角度;
(3)did_idi=沿ziz_izi轴,从xi−1x_{i-1}xi1移动到xix_{i}xi的距离;
(4)θi\theta_iθi=沿ziz_izi轴,从xi−1x_{i-1}xi1旋转到xix_{i}xi的角度;
  变换矩阵可以写成:
i−1Ti=RX(αi−1)×DX(ai−1)×RZ(θi)×DZ(di)\begin{aligned}^{i-1}T_i=R_X(\alpha_{i-1})\times D_X(a_{i-1})\times R_Z(\theta_{i})\times D_Z(d_{i})\end{aligned}i1Ti=RX(αi1)×DX(ai1)×RZ(θi)×DZ(di)

i−1Ti=[cθi−sθi0ai−1sθicαi−1cθicαi−1−sαi−1−sαi−1disθisαi−1cθisαi−1cαi−1cαi−1di0001]^{i-1}T_i=\begin{bmatrix} c\theta_i&-s\theta_i &0&a_{i-1} \\s\theta_i c\alpha_{i-1}&c\theta_i c\alpha_{i-1}&-s\alpha_{i-1}&-s\alpha_{i-1}d_i \\s\theta_i s\alpha_{i-1}&c\theta_i s\alpha_{i-1}&c\alpha_{i-1}&c\alpha_{i-1}d_i\\0&0&0&1\end{bmatrix}i1Ti=cθisθicαi1sθisαi10sθicθicαi1cθisαi100sαi1cαi10ai1sαi1dicαi1di1

SDH与MDH比较

(1)固连坐标系不同
SDH方法关节i上固连的是i-1坐标系,即坐标系建在连杆的输出端;MDH关节i上固连的是i坐标系,即坐标系建在连杆的输入端。
(2)坐标系变换顺序不同
SDH方法是ZX类变换:先绕着i-1坐标系的的Zi-1轴旋转和平移,再绕着坐标系i的Xi轴进行旋转和平移;MDH方法是XZ类变换:先绕着i坐标系的的Xi轴旋转和平移,再绕着坐标系i的Zi轴进行旋转和平移;

### 标准 DH 算法改进DH 算法特点对比 #### 1. 定义适用场景 标准 DH 参数(Standard Denavit-Hartenberg, SDH)是一种经典的建模方法,用于描述机械臂中的连杆和关节关系。然而,在某些情况下,当一个关节连接两根连杆时,可能会出现参数定义上的模糊性或歧义[^1]。为了克服这一局限性,改进DH 参数(Modified Denavit-Hartenberg, MDH)被引入,其能够更清晰地处理复杂的几何结构。 #### 2. 几何解释 在标准 DH 方法中,坐标系的定义依赖于特定规则,例如 Z 轴沿关节轴方向,X 轴垂直于前一 Z 轴并当前 Z 轴相交。这种定义可能导致在多连杆系统中难以唯一确定某些参数[^3]。相比之下,改进DH 方法允许更加灵活的坐标系分配方式,从而减少了因复杂拓扑带来的不确定性。 #### 3. 数学表示形式 对于标准 DH 参数而言,其核心在于四个基本变量:θ (joint angle),d (link offset),α (twist angle),以及 a (link length)[^4]。这些值共同构成了齐次变换矩阵的核心部分: ```python import numpy as np def standard_dh_matrix(theta, d, alpha, a): ct = np.cos(theta) st = np.sin(theta) ca = np.cos(alpha) sa = np.sin(alpha) T = np.array([ [ct, -st * ca, st * sa, a * ct], [st, ct * ca, -ct * sa, a * st], [0, sa, ca, d], [0, 0, 0, 1] ]) return T ``` 而在改进DH 中,虽然也涉及类似的四要素,但由于坐标系设定的不同,具体计算过程有所调整。特别是,MDH 的变换矩阵可能需要额外考虑相邻节点间的关系来确保一致性[^2]。 #### 4. 实现难度工具支持 利用 MATLAB 或其他现代软件包可以方便快捷地完成基于这两种框架下的仿真工作。不过需要注意的是,由于两者内部逻辑存在差异,在实际编码阶段需特别留意输入数据格式及其物理意义的一致性验证问题。 #### 5. 应用实例分析 从文献资料来看,《机器人学、机器视觉控制》这本书籍采用了传统意义上的标准 DH 技术路线;而另一本经典教材《机器人学导论》则倾向于改良版本的应用实践案例研究。这表明不同领域或者项目背景会选择更适合自己的那套体系来进行开发设计活动。 --- ###
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值