动力学
质量(惯性)矩阵
质量矩阵,又称惯性矩阵,是一张数值方阵,它把机器人各关节加速的快慢,与每个关节为实现这一加速所需的驱动力联系起来。对于无摩擦地面上的单个物体,一个数字——它的质量——就能把想要的加速度换算成所需的推力。而一台多关节机器人忙碌得多,因此它需要一整张方阵:质量矩阵正是那个单一质量数字在多关节情形下的推广,它告诉控制器,任何一种关节加速度组合所要付出的“力的代价”。
它有趣的地方在于两点。其一,这个矩阵是随构型而变的:机器人一屈一伸,它就跟着改变。一条笔直伸展的手臂,要甩动起来比同一条收拢贴近身体的手臂难得多,因为伸出去会把它的质量甩到离关节很远处——这正是支配转动惯量的那个“滑冰运动员收臂”效应。其二,非对角线上的元素刻画着耦合:推动一个关节,往往也会扰动它的邻居,就像晃动一条松松握着的链子的一端,会牵动其余部分一样。质量矩阵会把每一份这样的交叉影响一次性记录在案。
这个矩阵端坐在机器人运动方程的最核心处。要计算逆动力学——即推算产生某段期望运动所需的力——你就用质量矩阵去乘以想要的加速度。要计算正动力学——即预测给定的力会产生怎样的运动——你实际上就要对它求逆。无论哪种情形,一个准确的质量矩阵,正是让机器人干脆而自信地运动、而不必去瞎猜自身重量会如何回抗的关键。
一条两节的手臂,在肘部伸直时要让肩部开始摆动,所需的肩部力矩远大于肘部弯曲时——哪怕目标速度相同。质量矩阵恰恰编码了这一点:当手臂伸展开时,它对应肩部的元素变大;当手臂收拢时,则变小。
同一条手臂、同样的目标速度——但伸直的手臂甩起来要沉重得多,而记录下这一变化的正是质量矩阵。
它常被写作 M(q)——其中的“(q)”是在提醒:这个矩阵取决于机器人当前的构型,也就是那一组关节角 q。
又称
另见