本文转载自微信公众号ROBOTICS
复习
上一篇文章(《“瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)》)我们从正运动学公式推导出瞬时运动学公式,推出了著名的雅可比矩阵,并举了一个特别简单的例子以提供直观印象。简单复习一下——
瞬时运动学解决了如何从关节速度得到end effector速度的问题:
其中,J表示雅可比矩阵(Jacobian Matrix):
雅可比矩阵的物理意义,举例来说,就是第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的速度可以这么写:
相应地,雅可比矩阵也可以写成:
上半部分对应线速度、下半部分则对应角速度;从J的表达式中很容易可以看出来。
线速度部分(Jv)
首先我们从较容易理解的上半部分Jv开始,还记得上一篇文章里的例子(上图所示机械臂),我们是怎样求出雅可比矩阵的吗?
· 先写出end effector位置的正运动学表达式——
· 再用操作空间的位置向量对关节空间的位置向量求导——
根据瞬时运动学的定义,这个方法是非常直观的。那如果我们的机械臂复杂一点,需要用到齐次坐标变换来求正运动学公式呢?
比如,这是我们的机械臂:
这是我们求出来end effector的正运动学表达式(《“正运动学”——从关节空间到操作空间》),这里假设图中Oe和O4是重合的:
注意到旋转矩阵的部分全部打叉了——因为式子太长实在打不动——因为我们根本不需要啊。我们需要的,只有图中红色框框圈出来的部分,如果你坐标变换学得好,应该马上看出来它表示的是end effector的位置w.r.t frame{0}。
所以,我们要求的Jv,只需要将红色框框圈出来的这个3×1向量(xe, ye,ze)对关节空间向量(θ1, d2,θ3,θ4)即求导即可!按照向量求导的规则,我们将得到一个3×4的矩阵,如下所示。
角速度部分(Jw)
说完了Jv,我们要来说下半部分的Jw了。这个矩阵其实更容易求,但是要理解它则需要一点小“技巧”。我们还是先从最简单的平面机械臂看起:
——此机械臂已成出镜率最高机械臂
当然,这次我们只关心end effector的朝向。对平面机械臂而言,end effector只有一个转动自由度,即图中标出的α(设与x轴重合时为0°,从x轴转到y轴为正方向)。此时我们的操作空间是(α),关节空间还是(θ1,θ2);根据定义,我们要求的雅可比矩阵角速度部分如下:
对于这个平面机械臂而言,我们很容易就可以看出:θ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机械臂为例,它的雅可比矩阵角速度部分是这样的:
你看明白了吗?
现在我们剩下的最后一个问题就是怎么把各个关节的z轴坐标w.r.t frame{0}求出来——其实算过一遍各个关节的齐次坐标变换矩阵,我们不是早就知道答案了吗?
帮大家写出两个:
总结
· 基本雅可比矩阵的上半部分Jv由end effector的位置向量对关节求导得出;
· end effector的位置向量可由正运动学解得到
· 基本雅可比矩阵的下半部分Jw可由每个旋转关节的z轴以基准坐标系为参照系写出的单位向量得到
· 把Jv和Jw合起来可以得到一个m×n的矩阵,其中m是end effector/操作空间的自由度(对于空间机械臂通常m=6),n是机械臂的关节数量。
其它雅可比矩阵
最后简单地提一下,得到Basic Jacobian后,要求其它形式的雅可比矩阵都不是问题,只需要乘一个转换矩阵就可以了。比如说,如果你的end effector位置是由柱坐标表示的,即(ρ,θ, z),而柱坐标转换为笛卡尔坐标是:
那么转换矩阵Ep(这里的p表示position)就由笛卡尔坐标对柱坐标的向量求导得出:
而新的雅可比矩阵的上半部分就等于基本雅可比矩阵的Jv左乘上这个Ep。对于旋转也类似——大家了解一下就好,我不再详细展开了。