干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)

618
0
2020年3月30日 08时17分

本文转载自微信公众号ROBOTICS

 

复习

 

       上一篇文章(《“瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)》)我们从正运动学公式推导出瞬时运动学公式,推出了著名的雅可比矩阵,并举了一个特别简单的例子以提供直观印象。简单复习一下——

 

       瞬时运动学解决了如何从关节速度得到end effector速度的问题:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图

 

       其中,J表示雅可比矩阵(Jacobian Matrix):

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(1)

 

        雅可比矩阵的物理意义,举例来说,就是第5行第3列的值表示当第3个关节转动/平移足够小的一定量(微分概念)时,乘上这个值就等于end effector在第5个自由度上相应的转动/平移量。如果这样说太抽象,请回到上一篇看例子——非常简单,包你看懂:)

 

基本雅可比矩阵(Basic Jacobian)

 

定义

 

       你可能会想,上面说end effector的第5个自由度,到底是指哪个自由度呢?显然,这取决于你如何描述end effector的运动。举个例子来说,假如我们有一个全自由度的end effector(即有3个转动DOF,3个平动DOF),那我们可以定义前三个自由度为沿某个坐标系的x, y, z轴平移,后三个自由度为绕该坐标系的x, y, z轴旋转——这样当我说第5个自由度,就是指绕这个坐标系的y轴旋转。实际雅可比矩阵的结果,完全取决于你选取的坐标系以及你描述end effector运动的顺序。

 

       所以,我们把用笛卡尔坐标描述线速度(linear velocity)和角速度(angular velocity)、以机械臂的基准坐标系(Base frame或frame{0})作为参照系来描述end effector速度所求得的雅可比矩阵,称为基本雅可比矩阵;其它所有表示方法(比如将笛卡尔坐标改为柱坐标、球坐标;角度改为欧拉角或四元数quaternion等)都可由这个基本雅可比矩阵转换得到。根据上面基本雅可比矩阵的定义,end effector的速度可以这么写:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(2)

 

      相应地,雅可比矩阵也可以写成:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(3)

 

      上半部分对应线速度、下半部分则对应角速度;从J的表达式中很容易可以看出来。

 

线速度部分(Jv)

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(4)

 

       首先我们从较容易理解的上半部分Jv开始,还记得上一篇文章里的例子(上图所示机械臂),我们是怎样求出雅可比矩阵的吗?

·   先写出end effector位置的正运动学表达式——

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(5)

 

·   再用操作空间的位置向量对关节空间的位置向量求导——

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(6)

 

       根据瞬时运动学的定义,这个方法是非常直观的。那如果我们的机械臂复杂一点,需要用到齐次坐标变换来求正运动学公式呢?

 

       比如,这是我们的机械臂:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(7)

 

       这是我们求出来end effector的正运动学表达式(《“正运动学”——从关节空间到操作空间》),这里假设图中OeO4是重合的:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(8)

 

      注意到旋转矩阵的部分全部打叉了——因为式子太长实在打不动——因为我们根本不需要啊。我们需要的,只有图中红色框框圈出来的部分,如果你坐标变换学得好,应该马上看出来它表示的是end effector的位置w.r.t frame{0}

 

       所以,我们要求的Jv只需要将红色框框圈出来的这个3×1向量(xe, ye,ze)对关节空间向量(θ1, d234)即求导即可!按照向量求导的规则,我们将得到一个3×4的矩阵,如下所示。

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(9)

 

角速度部分(Jw

 

       说完了Jv,我们要来说下半部分的Jw了。这个矩阵其实更容易求,但是要理解它则需要一点小“技巧”。我们还是先从最简单的平面机械臂看起:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(10)

 

      ——此机械臂已成出镜率最高机械臂

 

      当然,这次我们只关心end effector的朝向。对平面机械臂而言,end effector只有一个转动自由度,即图中标出的α(设与x轴重合时为0°,从x轴转到y轴为正方向)。此时我们的操作空间是(α),关节空间还是(θ12);根据定义,我们要求的雅可比矩阵角速度部分如下:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(11)

 

       对于这个平面机械臂而言,我们很容易就可以看出:θ1转多少角度,α就会转多少角度;θ2同理——所以Jw应为[1, 1]。

 

       举这个例子有什么用呢?希望它可以帮助你建立一个直观印象和基本观念——一个机械臂的旋转关节绕某个轴转多少角度,它的end effector就会相应地绕这个轴转多少角度;在平面机械臂的情况中,这表示一个旋转关节的转速乘以1即可得到它所引起(Contribute)的end effector转动的速度,因此上面的Jw为[1, 1]。

 

       在三维空间里,角速度定义为一个指向旋转轴的向量,其方向可以由右手定则确定。因为我们定义机械臂的每个旋转关节都是绕自身的z轴旋转的,所以当一个旋转关节转速为ω时,它所contribute的end effector的角速度向量以这个旋转关节本身的坐标系为参照系必然为[0, 0, ω]。换句话说,这个旋转关节的转速乘以[0, 0, 1]可得到它所引起的end effector的角速度(w.r.t 该旋转关节坐标系)。(end effector的实际转速可由不同旋转关节contribute的角速度线性叠加。)

 

       由于我们的基本雅可比矩阵是以frame{0}为参照系的,为了写出Jw,我们需要把每个旋转关节的z轴[0, 0, 1],从以关节自身坐标系为参照系转换到基准坐标系frame{0}中表示。另外,对于平移关节,因为平移关节的运动不可能改变end effector的朝向,所以end effector的orientation对平移关节位置的求导一定是0

 

       以前面出现的RPRR机械臂为例,它的雅可比矩阵角速度部分是这样的:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(12)

 

       你看明白了吗?

 

       现在我们剩下的最后一个问题就是怎么把各个关节的z轴坐标w.r.t frame{0}求出来——其实算过一遍各个关节的齐次坐标变换矩阵,我们不是早就知道答案了吗?

 

       帮大家写出两个:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(13)

 

总结

·   基本雅可比矩阵的上半部分Jv由end effector的位置向量对关节求导得出;

·   end effector的位置向量可由正运动学解得到

·   基本雅可比矩阵的下半部分Jw可由每个旋转关节的z轴以基准坐标系为参照系写出的单位向量得到

·   把Jv和Jw合起来可以得到一个m×n的矩阵,其中m是end effector/操作空间的自由度(对于空间机械臂通常m=6),n是机械臂的关节数量

 

其它雅可比矩阵

 

       最后简单地提一下,得到Basic Jacobian后,要求其它形式的雅可比矩阵都不是问题,只需要乘一个转换矩阵就可以了。比如说,如果你的end effector位置是由柱坐标表示的,即(ρ,θ, z),而柱坐标转换为笛卡尔坐标是:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(14)

 

       那么转换矩阵Ep(这里的p表示position)就由笛卡尔坐标对柱坐标的向量求导得出:

干货 | 机械臂的雅可比矩阵这么厉害,怎么把它求出来呢?(雅可比矩阵中篇)插图(15)

 

       而新的雅可比矩阵的上半部分就等于基本雅可比矩阵的Jv左乘上这个Ep。对于旋转也类似——大家了解一下就好,我不再详细展开了。

发表评论

后才能评论