1 概念

1.1 机器人

本文讨论的机器人,为空间开链连杆机构,其中的运动副(转动副或移动副)常称为关节,关节个数通常即为机器人的自由度数。
即:机器人由一系列关节(Joint)和连杆(Link)组成,这些关节可能是滑动(线性)的或旋转(转动)的,它们可以按任意的顺序放置并处于任意的平面,连杆也可以是任意的长度(包括为零),它可能被弯曲或扭曲,也可能位于任意平面上,所以任何一组关节和连杆都可以构成一个机器人。
给定机器人结构后,我们就可以确定各关节的类型、相邻关节之间的尺寸等参数。

1.2 机器人运动学

机器人运动学包括正向运动学和逆向运动学
正向运动学即给定机器人各关节变量(一般为相邻关节相对运动量),计算机器人末端的位置姿态;
逆向运动学即已知机器人末端的位置姿态,计算机器人各关节的关节变量。本文暂不讨论逆向运动学。

1.3 机器人正向运动学的D-H参数模型

在机器人正向运动学解算中,机器人每一个关节相对于上一个关节的位姿(位置和姿态),理论上应该有6个自由度(位置3个,姿态3个),并用一个变换矩阵来表达,各关节的变换矩阵依次相乘,就得到了机器人的正向运动学方程,从而解算出机器人末端在机器人基坐标系中的位置和姿态。
但按照机器人的关节之间的相对关系,实际上是有约束的,所以没有必要用以上的复杂描述形式。
1955年,Denavit和Hartenberg在“ASME Journal of Applied Mechanics”发表了一篇论文,后来的机器人表示和建模就依据了这篇论文,成为表示机器人和机器人运动进行建模的标准方法,被称为Denavit-Hartenberg参数模型(Denavit–Hartenberg parameters),简称D-H模型。
D-H模型表示了对机器人连杆和关节进行建模的一种非常简单的方法,可用于任何机器人构型,而不管机器人的结构顺序和复杂程度如何。

2 D-H参数法进行正向运动学解算的过程

D-H参数法按照设定规则为每个连杆固连了一个坐标系,之后就可以方便的描述一个连杆坐标系到相邻的下一个连杆坐标系的转换关系。实质就是把相邻坐标系的转换分解为了若干个步骤,每个步骤均只有一个参量。这几个步骤对应变换的组合就完成了相邻坐标系的变换。

如图为机器人的两个相邻连杆,即第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−1​T=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,θ)=⎣⎢⎢⎡​1000​0cosθsinθ0​0−sinθcosθ0​0001​⎦⎥⎥⎤​,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θ00​0010​0001​⎦⎥⎥⎤​,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)=⎣⎢⎢⎡​1000​0100​0010​xyz1​⎦⎥⎥⎤​
可计算出:
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−1​T=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​)0​0−sin(αi−1​)cos(αi−1​)0​ai−1​−sin(αi−1​)di​cos(αi−1​)di​1​⎦⎥⎥⎤​
从而,最终我们就可以得到一个nnn自由度机器人从基坐标系{A0A_0A0​}到末端坐标系{AnA_nAn​}的转换齐次矩阵:
n0T=10T21T...nn−1T^0_nT=^0_1T^1_2T...^{n-1}_nTn0​T=10​T21​T...nn−1​T
得到n0T^0_nTn0​T后,其矩阵n0T=[n0Rn0p0001]^0_nT=\left[\begin{matrix} & &^0_nR& &^0_np\\ &0&0&0&1\\ \end{matrix}\right]n0​T=[​0​n0​R0​0​n0​p1​]的左上角3×3矩阵n0R^0_nRn0​R即为末端在基坐标系中的旋转矩阵,向量n0p^0_npn0​p即为末端在基坐标系中的空间位置坐标。

3 两类D-H参数法

D-H参数法实际上有两种方法:标准D-H(classic DH parameters)、改进D-H(modified DH parameters)
以上介绍的是改进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+1n​T=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​)0​sin(θn+1​)sin(αn+1​)−cos(θn+1​)sin(αn+1​)cos(αn+1​)0​cos(θn+1​)an+1​sin(θn+1​)an+1​dn+1​1​⎦⎥⎥⎤​
不管哪种方法,原理是一致的,实际上只要弄懂了其中一种,另一种只是变个形式而已。以下我们仍采用改进D-H法。

4 D-H坐标系确定和D-H表的建立

从以上原理过程看,D-H参数法中,坐标系选定后,一旦确定了每两个相邻连杆的四个参数:αi−1α_{i-1}αi−1​、ai−1a_{i-1}ai−1​、θiθ_{i}θi​、did_{i}di​,就可以直接写出其变换齐次矩阵,因此,D-H参数法的一个重要步骤就是建立各个连杆的这四个参数,称为D-H参数表,建立D-H参数表即可带入以上公式完成机器人的正向解算。

4.1 D-H坐标系选定

4.1.1 D-H坐标系

对于每个连杆都建立一个固连在其上的坐标系,基座也可以看作是一个连杆,机器人末端(手部)也认为连接了一个连杆(只不过长度为零),这样一个n自由度的机器人,就有n+1个连杆,相应地,有n+1个坐标系。
这里提醒注意:坐标系是固连在连杆上,而不是固连在关节上,以前看资料和博客怎么说的都有,弄的很糊涂,后来才搞明白,坐标系是固连在连杆上,如果认为坐标系固连在关节上,分析问题时会让人很崩溃的。

4.1.2 坐标系的建立原则

以下以改进D-H法为准。
1 基座连杆坐标系:定义为0号坐标系{A0A_0A0​},它也是机器人的基坐标系,0号坐标系在基座上的位置和方向可任选,但一般z0z_0z0​轴线与关节1的轴线z1z_1z1​重合或相交。
2 除基座外的各连杆的坐标系确定原则如下:

Z轴确定

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

X轴确定

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

上图的连杆1坐标系可能出乎很多人意料,怎么原点跑到连杆的末端关节上去了,所以理解以上说的“连杆的坐标系建立在连杆首端关节处”时要注意,坐标原点不一定位于连杆的首端关节中心那个点,这一点也是之前很糊涂了一段后来搞明白的,可能上面图有点不太明白,还是上图那个4轴机器人,我们把连杆1弯曲一下,然后可能好理解一些为什么原点跑了。

Y轴确定

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

4.2 D-H表建立

确定了坐标系后,就可以建立D-H表了,即确定以上的四个参数,还是以上面的四轴机器人为例,我们建立D-H表,因为是为了举例假设的机器人,所以一些定值这里没有给出具体数,而以描述的方式。

iii αi−1α_{i-1}αi−1​ ai−1a_{i-1}ai−1​ θiθ_iθi​ did_idi​
1 0 0 θ1θ_1θ1​ 基座到关节2纵向高度(定值)
2 90 0 θ2θ_2θ2​ 0
3 0 连杆2长度(定值) θ3θ_3θ3​ 0
4 -90 沿Z4轴径向的关节3与关节4的距离(定值) θ4θ_4θ4​ 沿Z4轴轴向的关节3与关节4的距离(定值)

建立这个表时不要死记各个参数的含义,建议结合前面讲述的四步变换步骤,就很容易确定各个参数。表中θ1θ_1θ1​~θ4θ_4θ4​分别为各个连杆相对于上一个连杆的旋转角度。
还有一点要注意:D-H表是在确定了各连杆坐标系后对应建立的,同一个机器人,坐标系建立不同,D-H表就不同

参考文献

https://www.docin.com/p-1249134279.html

机器人正向运动学和D-H参数方法相关推荐

  1. 四足机器人站立姿态解算-几何方法

    古月居课程四足机器人控制与仿真入门笔记,视频链接:link 四足机器人站立姿态解算-几何方法 参数定义 姿态解算 matlab程序 参数定义 定义机器人足端在长度方向的距离为l,在宽度方向的距离为w, ...

  2. 【论文笔记】基于强化学习的机器人手臂仿人运动规划方法

    文章目录 摘要 关键词 0 引言 学者研究 阶段一:采集运动数据,分析运动过程特征 阶段二:设计仿人变量.建立仿人标准和约束 阶段三:用智能算法提升仿人运动机器人性能 本文工作 1 问题描述及方法架构 ...

  3. 系统学习机器学习之半参数方法(一)--基于距离

    在参数方法中,我们假设样本来自于一个已知的分布,因此我们的主要工作就是估计有限的参数:而对于另外一些问题,我们不能确定样本遵从的分布假设,这时我们可以退一步,采用混合分布估计输入样本(也就是半参数方法 ...

  4. Linux使用退格键时出现 H 解决方法,Linux使用退格键时出现^H解决方法

    以前在linux下执行脚本不注意输错内容需要删除时总是出现^H ,以前不知道真相的我没办法只有再重头运行一次脚本,后来发现其实时有解决办法的,所以记录一下. ^H不是H键的意思,是backspace. ...

  5. 动作捕捉系统用于机器人关节位移与几何参数标定

    机器人在工业领域和日常生活中起到重要的作用,要完成的任务也越来越复杂,这就需要机器人动作执行时足够精准.机器人的绝对精度是评价机器人性能的一项重要指标. 要提高机器人的绝对精度,需要进行高精度标定.标 ...

  6. python 接收外部参数_python 接收处理外带的参数方法

    python 接收处理外带的参数方法 在执行python 代码的时候,有时候需要传递外面的参数进行处理 这个该怎么实现呢? 需要一个模块 from sys import argv 当然也可以直接只导入 ...

  7. 12.CUDA编程手册中文版---附录H数学方法

    附录H 数学方法 更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划 参考手册 ...

  8. Vue3官网-可复用组合式API(十四)实例 property(\$slots,\$attrs)、渲染函数render(虚拟节点VNode,h() 参数,使用JavaScript代替模板功能),插件

    Vue3官网-可复用&组合式API(十四)实例 property($slots,$attrs).渲染函数render(虚拟节点VNode,h() 参数,使用JavaScript代替模板功能), ...

  9. PI机器人解决方案RMS-下篇——DH参数校准模块

    https://www.chuandong.com/tech/detail.aspx?id=36041 API机器人解决方案RMS-下篇--DH参数校准模块 2019年03月14日 11:48:40 ...

  10. vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法

    vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法 使用Everything查找afxres.h文件,如果没有everything的,可以到 ...

最新文章

  1. 一文搞懂全链路监控:方案概述与比较!
  2. STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
  3. 佩恩:京奥了不起 10年后“水落石出”
  4. MongoDB和Redis区别
  5. SSH框架--Struts的故事
  6. 【渝粤教育】国家开放大学2019年春季 3717天然气管道长输技术 参考试题
  7. SDL2.0文档翻译
  8. 亚马逊力推以太坊,微软谷歌准备跟进!
  9. [译] 搜索结果页的最佳实践
  10. Ubuntu 18.04下搭建单机Hadoop和Spark集群环境
  11. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点
  12. ajax 怎么添加,添加功能(Ajax版)
  13. win桌面显示html,win10怎么把ie图标放桌面上 win10桌面添加ie浏览器图标的方法
  14. RestClient操作索引库
  15. 集线器、交换机与路由器有什么区别?
  16. 【校招面试】紫光展锐 - 应用软件工程师面经(一面)
  17. 怎么用python实现回归_手把手教你用Python进行回归(附代码、学习资料)-阿里云开发者社区...
  18. EOS、BPS怎样进行应用的部署
  19. 2022级计算机保研历程
  20. java培训记录Day02 2022/3/15星期二

热门文章

  1. 搜索竞价推广方式OCPC VS CPC,谁更强
  2. 排序算法伪代码以及python实现——插入,归并,快速,堆,计数
  3. 解读《三字经》(7)
  4. 前馈神经网络中的“前馈”指的是什么意思
  5. 不要质疑读者,读者永远比作者聪明
  6. MVC思想及SpringMVC设计理念
  7. 纳兰容若最经典的20首诗词,每一首都是经典,读完眼泪掉下来
  8. 最全的LBS手机定位技术说明
  9. 实拍:丽江特色美食腊排骨火锅
  10. k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用