干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)

467
1
2020年3月30日 07时00分

本文转载自微信公众号ROBOTICS

 

前言

看懂本文,除了了解矩阵、向量、向量点乘、矩阵向量相乘等内容,以及看明白我们干货系列的前四篇文章外,你还需要懂得简单的向量求导运算——其实很简单啦,如果你不知道怎么对向量求导,那就把它当一列标量一个一个写出来,比如这样:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图

 

不知道行列怎么分布?把分母乘到右边,算一下左边是3×1向量,右边是3×2矩阵乘以2×1向量 = 3×1向量,左右相等,搞定!简单粗暴,方便有效。哎呀,一不小心,把雅可比矩阵(Jacobian Matrix)都给写出来了呢。(想要知道数学上是怎么定义推导出向量求导方法的请去上数学课,我只负责教你记住啦:p)

 

正文

上一篇文章我们利用DH参数坐标变换,推导了机械臂的“正运动学”求解方法:只要知道机械臂的结构以及每个关节的位置(再强调一次,当我们说关节位置时,指的是旋转关节的角度以及平移关节的平移),就可以求出end effector的位置和朝向,即完整的end effector齐次坐标变换矩阵w.r.t 基座/地面坐标系。“正运动学”通常对应着“逆运动学”,不过,这篇文章我们就先讲“瞬时运动学”;因为它与前面所讲的内容一脉相承,在一类机器人控制的理论框架中,也比逆运动学更重要。

 

瞬时运动学(Instantaneous kinematics)也是描述从关节空间到操作空间的映射,不过“瞬时”表明它不是描述“静态”的位置,而是描述“动态”的速度。还记得正运动学要求解的“函数“是什么吗?如下所示:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(1)

 

其中,q向量表示关节位置,x向量表示end effector的位置和朝向。

 

在上一篇文章的正运动学求解中,由于空间朝向表示的复杂性,我们最终用齐次坐标变换矩阵T来表示end effector的位置和朝向,而不是一个向量。不过,从数学的角度或抽象理解的角度来讲,上面的式子显然更为通用(更何况我们有“一百种”办法可以用向量来表示空间朝向,分分钟抛弃旋转矩阵——我会尽快写一篇文章介绍)。

 

现在,当我们说“瞬时运动学”求解的是从关节空间到操作空间的速度映射时,由于速度描述的是短时间内的位置变化,即位置对时间的导数,相信你很自然地会想到我们需要求解这样一个函数:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(2)

 

(一个点就是对时间的一阶求导,两个点就是二阶求导,相信大家都懂的……)

 

现在我们的任务就是,从“正运动学”公式推导出“瞬时运动学”公式:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(3)

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(4)

有没有觉得上面的式子某个地方很眼熟啊?没错,就是我们一开始提到的向量x对向量q的求导了!将关节空间的速度与操作空间的速度连接起来的,就是由向量求导获得的雅可比矩阵。现在,让我们把这个重要的结论用数学方式表示出来,用J表示向量x对向量q的导数:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(5)

 

根据一开始讲的向量求导方法,J是一个矩阵。这个矩阵其实一点也不抽象:如果我们仔细看它的每一个元素,就会发现它的第i行第j列表示的物理意义就是当第j个关节运动时,操作空间的第i个平动/转动方向会如何运动

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(6)

 

比如第一行第一列,就表示当第一个关节运动某个角度/距离时,end effector相应的在x1这个方向上运动/转动某个距离/角度。如果你还是觉得太抽象,那我们来看一个例子,还是上一篇文章用到的那个平面机械臂:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(7)

 

我们的关节空间是1, θ2),操作空间是(xe, ye),我们也写出了正运动学公式(将link的长度都定为1):

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(8)干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(9)

 

那么雅可比矩阵就是:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(10)干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(11)

 

注意在我们这个例子中,关节空间有两个自由度、操作空间也有两个自由度,所以我们的雅可比矩阵是正方形的(square matrix);但雅可比矩阵不一定是方阵,这一点大家要记住。

 

如果你考虑一下当θ1为0, θ2为90°的时候,代入算一下,我们会得到这样的雅可比矩阵:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(12)

 

对应这样的机械臂:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(13)

 

现在你看,如果我们保持第一个关节不动、转动第二个关节,那么在这一个瞬间end effector将只能在x方向运动,速度为1(线速度等于角速度乘以半径,即link的长度),y方向的速度则为0,所以J矩阵的第二列是[1, 0]。

 

而如果我们保持第二个关节不动、转动第一个关节,end effector的瞬时速度将与end effector与第一个关节轴的连线垂直,其半径为√2,则线速度为√2,分解为x方向的-1和y方向的1,所以J矩阵的第一列为[-1, 1]。

 

希望这么啰嗦的解释可以让你获得雅可比矩阵最直观的理解,一旦理解了,是不是其实很简单呢?

 

瞬时运动学的这个公式太优美了,让我们再看一遍:

干货 | “瞬时运动学”——还是从关节空间到操作空间(雅可比矩阵上篇)插图(14)

 

这个式子表明了,end effector的速度与joint velocity的关系是线性的!这个式子的形式也与我们在线性代数中用尽了各种方法(高斯消元法是其中一种)去求解的线性方程Ax = b一模一样:如果我们想要end effector以某个速度运动,求对应的关节速度,那这个问题就是一个解线性方程的问题了!比起逆运动学,这实在漂亮方便了不知道多少倍呢。

 

如果你只知道A矩阵是正方形时怎么解,那么学习机器人学就可以帮助你以最直观的方式了解当A矩阵是瘦高型或者矮胖型的时候是什么意义、又如何求解了——又学机器人学又学线性代数,是不是很超值?下一篇文章,作者会教你如何写出雅可比矩阵,更会带你深入地了解它、应用它(比如我们第一篇干货文就提到的奇异点Singularity和冗余自由度Redundancy,都可以从雅可比矩阵获得数学上的理解),顺便还会教你如何对付高瘦矮胖的线性方程。

发表评论

后才能评论

评论列表(1条)

  • 又帅又有钱 2020年4月14日 下午4:34

    讲解的非常透彻!!!最后有一个小笔误:最后倒数十几行的时候,J矩阵的第二列是[-1 0]