最近重新学习机器人方面的知识,想到一年以前在学校选修《机器人学技术基础》这门课的时候,老师虽然讲机器人的各个方面的知识都讲到了,但只是浮光绿影的的提到,并没有真正讲到深处,我的理解也没有更加深入,导致总是知道有这个知识点,但总是用起来不顺手,有时候还会完全迷惑。最近重新看了Graig的《机器人学导论》导论的中文版,里面对D-H参数的讲解比较详细,更重要的是举出了详细的案例。

  其实D—H参数是有两种标定方式的,一种是标准的D-H参数法,还有一种是改进的D—H参数法,大部分书上现在都用到的是改进的D-H法,但也有一些书上用的是标准的D-H法,但是D-H法只是一种对连杆的坐标描述,最后的结果往往相同的参数就会有相同的物理含义在里面。不同的书上使用不同表示方法往往会给看书的人带来不小的迷惑,我就有一段时间非常迷茫,自己后来干脆就不管什么标准的D-H法,就按照大部分书上使用的改进的D-H方法去标定,只要掌握一种方法并清楚里面参数的含义就能方便地列写参数表,进而写出机器人操作臂的运动变换方程。

  首先对连杆做一简单介绍,在机器人运动学中,所谓连杆就是具有一定运动学功能的刚性杆,这和《机械原理》中的构件有相似的性质,就是它是运动的最小单元,而且由于它本身的形状和大小会对运动有影响。至于刚性,就是在运动学阶段我们认为连杆受力不会发生变形(事实上机器人在操作臂在运动过程中受力情况复杂,一定会发生变形)。在机器人操作臂中,研究的内容主要是一系列连杆通过关节连接起来而组成的空间开式运动链。这是最早的现代机器人的模型,也是在工业中应用最广泛的机器人,就是我们常说的工业机械臂。另一个重要的概念就是关节,在这里关节就是将两个机械臂连接起来的部分,而这个连接不是固定连接,而是两个连杆之间只能发生有限的相对运动。比如一个连杆绕一个连杆的转动,或者一个连杆沿着另一个连杆的某一个方向平动,在常见的工业机器人中转动平动是最基本的也是最常见的运动,基本到基本上没有其它形式的运动了。

  好了,现在开始来研究我们的第一个研究对象---连杆,描述的连杆参数有两个,无论形状多么复杂的连杆,其实它在运动的能提供的运动学功能是可以用两个参数确定的,一个是连杆的长度a,另一个是连杆的转角α,下图为我们详细地解释了这两个参数的意义:

图片来源于《机器人学导论》,如图中所示,一个连杆两端连接着有两个关节,为了描述起来方便,我们规定连杆i左端的关节是i,这样做的好处是从基座为连杆0,而基座和连杆1之间的关节就是关节1,而确实关节1就是机器人的第一个关节,这样描述起来就会方便很多,一个n自由度的机械臂就有n个关节和n+1个连杆,算上基座0,就像我们在《机械原理》中将大地也作为一个构件一样的道理。对于图中的连杆i-1,其左边对应的关节轴i-1,右边对应的是关节轴i,两个关节轴之间的关系便由这个连杆确定,在三维空间中,描述两个关节轴线之间的位置关系用他们之间的距离和角度就可以了,图中ai-1就是两条空间直线的公垂线,在三维空间中总是可以找到两条直线之间的公垂线,如果他们平行则有无数条,如果他们异面,则有一条,如果他们相交,则公垂线就是一个点了,总之,关节轴线i-1和关节轴线i的距离是由连杆i-1来确定的。除了描述两条轴线之间的距离,我们还需要描述这两条轴线之间的夹角,夹角的定义是关节轴i-1绕着公垂线ai-1转动到和关节轴i平行是所转过的角度αi-1按照右手法则转动,公垂线ai-1方向定义为从轴i-1指向轴i。注意到在这种描述中,连杆长度a和连杆转角α都是下标为i-1的,这是因为我们连杆也是第i-1根连杆,是一致的。

  上面我使用了两个参数完全地将一个连杆的运动学特殊性描述出来了,接下来就需要思考如何描述相邻两个连杆之间的关系,两个连杆之间是通过一个关节连接的,我们很容易想到描述连杆之间的关系实际上反映的是这个关节轴的一些特性。继续看图说话:

上图中,连杆i-1和连杆i通过关节轴i相互连接,我们规定,沿着关节轴i的轴向,将连杆i-1的长度ai-1移动到和连杆i的长度ai的距离叫做连杆偏距di ,这个参数反映了两个连杆沿着轴i的距离。同时,我们从图中看到连杆i-1和连杆i的长度线并不共线,这说明这两条线之间存在夹角,我们规定绕轴i将长度线ai-1的延长线转动到和长度线ai 转过的角度叫做关节角θi, 关节角反映了两个连杆在关节轴处的夹角。通过连杆偏距和关节角就可以将两个相邻连杆之间的相对位置描述清楚。因此,对于一个连杆,需要有四个参数对其进行描述,两个参数描述连杆本身的特性,另外两个参数描述该连杆和上一个连杆之间的关系。其中连杆偏距di关节角θi是由关节决定的,反映关节的运动学特性。如果关节i是一个转动关节,那么连杆i-1连杆i之间沿着关节轴线i距离di就是一个定值,在设计好机器人中该值不会再改变,而θi会发生改变,因此θi称为关节变量,意思就是机器人在运动过程中它会发生变化。同样的,如果关节i是一个移动关节,那么连杆i-1连杆i之间的夹角θi就是一个定值,变化的是两个连杆沿着关节轴线的距离di,此时di被称为关节变量

  为了在引入数学上的描述,我规定们给连杆上附件上坐标系,我们规定,在每个连杆上固连一个坐标系,对应于连杆i的坐标系就是{i},规定坐标系{i} 的Zi轴沿着关节轴线i,坐标原点在长度线ai和关节轴线的交点处,沿着长度线ai 由关节轴线i指向关节轴线i-1 是Xi的正方向。Yi按照右手螺旋定则确定。连杆坐标系表示在图中如下所示:

  当按照上述的要求定义好坐标系之后,四个连杆参数可以有在坐标系中的描述:

   ai = 沿着Xi 轴从Zi 移动到Zi+1的距离。

  αi = 绕着Xi轴从Zi转到Zi+1的角度。

  di = 沿着Zi轴从Xi-1到Xi的距离。

  θi = 绕着Zi轴从Xi-1到Xi的角度。

  现在,我们可以对一个机器人操作臂进行描述了,首先看一个平面三连杆机械臂。

   

  如上两图所示,对于一个平面三连杆机械臂,规定其Z轴垂直于纸面向外,可以得到如图的坐标表示方法。

  下面列写其D-H参数表:

  

  从上表就可以列写出机器人的运动学方程,可以说机器人(机械臂)的运动分析很大一部分工作是对机械臂进行参数标定。值得注意的是,参数标定方法不唯一,不同的人有不同的参数标定方式。

机器人操作臂运动学入门一--D-H参数标定的更多相关文章

  1. tar -h 参数

    1.1.1 tar命令参数-h,-h参数会把软链接指向的文件也打包. [root@ob2 mytmp]# ll total 8 -rw-r--r--. 1 root root 910 Aug 12 2 ...

  2. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  3. V-rep学习笔记:机器人逆运动学解算

    IK groups and IK elements VREP中使用IK groups和IK elements来进行正/逆运动学计算,一个IK group可以包含一个或者多个IK elements: I ...

  4. V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)

    When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...

  5. V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)

    The damped least squares method is also called the Levenberg-Marquardt method. Levenberg-Marquardt算法 ...

  6. V-rep学习笔记:机器人逆运动学数值解法(The Pseudo Inverse Method)

    There are two ways of using the Jacobian matrix to solve kinematics. One is to use the transpose of ...

  7. V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)

    机器人运动学逆解的问题经常出现在动画仿真和工业机器人的轨迹规划中:We want to know how the upper joints of the hierarchy would rotate ...

  8. springMVC第一天——入门、整合与参数绑定

    大纲摘要: 1.Springmvc介绍 2.入门程序 3.Springmvc架构讲解 a) 框架结构 b) 组件说明 4.Springmvc整合mybatis 5.参数绑定 乱码问题解决 a) Spr ...

  9. 一起入门python7之函数参数

    上一节课简单的讲了一下函数.那么今天来给大家讲一下函数参数.用案例说话哈.上一节课只是让大家有比较简单的了解,那么这节我们来细化一下哈.>>>def hello(x):        ...

随机推荐

  1. redis服务器

    Redis是一个Key-Value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 string(字符串 ). list(链表). set(集合)和 zset(有序集合). ...

  2. MVC入门第一天

    一.异步的两种方法 用jQ的异步  返回content controllor:return Content(sum.ToString());//这里涉及到一个自动封装的问题 html页:<for ...

  3. 数据结构与算法分析——C语言描述 第三章的单链表

    数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...

  4. IntelliJ Idea 常用快捷键列表

    Alt+回车 导入包,自动修正 sout+Tab Syso快捷键 Ctrl+Alt+F 局部变量变为全局变量 Ctrl+Alt+V 类似于eclipse中Ctrl+2+L的快捷键 Ctrl+Alt+T ...

  5. linux安装jdk和scala

    安装jdk 1.下载jdk 2.在linux中创建一个文件夹java,我习惯放在user下 3.上传jdk安装包到java下,然后解压 4.ect/profile下修改文件,添加环境变量 JAVA_H ...

  6. escape,encodeURI,encodeURIComponent的区别

    escape是对字符串进行编码而另外两种是对URL. encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'encodeURIComponent方法 ...

  7. Linux从零单排(二):setuptools、pip、anaconda2的环境配置

    为了更方便的使用Python的类库,需要进行相应的配置 (一)setuptools的配置 1.setuptools的下载 命令行输入wget https://pypi.python.org/packa ...

  8. oracle 函数调用

    --带out的函数 create or replace function fun_try(v_name varchar,v_outname out varchar)return varchar2 is ...

  9. HTML标签marquee实现滚动效果

    html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标记不仅可以移动文字,也可以移动图片,表格等.只需要在<ma ...

  10. Quartz2D 编程指南(三)渐变、透明层 、数据管理

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 渐变 简介 渐变是从一个颜色到另外 ...