机器人操作臂运动学入门一--D-H参数标定
最近重新学习机器人方面的知识,想到一年以前在学校选修《机器人学技术基础》这门课的时候,老师虽然讲机器人的各个方面的知识都讲到了,但只是浮光绿影的的提到,并没有真正讲到深处,我的理解也没有更加深入,导致总是知道有这个知识点,但总是用起来不顺手,有时候还会完全迷惑。最近重新看了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参数标定的更多相关文章
- tar -h 参数
1.1.1 tar命令参数-h,-h参数会把软链接指向的文件也打包. [root@ob2 mytmp]# ll total 8 -rw-r--r--. 1 root root 910 Aug 12 2 ...
- Python入门篇-函数、参数及参数解构
Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...
- V-rep学习笔记:机器人逆运动学解算
IK groups and IK elements VREP中使用IK groups和IK elements来进行正/逆运动学计算,一个IK group可以包含一个或者多个IK elements: I ...
- V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)
When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...
- V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)
The damped least squares method is also called the Levenberg-Marquardt method. Levenberg-Marquardt算法 ...
- 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 ...
- V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)
机器人运动学逆解的问题经常出现在动画仿真和工业机器人的轨迹规划中:We want to know how the upper joints of the hierarchy would rotate ...
- springMVC第一天——入门、整合与参数绑定
大纲摘要: 1.Springmvc介绍 2.入门程序 3.Springmvc架构讲解 a) 框架结构 b) 组件说明 4.Springmvc整合mybatis 5.参数绑定 乱码问题解决 a) Spr ...
- 一起入门python7之函数参数
上一节课简单的讲了一下函数.那么今天来给大家讲一下函数参数.用案例说话哈.上一节课只是让大家有比较简单的了解,那么这节我们来细化一下哈.>>>def hello(x): ...
随机推荐
- 带你玩转JavaWeb开发之六-mysql基本语法详解及实例(3)
[语法] update 表名 set 列名=列值,列名=列值 -[条件]; [注意事项] * 修改的列的值需要与列的类型一致. * 修改的列的值的长度不能超过列的类型的最大长度. * 字符串类型和日期 ...
- 我喜欢ASP.NET的MVC因为它牛逼的9大理由(转载)
我很早就关注ASP.NET的mvc的,因为最开始是学了Java的MVC,由于工作的原因一直在做.Net开发,最近的几个新项目我采用了MVC做了,我个一直都非常喜欢.Net的MVC.我们为什么使用MVC ...
- session过期时间
在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户没有使用系统一定时间后,自动退出登录,销毁session. 具体设置很简单: 在主页面或者公共页面中加入:session.set ...
- 常见的JAVA包
java.lang 提供利用 Java 编程语言进行程序设计的基础类.最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类). java.util 包含 ...
- django--一对多,多对多查询
假设有表的关系如下: class Classes(models.Model): name = models.CharField(max_length=32) institute = models.Ch ...
- 【原创】Android selector选择器无效或无法正常显示的一点研究
想将LinearLayout作为一个按钮,加上一个动态背景,按下的时候,背景变色,这个理所当然应该使用selector背景选择器来做: <LinearLayout android:id=&quo ...
- 鼠绘漫画 for wp8.1
技术规格总结: 这个APP 总体上是下载图片的一个APP 所以对图片的查看&控制上需要一定功力,至少有一个稳定的缩小,放大的图片控件. 搭载WP系统的手机,内存上大部分不是很大,所以内存的控制 ...
- Ubuntu 汉化时ubuntu software database is broken错误解决
关于Ubuntu 汉化时的错误解决:按照网上的方法没有解决 最后 删掉thunderbird mail .这个软件,顺利解决!! 错误:thunderbird-locale-en: Depends: ...
- Centos6.5 python2.7连接mysql数据库
1.环境是centos6.5 32位系统,python版本是2.7.12,mysql版本是5.5.22.准备好所需压缩包,MySQL-python-1.2.4b4.tar.gz pip-6.0.7. ...
- ajaxfileupload 传参数
引用:http://www.cnblogs.com/lyeo/archive/2012/05/11/2496261.html 直接上代码: var data = { name: 'my name', ...