赞
踩
在了解了基本的坐标系的变换方式之后,我们着眼于解决实际的机器人设计问题。
那最开始研究的肯定是运动学喽,kinematic,运动学最早会在小学二年级的理论力学课程里讲到,当然中学的物理课也会讲到只是浅尝辄止而已。
无论是在高中物理还是理论力学课本还是机械原理的教科书里,运动学一定处在一个靠前的位置,他研究的是物体的位置、速度和加速度,但是不涉及到力和能量。
先进行运动学分析很自然,因为我们设计一个普通的四杆机构也好,设计复杂的机器人也好,都是要完成指定任务,这些任务往往需要我们的机构上的某一个工具到达指定位置,以什么样的速度、加速度、甚至是加加速度做什么样的运动,我们是基于这些需求进行机构设计,设计之初我们无法确定杆件的长度、材料、质量,所以根本做不了力和能量的分析,所以只做运动学分析,而所有的杆件都简化为无质量的杆,这就十分方便,我们就基于位置、位移进行运动分析就可以了,至于怎么驱动、怎么校核,嘿嘿,不管,明天的事儿明天再说! : P
对于一个开链的机械臂,如果有n个单自由度关节,把这n个关节的运动量写成一个n维的向量q,这就被称为关节坐标,关节坐标可以唯一确定机械臂的整体姿态。
但是我们用机械臂作业大部分时候不关心机械臂整体是什么样子,不考虑机体和外界干涉(碰撞)的话,我们只关心末端执行器的位姿,而每个关节坐标q一定唯一对应一个末端位姿,当然,如果机械臂足够灵活,同一个末端位姿可以被多个关节坐标对应,所以我们需要建立一个从关节坐标空间到末端位姿空间的映射:
常用的方式是利用DH约定,按一定规则在n+1个杆上都建立坐标系,然后利用一些参数建立两两之间的齐次变换矩阵,然后利用链式法则就可以求任意两个坐标系之间的变换矩阵了,当然我们最关心的是从末端到基座的世界坐标系的变换。
另一种方式是利用运动旋量理论确定n个转轴对应的旋量,直接确定末端到基座的变换,这种形式在数学上和形式上都十分优美和简洁,但是需要的参数为六个多于DH法的4个参数,也就是存在参数冗余,相关知识可以从Morden Robotics简单了解,我们着重介绍DH法,DH法显然是很有利于编程的。
三维空间中任意运动可以表示为绕任意空间直线旋转任意角度,可以用一个范数(就是模)为旋转角度
θ
\theta
θ 的空间旋量表示,共需要6个参数,DH法的简洁之处就在于,在机械臂各杆的变换矩阵的构建的问题上,我们按一定规则构建坐标系,可以只用4个参数来表示相邻两个坐标系之间的变换矩阵。
这个规则就是,在上图两个坐标系之间:
** 当然,这些角标i的值怎么确定,以及坐标系怎么对应上序号这个马上就说,根据不同的坐标系的构建方法,其实有很多DH约定的形式,有啥Standard的标准法,还有啥Craig修正法,就是坐标系的选取和标号上有差异,除了这两种历史上还有好多,下面就介绍一种把,具体是啥名字,我还真分不清,我记得BILIBILI有个我国台湾省教授林沛群先生的公开课有讨论两种方式的异同。
当然就算使用相同的约定方式,构建出来的坐标系也会有细微差异,比如x轴取正向反向就产生了两个不同的坐标系,但是殊途同归,所有方法求出的末端到基坐标系的变换矩阵一定是一样的,就好比不管怎么选海平面的位置,喜马拉雅山的相对海拔是不会变的。
(上图基座在右侧,越往右代号越小)
we have n个关节,一次编号1、2、…、n,然后就有n+1个杆,依次编号0、1、2、…、n,所以第i个关节连接的靠近基座的杆就是第i-1号杆,另一个就是第i个杆了。第i个杆上固联一个代号为i的坐标系。
所有坐标系Z轴的确定:
为了方便,我们选取关节的驱动轴(旋转关节的转轴,移动关节的移动轴)为某一个坐标系的z轴,
那第i个关节连着两个杆:i-1和i,这个轴我们选为第i-1个坐标系的z轴,这样n个关节就确定了0到n-1的坐标系的z轴,而固联在最后一个杆上的坐标系的z轴我们一般让他和
z
i
−
1
z_{i-1}
zi−1重合。
所有的z轴确定之后只要确定满足DH约定的两个条件的所有x轴就可以把所有坐标系的位置确定了(y轴由
Z
×
x
Z \times x
Z×x得到 )。
X轴的确定分三种情况:
坐标系一旦确定,就可以写出i组DH参数也就是原理部分提到的两个转角和两个移动,列出一个DH表后任意相邻两个坐标系之间的变换矩阵就可以通过公式求出来了。
当然因为我们选取的Z轴都是和关节的驱动轴重合的,其实这四个参数里面沿着Z轴方向的位移量d和旋转量
θ
\theta
θ之一(以为一个关节只有一个自由度)是可以根据驱动器是直线驱动还是旋转驱动来改变的,而其他三个量是由机构的物理结构决定的。也就是每组参数都只有一个关节变量要么是d要么是
θ
\theta
θ.
这部分就是考验你熟练程度的了,想要加深概念就找点题做,所有机器人学的书上都有大量对典型工业机械臂的DH表的构建题。
想要实际计算的就可以自己上手编程了,(人怎么算?不是人算的!)当然机构的尺寸、结构还是要熟悉的,另外在程序化的时候,一般不选用齐次矩阵的方式,而是迭代的方式一步步乘以旋转矩阵然后加上位移,虽然人看着麻烦,但是计算机算着很舒服,这里就不赘述了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。