雅克比矩阵零空间

时间:2024-03-16 15:01:03

声明:本文参考均在文末声明,写下博客只为了记录复习之用,侵权必删!

1. 先说雅可比矩阵零空间(nullspace)的妙用

        雅克比矩阵有一些有趣的性质,比如它的零空间。只要机械臂的关节速度在其雅克比矩阵的零空间中,那么末端连杆的速度总是零,零空间由此得名。通俗的说就是:不管关节怎么动,末端连杆始终不动(就像被钉死了一样)。这个性质还挺有用的,因为有些场合要求机械臂在抓取东西的时候还能躲避障碍物。在其它领域,例如摄影,为了保证画面稳定需要摄像机能防抖动;在动物王国中,动物觅食时头部要紧盯猎物(被恶搞的稳定鸡);在军事领域(例如坦克、武装直升机),要求炮口始终瞄准目标,不管车身如何移动和颠簸。 [1]

雅克比矩阵零空间雅克比矩阵零空间

雅克比矩阵零空间


2. 说一说奇异矩阵

  • 首先,看这个矩阵是不是方阵(否则就谈不上奇异矩阵和非奇异矩阵)。奇异矩阵是线性代数的概念,就是该矩阵的秩不是满秩
  • 再看此矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵
  • 如果A为奇异矩阵,则AX=0无穷解,AX=b有无穷解或者无解。
  • 如果A为非奇异矩阵,则AX=0有且只有唯一零解,AX=b有唯一解。
  • 同时,由|A|≠0可知矩阵A可逆,这样可以得出另外一个重要结论:可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。

3. 简单说一说机器人雅可比矩阵的零空间(nullspace)

     先谈一谈奇异点,为下面冗余机器人的零空间铺路。 Singularity(奇异点)是机械臂处在某一个configuration(即特定的关节位置组合)时,end effector失去某个方向的*度——你手臂伸直的那一刻,你的手绝无法沿着你手臂的方向运动

现在有了雅可比矩阵,我们可以从数学的角度重新来认识Singularity。为什么呢?不要忘了雅可比矩阵的用处:关节的运动速度乘以雅可比矩阵即得到end effector的运动速度。而end effector失去某个方向的*度即意味着在机械臂到达那个configuration的瞬间,不管关节怎么运动end effector在这个方向的速度总为0

从线性代数的角度来说,此时的J矩阵有这样的特性:对所有任意向量a,Ja相乘得到向量b,则所有向量b组成的线性空间维度将比正常情况下少至少一个*度——这说明什么?说明这个时候的雅可比矩阵使用了降维攻击,被降秩了啊!

现在,为了求出在什么configuration下机械臂会遇到奇异点,即求这个雅可比矩阵什么时候不是满秩矩阵,我们可以直接利用此时J的特征值为0(即此时J是一个奇异矩阵)。




      说到冗余*度,相信你已经可以想到如何从雅可比矩阵看出冗余了——当它又矮又胖的时候就是啦(雅可比矩阵的冗余有空还是要看看自己之前两篇博客,复习一下)。例如人的手在关节空间有七个*度,所以你能够在手部固定的情况下移动你的手肘。从数学的角度上,这意味着

雅克比矩阵零空间

我们知道,假如A是一个方阵,那么Ax=0有非零解的充分必要条件是A是一个奇异矩阵——也就是说,如果没有冗余*度,一个机械臂关节运动而end effector不动的情况只有在它处于singularity时才能出现。但是,如果A是一个矮胖矩阵,那么Ax=0必然有无数个非零解,这些解组成的空间即称为“零空间”(nullspace)。

简单地提一下:对于一个有冗余*度的机器人,假设你除了要控制end effector运动到某一位置,还要保证过程中它的手肘不碰到障碍物,那你总是可以在nullspace中找到一组解满足你的要求:在不改变end effector轨迹的同时避开障碍物。这样的方法称为null space control,我们以后有机会会详细展开。[2]


 对于 6 *度机械臂,由于它不是冗余的,所以大多数时候计算零空间会得到空(也就是说不存在零空间)。为了形象地展示零空间的效果, 只用了平移的部分。如下图所示,展示了机械臂在(平移)零空间中的一种运动 。可以看到,不管机械臂如何运动,末端连杆(局部坐标系)的位置始终不动(但是它的姿态会改变,只剩下沿 xyz轴的平移运动)

零空间是个线性空间,如果我们知道它的一组基向量,通过线性组合能够得到任意的(速度)向量。通过对这组基向量线性组合即可得到一个速度向量,其使机械臂末端始终不动。由于雅可比矩阵是机械臂构型q的函数,所以机械臂的构型一旦改变了,我们就要重新计算它的雅可比矩阵。[3]
雅克比矩阵零空间



零空间是个线性空间,如果我们知道它的一组基向量,通过线性组合能够得到任意的(速度)向量。NullSpace函数返回的刚好就是构成矩阵的零空间的一组基向量。通过对这组基向量线性组合即可得到速度向量,其使机械臂末端始终不动。下面的例子中使用的组合系数都是 1 ,也就是所有基向量相加(向量相加就是对应元素相加,由Total函数完成)。由于雅可比矩阵是机械臂构型q的函数,所以机械臂的构型一旦改变了,我们就要重新计算它的雅可比矩阵。如果还不理解,可以随时显示出dq的值,然后计算Jgm.dq看看结果是不是零。如果是零就说明dq在零空间里。

零空间是个线性空间,如果我们知道它的一组基向量,通过线性组合能够得到任意的(速度)向量。NullSpace函数返回的刚好就是构成矩阵的零空间的一组基向量。通过对这组基向量线性组合即可得到速度向量,其使机械臂末端始终不动。下面的例子中使用的组合系数都是 1 ,也就是所有基向量相加(向量相加就是对应元素相加,由Total函数完成)。由于雅可比矩阵是机械臂构型q的函数,所以机械臂的构型一旦改变了,我们就要重新计算它的雅可比矩阵。如果还不理解,可以随时显示出dq的值,然后计算Jgm.dq看看结果是不是零。如果是零就说明dq在零空间里。

[1] https://blog.****.net/robinvista/article/details/70231205

[2]https://mp.weixin.qq.com/s?__biz=MzI1MTA3MjA2Nw==&mid=402079232&idx=1&sn=1311ae646375e6f091b194ee0ee1d2af&scene=21#wechat_redirect

[3] https://blog.****.net/robinvista/article/details/70231205