2.8机器人正运动学方程的D-H表示法

在1955年,Denavit和Hartenberg在“ASME Journal of Applied Mechanics”发表了一篇论文,后来利用那个这篇论文来对机器人进行表示和建模,并导出了它们的运动方程,这已成为表示机器人和对机器人运动进行建模的标准方法,所以必须学习这部分内容。Denavit-Hartenberg(D_H)模型表示了对机器人连杆和关节进行建模的一种非常简单的方法,可用于任何机器人构型,而不管机器人的结构顺序和复杂程度如何。它也可用于表示已经讨论过的在任何坐标中的变换,例如直角坐标、圆柱坐标、球坐标、欧拉角坐标及RPY坐标等。另外,它也可以用于表示全旋转的链式机器人、SCARA机器人或任何可能的关节和连杆组合。尽管采用前面的方法对机器人直接建模会更快、更直接,但D-H表示法有其附加的好处,使用它已经开发了许多技术,例如,雅克比矩阵的计算和力分析等。

假设机器人由一系列关节和连杆组成。这些关节可能是滑动(线性)的或旋转(转动)的,它们可以按任意的顺序放置并处于任意的平面。连杆也可以是任意的长度(包括零),它可能被弯曲或扭曲,也可能位于任意平面上。所以任何一组关节和连杆都可以构成一个我们想要建模和表示的机器人。

为此,需要给每个关节指定一个参考坐标系,然后,确定从一个关节到下一个关节(一个坐标系到下一个坐标系)来进行变换的步骤。如果将从基座到第一个关节,再从第一个关节到第二个关节直至到最后一个关节的所有变换结合起来,就得到了机器人的总变换矩阵。在下一节,将根据D-H表示法确定一个一般步骤来为每个关节指定参考坐标系,然后确定如何实现任意两个相邻坐标系之间的变换,最后写出机器人的总变换矩阵。

图2.25    通用关节—连杆组合的D-H表示

假设一个机器人由任意多的连杆和关节以任意形式构成。图2.25表示了三个顺序的关节和两个连杆。虽然这些关节和连杆并不一定与任何实际机器人的关节或连杆相似,但是他们非常常见,且能很容易地表示实际机器人的任何关节。这些关节可能是旋转的、滑动的、或两者都有。尽管在实际情况下,机器人的关节通常只有一个自由度,但图2.25中的关节可以表示一个或两个自由度。

图2.25(a)表示了三个关节,每个关节都是可以转动或平移的。第一个关节指定为关节n,第二个关节为关节n+1,第三个关节为关节n+2。在这些关节的前后可能还有其他关节。连杆也是如此表示,连杆n位于关节n与n+1之间,连杆n+1位于关节n+1与n+2之间。

为了用D-H表示法对机器人建模,所要做的第一件事是为每个关节指定一个本地的参考坐标系。因此,对于每个关节,都必须指定一个z轴和x轴,通常并不需要指定y轴,因为y轴总是垂直于x轴和z轴的。此外,D-H表示法根本就不用y轴。以下是给每个关节指定本地参考坐标系的步骤:

所有关节,无一例外的用z轴表示。如果关节是旋转的,z轴位于按右手规则旋转的方向。如果关节是滑动的,z轴为沿直线运动的方向。在每一种情况下,关节n处的z轴(以及该关节的本地参考坐标系)的下表为n-1。例如,表示关节数n+1的z轴是

。这些简单规则可使我们很快地定义出所有关节的z轴。对于旋转关节,绕z轴的旋转(

角)是关节变量。对于滑动关节,沿z轴的连杆长度d是关节变量。

如图2.25(a)所示,通常关节不一定平行或相交。因此,通常z轴是斜线,但总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义本地参考坐标系的x轴。所以如果

表示

之间的公垂线,则

的方向将沿

。同样,在

之间的公垂线为

的方向将沿

。注意相邻关节之间的公垂线不一定相交或共线,因此,两个相邻坐标系原点的位置也可能不在同一个位置。根据上面介绍的知识并考虑下面例外的特殊情况,可以为所有的关节定义坐标系。

如果两个关节的z轴平行,那么它们之间就有无数条公垂线。这时可挑选与前一关节的公垂线共线的一条公垂线,这样做就可以简化模型。

入股两个相邻关节的z轴是相交的,那么它们之间就没有公垂线(或者说公垂线距离为零)。这时可将垂直于两条轴线构成的平面的直线定义为x轴。也就是说,其公垂线是垂直于包含了两条z轴的平面的直线,它也相当于选取两条z轴的叉积方向作为x轴。这也会使模型得以简化。

在图2.25(a)中,

角表示绕z轴的旋转角,d表示在z轴上两条相邻的公垂线之间的距离,a表示每一条公垂线的长度(也叫关节偏移量),角

表示两个相邻的z轴之间的角度 (也叫关节扭转)。通常,只有

和d是关节变量。

下一步来完成几个必要的运动,即将一个参考坐标系变换到下一个参考坐标系。假设现在位于本地坐标系

,那么通过以下四步标准运动即可到达下一个本地坐标系

(1)绕

轴旋转

(如图2.25(a)与(b)所示),它使得

互相平行,因为

都是垂直于

轴的,因此绕

轴旋转

使它们平行(并且共面)。

(2)沿

轴平移

距离,使得

共线(如图2.25(c)所示)。因为

已经平行并且垂直于

,沿着

移动则可使它们互相重叠在一起。

(3)沿

轴平移

的距离,使得

的原点重合(如图2.25(d)和(e)所示)。这是两个参考坐标系的原点处在同一位置。

(4)将

轴绕

轴旋转

,使得

轴与

轴对准(如图2.25(f)所示)。这时坐标系n和n+1完全相同(如图2.25(g)所示)。至此,我们成功地从一个坐标系变换到了下一个坐标系。

在n+1和n+2坐标系间严格地按照同样的四个运动顺序可以将一个坐标变换到下一个坐标系。如有必要,可以重复以上步骤,就可以实现一系列相邻坐标系之间的变换。从参考坐标系开始,我们可以将其转换到机器人的基座,然后到第一个关节,第二个关节……,直至末端执行器。这里比较好的一点是,在任何两个坐标系之间的变换均可采用与前面相同的运动步骤。

通过右乘表示四个运动的四个矩阵就可以得到变换矩阵A,矩阵A表示了四个依次的运动。由于所有的变换都是相对于当前坐标系的(即他们都是相对于当前的本地坐标系来测量与执行),因此所有的矩阵都是右乘。从而得到结果如下:

           (2.51)

       (2.52)

比如,一般机器人的关节2与关节3之间的变换可以简化为:

           (2.53)

在机器人的基座上,可以从第一个关节开始变换到第二个关节,然后到第三个……,再到机器人的手,最终到末端执行器。若把每个变换定义为,则可以得到许多表示变换的矩阵。在机器人的基座与手之间的总变换则为:

                  (2.54)

其中n是关节数。对于一个具有六个自由度的机器人而言,有6个A矩阵。

为了简化A矩阵的计算,可以制作一张关节和连杆参数的表格,其中每个连杆和关节的参数值可从机器人的原理示意图上确定,并且可将这些参数代入A矩阵。表2.1可用于这个目的。

在以下几个例子中,我们将建立必要的坐标系,填写参数表,并将这些数值代入A矩阵。首先从简单的机器人开始,以后再考虑复杂的机器人。

表2.1     D-H参数表

#

d

a

1

2

3

4

5

6

对于如图2.26所示的简单机器人,根据D-H表示法,建立必要的坐标系,并填写相应的参数表。

解:

为方便起见,在此例中,假设关节2,3和4在同一平面内,即它们的

值为0。为建立机器人的坐标系,首先寻找关节(如图2.26所示)。该机器人有六个自由度,在这个简单机器人中,所有的关节都是旋转的。第一个关节(关节1)在连杆0(固定基座)和连杆1之间,关节2在连杆1和连杆2之间,等等。首先,如前面已经讨论过的那样,对每个关节建立z轴,接着建立z轴。观察图2.27和图2.28所示的坐标可以发现,图2.28是图2.27的简化线图。应注意每个坐标系原点3在它所在位置的原因。

图2.26    具有六个自由度的简单链式机器人

图2.27    简单六个自由度链式机器人的参考坐标系

图2.28    简单六个自由度链式机器人的参考坐标系线图

从关节1开始,

表示第一个关节,它是一个旋转关节。选择

与参考坐标系的x轴平行,这样做仅仅是为了方便,

是一个固定的坐标轴,表示机器人的基座,它是不动的。第一个关节的运动是围绕着

-

轴进行的,但这两个轴并不运动。接下来,在关节2处设定

,因为坐标轴

是相交的,所以

垂直于

之间的公垂线方向上,

之间的公垂线方向上,类似地,

之间的公垂线方向上。最后,

是平行且共线的。

表示关节6的运动,而

表示末端执行的运动。通常在运动方程中不包含末端执行器,但应包含末端执行器的坐标系,这是因为它可以容许进行从坐标系

出发的变换。同时也要注意第一个和最后一个坐标系的原点的位置,它们将决定机器人的总编换方程。可以在第一个和最后的坐标系之间建立其他的(或不同的)中间坐标系,但只要第一个和最后的坐标系没有改变,机器人的总变换便是不变的。应注意的是,第一个关节的原点并不在关节的实际位置,但证明这样做是没有问题的,因为无论实际关节是高一点还是低一点,机器人的运动并不会有任何差异。因此,考虑原点位置时可不用考虑基座上关节的实际位置。

接下来,我们将根据已建立的坐标系来填写表2.2中的参数。参考前一节中任意两个坐标系之间的四个运动的顺序。从

开始,有一个旋转运动将

转到了

,为使得

轴重合,需要沿

和沿

的平移均为零,还需要一个旋转将

转到

,注意旋转是根据右手规则进行的,即将右手手指按旋转的方向弯曲,大拇指的方向则为旋转坐标轴的方向。到了这时,

就变换到了

接下来,绕

旋转

,将

转到了

,然后沿

轴移动距离

,使坐标系原点重合。由于前后两个z轴是平行的,所以没有必要绕x轴旋转。按照这样的步骤继续做下去,就能得到所需要的结果。

必须要认识到,与其他机械类似,机器人也不会保持原理图中所示的一种构型不变。尽管机器人的原理图是二维的,但必须要想象出机器人的运动,也就是说,机器人的不同连杆和关节在运动时,与之相连的坐标系也随之运动。如果这时原理图所示机器人构型的坐标轴处于特殊的位姿状态,当机器人移动时它们又会处于其他的点和姿态上。比如,

总是沿着关节3与关节4之间连线

的方向。当机器人的下臂绕关节2旋转而运动。在确定参数时,必须记住这一点。

表2.2     例2.19机器人的参数

#

d

a

1

0

0

90

2

0

0

3

0

0

4

0

-90

5

0

0

90

6

0

0

0

表示旋转关节的关节变量,d表示滑动关节的关节变量。因为这个机器人的关节全是旋转的,因此所有关节变量都是角度。

通过简单地从参数表中选取参数代入A矩阵,便可写出每两个相邻关节之间的变换。例如,在坐标系0和1之间的变换矩阵

可通过将

(sin

=1,cos

=0,

=

)以及指定

等代入A矩阵得到,对其他关节的

~

矩阵也是这样,最后得:

        (2.55)

特别注意:为简化最后的解,将用到下列三角函数关系式:

                (2.56)

在机器人的基座和手之间的总变换为:

                                                   (2.57)

斯坦福机械手臂。在斯坦福机械手臂上指定坐标系(如图2.29所示),并填写参数表。斯坦福机械手臂是一个球坐标手臂,即开始的两个关节是旋转的,第三个关节是滑动的,最后三个腕关节全是旋转关节。

图2.29    斯坦福机械手臂示意图

解:

在看本题解答之前,现根据自己的理解来做,问题的答案在本章的最后。建议在看解答中建立的坐标系和机械手臂的解之前,先试着自己做。

机器手臂最后的正运动学解是相邻关节之间的6个变换矩阵的乘积:

其中

                             (2.58)

计算机器人正反运动学方程,机器人运动学方程相关推荐

  1. matlab 计算连杆长度,matlab机器人运动学计算

    一.两连杆机器人 1.Link Link()是构建连杆的基本函数 建立连杆的基本规则是 L = Link(DH, OPTIONS) DH = [THETA D A ALPHA SIGMA OFFSET ...

  2. matlab 机器人运动,matlab机器人运动计算

    两关节机器人运动分析MATLAB源程序_机械/仪表_工程科技_专业资料.function [ ] = DAR( ) % 名称:两关节机器人(DAR-Double Arm Robot) % 功能:计算两 ...

  3. 【机器人基础】机器人的运动学控制和动力学控制

    机器人运动学 机器人运动学就是用来解决位置控制问题的,常见的问题有两个: 1.正解建模 知道当前几个电机的转角,通过运动学方程得知机器人末端的位置 2.逆解建模 需要将机器人末端移动到指定位置,如何根 ...

  4. ROS中阶笔记(二):机器人系统设计—URDF机器人建模

    ROS中阶笔记(二):机器人系统设计-URDF机器人建模 文章目录 01 URDF理论 1.1 什么是URDF 1.2 模型< robot > 1.2.1 < link > e ...

  5. 四足机器人|机器狗|仿生机器人|多足机器人|Adams仿真|Simulink仿真|基于CPG的四足机器人Simulink与Adams虚拟样机|源码可直接执行|绝对干货!需要资料及指导的可以联系我!

    四足机器人|机器狗|仿生机器人|多足机器人|基于CPG的四足机器人Simulink与Adams虚拟样机|源码可直接执行|绝对干货!需要资料及指导的可以联系我!QQ:1096474659 基于CPG的四 ...

  6. MATLAB机器人工具箱(一 机器人运动学)

    目录 一.三维空间位姿表示与坐标变换方法 三维空间的位置与姿态表示 位置描述 姿态描述 旋转矩阵 坐标系绘制 坐标变换 平移坐标变换 旋转变换 二.机器人运动学 D-H参数法 创建一个连杆对象 创建一 ...

  7. 计算机机器人游戏教学计划,机器人教学计划.docx

    机器人教学计划 一.社团活动指导思想 机器人是一门涉及工程学.机电.物理.建筑.数字动力.电脑编程为一体的以培养学生综合性,创新性思维为宗旨的综合性多元化实践类学科.它的设立,在于充分弥补学生在课堂学 ...

  8. 【机器人算法】机器人动力学、运动学和基于动力学模型的仿真与控制

    文章目录 运动学 机器人运动学参数标定(DH参数标定) 运动学逆解 解析解 数值解 工作空间分析 可操纵性 轨迹规划 路径规划 静力学 动力学 动力学模型 动力学仿真 自由下落 遇到跳床 重力补偿 动 ...

  9. 申通快递机器人上岗_申通快递机器人上岗 物流机器人在中国会是个大生意

    原标题:申通快递机器人上岗 物流机器人在中国会是个大生意 关注凤凰商业 心有温度.气有风骨.肩敢担当.行真性情的灵魂 终会相遇 来源:界面新闻 图片来源:东方IC 申通快递4月在义乌.天津.临沂三地启 ...

最新文章

  1. CSP 202006-1 线性分类器 python实现+详解
  2. Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)...
  3. python3.7.2 pip 出现locations that require TLS/SSL异常处理方法
  4. starting mysql. success!_启动mysql报错解决问题过程
  5. Linux(CentOS)网络流量实时监控(iftop)
  6. Oracle11g 统计信息——统计信息自动收集任务
  7. python字符串去掉标点_在Python去掉标点符号字符串的最佳方式_string_酷徒编程知识库...
  8. 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符go时,第一个只出现一次的字符是g。当从该字符流中读出前六个字符“google时,,,(C++实现)
  9. ajax可以获取作用域的值吗,javascript – 为什么ajax调用中的闭包可以访问外部作用域?...
  10. python标准输入多行文字_python如何输入多行数据
  11. mysql中MVCC多版本并发控制原理的详解
  12. php截取视频指定帧为图片,把视频变成一帧一帧的图片(ae怎么把视频变成单帧) 视频截图视频画面每帧图片截取...
  13. i.MX 8M Mini sai_low_power_audio
  14. Endless Dice 游戏解析
  15. pytorch学习随手记
  16. 【git】error: .repo/manifests/: contains uncommitted changes解决思路
  17. Chrome 扩展程序 OneTab Techzero优化版 v1.0.0 发布
  18. 《python深度学习》学习笔记与代码实现(第八章:8.1,8.2,8.3)
  19. php数值变成函数,PHP实现金额数字转换成大写函数
  20. 魔坊APP项目-17-种植园,商城页面、服务端提供商品api,解决App打包编译以后的跨域限制、客户端获取商品列表并进行展示,集成Alipayplus模块完成支付

热门文章

  1. C++以及java学习方法和路线
  2. 计算机低级格式化,低级格式化,教您硬盘怎么低级格式化
  3. cf 、B. Fridge Lockers(思维 + 贪心)
  4. 用CPU-Z查看内存插槽个数与频率
  5. 超星加密后的最终解决方法---基于人工智能图像识别的思路
  6. 业务数据激增,4张图看清zData如何助力金融企业快速响应IT需求
  7. 转载的一篇存储图片等信息的还不错的文章
  8. 【数据可视化应用】绘制森林图(附Python和R语言代码)
  9. vbs新年祝福,怎么样
  10. gtx1660是什么级别的_GTX1660显卡首测:1060终于可以退休了!