MDH 与 SDH 参数法对比

DH (Denavit- Hartenberg) 法在matlab robotics toolbox中有SDH和MDH之分。

我先看的Craig的书,我自己一般习惯用MDH,但是后来上课的时候又是讲的SDH法,整得我很分裂,现在看Bruno Siciliano的Robotics也是用的SDH法,两种DH参数法用起来容易混,在这里进行一下区分。

其实两种方法的区别主要在于{0}的选择,从而导致了后面坐标系的小区别,link parameters的意义都是相同的。 两种方法大同小异,结果都是相同的,凭个人喜好选择即可。

Modified DH (MDH)

这种DH法是John J. Craig. Introduction to Robotics: Mechanics and Control 上面讲的。他自己也说这个方法和别的书不太一样,所以可能才叫Modified DH吧?

Note that many related conventions go by the name Denavit–Hartenberg, but differ in a few details. For example, the version used in this book differs from some of the robotic literature in the manner of frame numbering. Unlike some other conventions, in this book frame {i} is attached to link i and has its origin lying on joint axis i.

Link parameters表示frame{i-1}到frame{i}的变换 T i − 1 i T_{i-1}^i Ti−1i​。从base{0}开始到6轴{6}结束,也可以到工具坐标系{T}结束。

连杆参数的定义 Link parameters

连杆参数 说明
连杆长度 a i − 1 a_{i-1} ai−1​ 轴i-1和轴i之间的公垂线长度
扭转角 α i − 1 \alpha_{i-1} αi−1​ 轴 i-1 绕 a i − 1 a_{i-1} ai−1​转向 轴 i 的角度
偏距 d i d_i di​ 从 a i − 1 a_{i-1} ai−1​与轴 i 的交点 指向 a i a_{i} ai​与 轴 i 的交点 的长度
关节角 θ i \theta_i θi​ a i − 1 a_{i-1} ai−1​ 到 a i a_{i} ai​ 绕轴 i 的夹角

其中连杆长度 a a a和扭转角 α \alpha α反应了轴 i-1 和 轴 i 的关系,偏距 d d d 反应了连杆 i-1 和 连杆 i 的关系。

连杆坐标系的选择 Rules of link-frame attachment

以6轴机械臂为例,Frame {i} 由{i}和{i+1}确定(i=0, 1, 2, 3, 4, 5),下面是确定 frame {i}的步骤。

  1. 确定Z轴。确定各关节轴线(Axis 1~6),每个轴线对应一个Z轴,比如 axis 1 对应 Z 1 Z_1 Z1​, axis 6 对应 Z 6 Z_6 Z6​。
  2. 确定原点。要根据相邻的两个Z轴 Z i Z_i Zi​和 Z i + 1 Z_{i+1} Zi+1​确定 O i O_i Oi​。
    • 如果 Z i Z_i Zi​ 和 Z i + 1 Z_{i+1} Zi+1​ 相交, 那么原点 O i O_i Oi​在交点。
    • 如果 Z i Z_i Zi​和 Z i + 1 Z_{i+1} Zi+1​不相交(异面、平行),那么 O i O_i Oi​ 为 Z i Z_i Zi​ 与 Z i + 1 Z_{i+1} Zi+1​ 的公垂线在 Z i Z_i Zi​ 的垂足。
  3. 确定X轴。X轴的确定也和上面原点的确定类似,需要根据相邻两Z轴的情况来确定。
    • 如果相交,那么 X i X_i Xi​沿两轴相交形成的平面的垂线, X ⃗ i = Z ⃗ i × Z ⃗ i + 1 \vec X_i=\vec Z_i\times \vec Z_{i+1} X i​=Z i​×Z i+1​
    • 如果不相交, X i X_i Xi​沿公垂线。

根据上述规则确定了frame{1} ~ {6},我们可以把frame {0}设为与{1}重合,以便让尽可能多的DH参数为0。确定了{0}~{6}之后,便可以写DH参数了。

注意{6}并不是工具坐标系{T},而是6轴所在的坐标系,可以再加一个{6} -> {T}的DH参数,一般末端到工具坐标系的变换为一个固定的刚体变换。

定义了关节坐标系之后,我们再来看连杆参数在坐标系中的含义。

注意:我这里的下标都统一改成i了,和表1中的下标不一致。这是因为我一般在写某个关节坐标系{i}的DH参数时,我希望下标统一,而不是有的i-1有的是i,我这里手动修改了下标看起来更加顺眼。

DH parameters 意义
a i a_i ai​ Z i − 1 Z_{i-1} Zi−1​沿 X i X_i Xi​到 Z i Z_i Zi​的空间距离
α i \alpha_i αi​ 以 X i − 1 X_{i-1} Xi−1​为轴由 Z i − 1 Z_{i-1} Zi−1​到 Z i Z_i Zi​转过的角度
d i d_i di​ 由 X i − 1 X_{i-1} Xi−1​沿 Z i Z_i Zi​到 X i X_i Xi​的空间距离
θ i \theta_i θi​ 以 Z i Z_i Zi​为轴由 X i − 1 X_{i-1} Xi−1​到 X i X_i Xi​转过的角度

下面是{i}到{i+1}的变换矩阵
T i i + 1 = [ c o s θ − s i n θ 0 a s i n θ c o s α c o s θ c o s α − s i n α − d s i n α s i n θ s i n α c o s θ s i n α c o s α d c o s α 0 0 0 1 ] T_i^{i+1} = \begin{bmatrix} cos\theta & -sin\theta & 0 & a \\ sin\theta cos\alpha & cos\theta cos\alpha & -sin\alpha & -dsin\alpha \\ sin\theta sin\alpha & cos\theta sin\alpha & cos\alpha & dcos\alpha \\ 0 & 0 & 0 & 1 \end{bmatrix} Tii+1​=⎣⎢⎢⎡​cosθsinθcosαsinθsinα0​−sinθcosθcosαcosθsinα0​0−sinαcosα0​a−dsinαdcosα1​⎦⎥⎥⎤​

Standard DH (SDH)

这个方法是Bruno Siciliano. Robotics Modelling, Planning and Control 里面讲的。因为两种方法其实很相似,SDH我就不讲太详细了。

  1. 确定Z轴。i+1 轴确定 Z i Z_i Zi​
  2. O i O_i Oi​在 Z i − 1 Z_{i-1} Zi−1​和 Z i Z_i Zi​的公垂线与 Z i Z_i Zi​的交点
  3. X i X_i Xi​沿 Z i − 1 Z_{i-1} Zi−1​和 Z i Z_i Zi​公垂线,由i轴指向i+1轴。

下面是{i}到{i+1}的变换矩阵
T i i + 1 = [ c o s θ − c o s α s i n θ s i n α s i n θ a c o s θ s i n θ c o s θ c o s α − s i n α c o s θ − a s i n θ 0 s i n α c o s α d 0 0 0 1 ] T_i^{i+1} = \begin{bmatrix} cos\theta & -cos\alpha sin\theta & sin\alpha sin\theta & acos\theta \\ sin\theta & cos\theta cos\alpha & -sin\alpha cos\theta & -asin\theta \\ 0 & sin\alpha & cos\alpha & d \\ 0 & 0 & 0 & 1 \end{bmatrix} Tii+1​=⎣⎢⎢⎡​cosθsinθ00​−cosαsinθcosθcosαsinα0​sinαsinθ−sinαcosθcosα0​acosθ−asinθd1​⎦⎥⎥⎤​

案例:拟人臂(Anthropomorphic arm ) 两种DH参数法对比

我直接从Bruno Siciliano的书上截下来了一页。SDH方法的结果见左图。

SDH MDH

右图为 MDH方法,结果如下图所示。可以看到两种方法最终求得的刚体变换是相同(废话)。

DH parameter a a a α \alpha α d d d θ \theta θ
1 0 0 0 v 1 v_1 v1​
2 0 π / 2 \pi/2 π/2 0 v 2 v_2 v2​
3 a 2 a_2 a2​ 0 0 v 3 v_3 v3​
4 a 3 a_3 a3​ 0 0 0


第4组其实是到末端单独的一组变换,这样算出来结果跟SDH法是相同的

通过对比可以发现,SDH比MDH领先一个轴,主要是因为MDH的{0}与{1}是重合的,而SDH的{0}是1轴,{1}是2轴,所以形式上SDH比MDH更加简洁一点点。

SDH与MDH参数法对比相关推荐

  1. 机械臂学习——标准DH法和改进MDH法建模法对比学习

    D-H法机械臂建模 D-H建模方法是由D和H两个人提出的,是用于机器人运动学上的建模方法,该方法是在每个连杆上建立一个坐标系,通过齐次变换来实现两个连杆上的坐标变换. 通过依次的变换最终可以推导处末端 ...

  2. 电源空间辐射CDN余量低_CDN法测试与辐射骚扰的电波暗室法对比验证

    CDN 法测试与辐射骚扰的电波暗室法对比验证 [摘要] 依据最新版<电气照明和类似设备的无线电骚扰特性的限值和测量方法>要求,在全面对比分 析灯具产品辐射骚扰测试的电波暗室法和 CDN 法 ...

  3. interFoam进行两相流模拟的一些典型参数设置对比paraview绘制相界面的方法

    1 背景 我的个人课题是基于interFoam的一些二次开发,然而我在使用自己的求解器进行模拟的时候往往会因为模拟参数配置的不合适导致这样或那样的一些问题.这些问题本质上是自己对interFoam进行 ...

  4. R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、通过contrast参数自定义对比组进行组间两两方差分析

    R语言使用aov函数进行单因素协方差分析(One-way ANCOVA).使用multcomp包的glht函数检验组均值之间所有成对对比差异.通过contrast参数自定义对比组进行组间两两方差分析( ...

  5. opencv 使用命令行参数法显示图片

    imread()函数 返回值,Mat 类型, 即返回读取的图像,读取图像失败时返回一个空的矩阵对象(Mat::data == NULL) 参数1 filename, 读取的图片文件名,可以使用相对路径 ...

  6. nginx哪个版本性能好_骁龙750g和天玑1000+哪个好-参数性能对比

    骁龙750g和天玑1000+是两款中端手机的处理器,这两款处理器在性能方面有自己的独特之处,前者采用的是8纳米的制作工艺,后者采用的是7纳米的制作工艺,那么骁龙750g和天玑1000+哪个好呢?下面就 ...

  7. TITAN RTX 与 RTX 3090 参数的对比,探计单双精度的问题

    转载TITAN RTX 与 RTX 3090 各参数的对比,探计单双精度的问题 - 哔哩哔哩 GPU编程研读http://t.csdn.cn/tcl5r Tesla V100和RTX3090的计算速度 ...

  8. 真实评测:华为nova8和红米k30至尊版哪个好-参数区别对比

    华为nova8和红米k30至尊版参数配置对比区别 2020下半年众多的手机品牌中,最受欢迎的居然是它?!看看内行人怎么说!真有点出乎意外!. 点击参考京东最新手机销量排行榜:https://www.j ...

  9. (四十三)参数法与非参数法(历史模拟法)计算VaR

    参数法   正态VaR:假设资产组合的收益率服从正态分布,那么VaR也服从正态分布,VaR=-(μ-Z·σ)×P0,算出来的是loss,如果为负则为收益.μ为资产组合的期望收益率,用往年平均收益率替代 ...

最新文章

  1. 置顶 | 2019学习单/读书单(dream a little dream)
  2. 如何停止java线程
  3. 动态规划-01背包问题详解
  4. 碰撞,处理碰撞,发射 Learn Unreal Engine (with C++)
  5. centos运行python程序_CentOS 7定时执行python脚本
  6. python3 threading是否被抛弃_Python3中的线程模块是否发生了变化?如果是,怎么办?...
  7. java用户角色权限管理 只显示姓_扩展RBAC用户角色权限设计方案
  8. 详谈Hibernate框架关系映射!
  9. pycharm 常用设置
  10. python中列表中的字典的排序问题
  11. Centos7 下Jenkins 安装
  12. python的shutil模块是内置的_python内置模块~shutil
  13. c# 拼接字符串换行_零基础小白学习:python之最详细字符串篇
  14. pwm 正弦波_增强型PWM抑制功能对于直列式电机控制的五大优势
  15. 基于Socket网络编程
  16. 《凤凰项目》读书笔记二
  17. mysql 如何避免间隙锁_Mysql Innodb 间隙锁浅析
  18. 开发者拒绝写技术博客的常见理由
  19. cad补全三视图_cad补画三视图练习题.doc
  20. Tax Multiplier and Govenment Spending Multiplier

热门文章

  1. 企鹅号的文章推荐到那里了,企鹅号选什么领域容易爆文
  2. JAVA获取打印机和默认打印机
  3. Linux数据库12154错误,ORA-12154 和 TNS-03505 监听错误的解决方法
  4. Hexo个人免费博客(五) 使用自己的域名
  5. 同一个网络下两台设备看直播时,进度不是一致的?浅谈其运作原理
  6. LED PWM控制芯片PCA9685的Linux 驱动
  7. dbscan算法中 参数的意义_详解DBSCAN聚类
  8. 深圳学位锁定怎么计算机,深圳学位锁定后能不能申请解锁
  9. Python爬取网易新闻,就是这么简单!
  10. 更好看的国产蓝牙耳机,音质也没问题,哈氪零度青春版体验