当前位置:   article > 正文

机器人学笔记-3正运动学_机器人正运动学

机器人正运动学
1. 我简单讲两句

在了解了基本的坐标系的变换方式之后,我们着眼于解决实际的机器人设计问题。
那最开始研究的肯定是运动学喽,kinematic,运动学最早会在小学二年级的理论力学课程里讲到,当然中学的物理课也会讲到只是浅尝辄止而已。
无论是在高中物理还是理论力学课本还是机械原理的教科书里,运动学一定处在一个靠前的位置,他研究的是物体的位置、速度和加速度,但是不涉及到力和能量。
先进行运动学分析很自然,因为我们设计一个普通的四杆机构也好,设计复杂的机器人也好,都是要完成指定任务,这些任务往往需要我们的机构上的某一个工具到达指定位置,以什么样的速度、加速度、甚至是加加速度做什么样的运动,我们是基于这些需求进行机构设计,设计之初我们无法确定杆件的长度、材料、质量,所以根本做不了力和能量的分析,所以只做运动学分析,而所有的杆件都简化为无质量的杆,这就十分方便,我们就基于位置、位移进行运动分析就可以了,至于怎么驱动、怎么校核,嘿嘿,不管,明天的事儿明天再说! : P

对于一个开链的机械臂,如果有n个单自由度关节,把这n个关节的运动量写成一个n维的向量q,这就被称为关节坐标,关节坐标可以唯一确定机械臂的整体姿态。
但是我们用机械臂作业大部分时候不关心机械臂整体是什么样子,不考虑机体和外界干涉(碰撞)的话,我们只关心末端执行器的位姿,而每个关节坐标q一定唯一对应一个末端位姿,当然,如果机械臂足够灵活,同一个末端位姿可以被多个关节坐标对应,所以我们需要建立一个从关节坐标空间到末端位姿空间的映射:
常用的方式是利用DH约定,按一定规则在n+1个杆上都建立坐标系,然后利用一些参数建立两两之间的齐次变换矩阵,然后利用链式法则就可以求任意两个坐标系之间的变换矩阵了,当然我们最关心的是从末端到基座的世界坐标系的变换。
另一种方式是利用运动旋量理论确定n个转轴对应的旋量,直接确定末端到基座的变换,这种形式在数学上和形式上都十分优美和简洁,但是需要的参数为六个多于DH法的4个参数,也就是存在参数冗余,相关知识可以从Morden Robotics简单了解,我们着重介绍DH法,DH法显然是很有利于编程的。

2. DH(Denavit-Hartenberg)约定
2.1 DH原理

三维空间中任意运动可以表示为绕任意空间直线旋转任意角度,可以用一个范数(就是模)为旋转角度 θ \theta θ 的空间旋量表示,共需要6个参数,DH法的简洁之处就在于,在机械臂各杆的变换矩阵的构建的问题上,我们按一定规则构建坐标系,可以只用4个参数来表示相邻两个坐标系之间的变换矩阵。
在这里插入图片描述

这个规则就是,在上图两个坐标系之间:

  1. x 1 x_1 x1 垂直于 z 0 z_0 z0
  2. x 1 x_1 x1 z 0 z_0 z0 相交
    这样一定可以确定绕 z 0 z_0 z0轴的一个转角 θ 1 \theta_1 θ1使得 x 0 x_0 x0 x 1 x_1 x1平行,而且可以看出延 z 0 z_0 z0轴移动d后再延 x 1 x_1 x1方向移动a可以把 o 0 o_0 o0 o 1 o_1 o1重合。
    第一次变换 R z , θ 1 R_{z,\theta_1} Rz,θ1 是绕原坐标系 z 0 z_0 z0轴旋转 θ 1 \theta_1 θ1使得 x 0 x_0 x0 x 1 x_1 x1平行,也就是使得新产生的坐标系的X轴和 x 1 x_1 x1平行,这有利于进行延新坐标系X轴平移时候的旋转矩阵的构建(相对于新坐标系X轴移动直接右乘就可以了)。
    第二、三次变换 T z , d 1 , T x , a 1 T_{z,d_1},T_{x,a_1} Tz,d1,Tx,a1 就是两次平移把两个坐标系的原点重合
    最后一次变换 R x , α 1 R_{x,\alpha_1} Rx,α1 使得两个Z轴重合就完事了
    对从第i个坐标系相对于第i-1个坐标系的变换 A i i − 1 A^{i-1}_{i} Aii1 来说,有如下结果:
    A i i − 1 = R z , θ i T z , d i T x , a i R x , α i = [ c θ i − s θ i c α i s θ i s α i a i c θ i s θ i c θ i c α i − c θ i s α i a i s θ i 0 s α i c α i d i 0 0 0 1 ]   {\rm{A}}_i^{i - 1} = {R_{z,{\theta _i}}}{T_{z,{d_i}}}{T_{x,{a_i}}}{R_{x,{\alpha _i}}} = \left[ {
    cθisθicαisθisαiaicθisθicθicαicθisαiaisθi0sαicαidi0001
    } \right]\
    Aii1=Rz,θiTz,diTx,aiRx,αi= cθisθi00sθicαicθicαisαi0sθisαicθisαicαi0aicθiaisθidi1  

** 当然,这些角标i的值怎么确定,以及坐标系怎么对应上序号这个马上就说,根据不同的坐标系的构建方法,其实有很多DH约定的形式,有啥Standard的标准法,还有啥Craig修正法,就是坐标系的选取和标号上有差异,除了这两种历史上还有好多,下面就介绍一种把,具体是啥名字,我还真分不清,我记得BILIBILI有个我国台湾省教授林沛群先生的公开课有讨论两种方式的异同。
当然就算使用相同的约定方式,构建出来的坐标系也会有细微差异,比如x轴取正向反向就产生了两个不同的坐标系,但是殊途同归,所有方法求出的末端到基坐标系的变换矩阵一定是一样的,就好比不管怎么选海平面的位置,喜马拉雅山的相对海拔是不会变的。

2.2 关节、连杆、坐标系代号的确定的规定

在这里插入图片描述

(上图基座在右侧,越往右代号越小)
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} zi1重合。
    所有的z轴确定之后只要确定满足DH约定的两个条件的所有x轴就可以把所有坐标系的位置确定了(y轴由 Z × x Z \times x Z×x得到 )。

  • X轴的确定分三种情况:

  1. z i − 1 z_{i-1} zi1 z i z_i zi 不共面
    x i x_i xi沿着两个z轴之间的最短垂线,一般方向为从 z i − 1 z_{i-1} zi1 指向 z i z_i zi
  2. z i − 1 z_{i-1} zi1 z i z_i zi 平行
    于两个轴垂直相交的向量都可以,一般为了方便可以选取过坐标系原点 o i − 1 o_{i-1} oi1 x i x_i xi,这样 d i , α i d_i,\alpha_i di,αi就都为零了。一般方向为从 z i − 1 z_{i-1} zi1 指向 z i z_i zi
  3. z i − 1 z_{i-1} zi1 z i z_i zi 相交
    可以选取 z i − 1 × z i z_{i-1} \times z_i zi1×zi的方向亦可以取反向
2.3 构建DH表

坐标系一旦确定,就可以写出i组DH参数也就是原理部分提到的两个转角和两个移动,列出一个DH表后任意相邻两个坐标系之间的变换矩阵就可以通过公式求出来了。
当然因为我们选取的Z轴都是和关节的驱动轴重合的,其实这四个参数里面沿着Z轴方向的位移量d和旋转量 θ \theta θ之一(以为一个关节只有一个自由度)是可以根据驱动器是直线驱动还是旋转驱动来改变的,而其他三个量是由机构的物理结构决定的。也就是每组参数都只有一个关节变量要么是d要么是 θ \theta θ.
这部分就是考验你熟练程度的了,想要加深概念就找点题做,所有机器人学的书上都有大量对典型工业机械臂的DH表的构建题。
想要实际计算的就可以自己上手编程了,(人怎么算?不是人算的!)当然机构的尺寸、结构还是要熟悉的,另外在程序化的时候,一般不选用齐次矩阵的方式,而是迭代的方式一步步乘以旋转矩阵然后加上位移,虽然人看着麻烦,但是计算机算着很舒服,这里就不赘述了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1008057
推荐阅读
相关标签
  

闽ICP备14008679号