Nullspace for robotics

首先机器人的零空间与线性代数的中的零空间(nullspace)还是有所不同的,线性代数的nullspace指的是: $Ax=0$中$x$的所有解构成了A矩阵的nullspace,有时也称为“核”。

机器人的零空间则一般指的是:雅克比矩阵(Jacobian)的零空间。

机器人在完成任务的时候,会将任务最终分解成位姿伺服问题或者力/力矩伺服问题。而零空间内的机器人关节运动将不会影响主任务的完成。直观来讲就是:当末端保持不动,而其他关节可转动时,这些所有能转动的位形即构成零空间。

首先给出几点基本的认识:

​ a) 机器人零空间内的运动只会改变整个机器人身体的姿态不会改变;

​ b) 机器人的零空间是相对主任务定的,也就是说主任务变了,零空间也会随之改变;

​ c) 冗余自由度越多,零空间可以调整的余地越大,否则零空间的优化效果较弱;对于冗余机器人,由于机器人自由度大于空间自由度,因此在任何时候都能出现;

​ d) 对于非冗余的情况,当机器人自由度大于要控制的空间自由度时,也会出现/存在零空间(如只控制末端位置而不管姿态的情况下)

也就是零空间为:$J(q)\dot{q}=0$中所有$\dot q$的集合

零空间的特性:

只要机械臂的关节速度$\dot q$在其雅克比矩阵的零空间中,那么end-effector的速度总是零(保持静止)。

$$\dot x = J \dot q$$

$$\dot q = J^+\dot x+(I-J^+J)\dot\theta$$ (上式解更广义表达形式)

其中$J^+$为$J$的伪逆,$\dot\theta$为任意关节角速度向量,$$(I-J^+J)$$为零空间投影矩阵。

那么对于一个有冗余自由度的机器人,假设你除了要控制end effector运动到某一位置,还要保证过程中它的手肘不碰到障碍物,那你总是可以在nullspace中找到一组解满足你的要求:在不改变end effector轨迹的同时避开障碍物。

进一步来了解一下$(I-J^+J)$这个矩阵,一般来讲在有冗余自由度的机器人中$(I-J^+J)$并不为0。$(I-J^+J)$相当于一个“过滤器”,把与控制$\dot x$无关的机器人自由度过滤掉。

零空间控制与任务优先级

非常好的blog https://zhuanlan.zhihu.com/p/164738620

Reference

  1. https://blog.csdn.net/u013528298/article/details/80558315
  2. https://blog.csdn.net/weixin_43455581/article/details/108125280
  3. https://cloud.tencent.com/developer/article/1627898
  4. https://zhuanlan.zhihu.com/p/164738620 基于零空间方法(NUB)的whole body control