JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

速度与雅可比矩阵:速度运动学与奇异点

雅可比矩阵把关节运动的快慢与手部运动的快慢联系起来,并揭示出手臂失去控制能力的危险位置。

从手部在哪里,到手部移动得多快

前面的阶梯回答的是关于位置的问题:给定关节角度,手部在哪里?这就是正运动学。但机器人不只是要到达某个位姿——它还得平稳地移动过去、沿直线行进、在接触前减速,并在行进中保持工具的朝向。这就引出了一个新问题:当各关节以一定速度转动时,末端执行器正以多快的速度、朝哪个方向运动?回答这个问题正是速度运动学的任务。

连接关节速度与手部速度的桥梁,是一个叫做机械臂雅可比矩阵的矩阵。可以把它想象成一个时刻在变的变速箱:把各关节转动的速率输入进去,雅可比矩阵就告诉你手部由此产生的线速度和角速度。因为它处理的是微小的变化——关节轻微摆动带来手部轻微摆动——所以这整个主题又被称为微分运动学

这个关系写出来非常简洁。如果我们把各关节速度汇集成一个列表 q̇,把手部的六分量速度(三个表示平移,三个表示旋转)汇集成列表 v,那么就有 v = J·q̇。雅可比矩阵 J 就是完成这个转换的矩阵,而关键在于:它的数值取决于机器人当前的构型。把手臂弯成新的形状,就会得到新的 J。

雅可比矩阵是一张局部地图——以及它为何能驱动逆运动学

更深一层的想法是这样的。正运动学是一个弯曲、复杂的函数:把某个关节转动很多,手部就会沿弧线扫过,而不是走直线。但如果你聚焦在机器人当前的位姿上,只问那些微小的运动,那条弯曲的函数看起来就是平的——就像地球上一小块地方看起来像一张平面地图。雅可比矩阵正是那张平面地图:在此时此地对正运动学最好的直线近似。数学家把这叫做线性化。

事实证明,这张局部地图正是数值逆运动学的引擎。回想一下,逆运动学问的是相反的问题——要让手部到达期望的位姿,各关节角度应该是多少?当不存在简洁公式时,数值方法会先猜一个,测量手部偏离多远,再微调关节以缩小误差,如此反复。要知道该往哪个方向微调,它就对雅可比矩阵求逆:如果 v = J·q̇ 告诉你关节运动会产生怎样的手部运动,那么 q̇ = J⁻¹·v 就反过来,告诉你要把手部推向期望方向所需的关节运动。

同样这个被求逆的雅可比矩阵,也让机器人能在空间中沿路径运动。你指定每一刻希望手部具有的速度——描出这条线、以这个速率转动——而 J⁻¹ 会不断地把这个期望的手部速度翻译成电机必须发出的关节速度指令。这正是为什么速度运动学处于日常运动控制的核心,而不只是抽象理论。

奇异点:地图坍塌的地方

存在一些特殊的手臂构型,会让这套优雅的机制失灵。这样的构型被称为运动学奇异点,它发生在两个或更多关节轴线对齐、以致它们的运动部分重叠的时候。在这样的位姿下,雅可比矩阵会“降秩”——意思是它的各列不再指向足够多的独立方向,无法张成手部运动的全部六个自由度。

在日常中的后果有两方面。第一,某些手部运动会瞬间变得不可能:有那么一个方向,无论你怎么转动关节都无法把末端执行器推过去,因为它们的任何组合都不会产生那个方向的运动。第二——也是实践中更危险的——当你要求一个勉强可行的运动时,所需的关节速度会朝无穷大暴涨。手臂为了服从命令,会为了极小的手部移动而以猛烈的速度疯狂甩动关节。

速度暴涨的原因在于那个逆。在奇异点附近,雅可比矩阵几乎不可逆,而对一个几乎奇异的矩阵求逆,会把微小的数放大成巨大的数——就像除以一个接近零的数会得到极大的结果一样。于是一个平缓、缓慢的手部运动,会被翻译成可能超出电机极限、触发安全停机,或把工具猛地甩离预定路径的关节指令。

一幅经典图景:一条完全伸直的手臂处在它任务空间的边缘。要把手部再往外移是不可能的——它已经够到极限了——可要让它再往外挪一丝丝,肘部就得以荒谬的速率伸直。腕部奇异点,即两个腕轴对齐之处,是另一种常见的祸首;它甚至在手臂只伸展到一半时、在工作空间舒适的中段就会发作。

保持安全:检测、减速、阻尼

好的运动控制软件不会等着被奇异点突然袭击——它会留意奇异点的逼近。一个标准的度量,是雅可比矩阵“离降秩有多近”;一个常用的指标源自可操作性椭球,当手臂接近奇异位姿时它会趋向于零。监测这个数值,能在出问题之前给控制器一个预警。

  1. 尽早检测。持续地从雅可比矩阵计算一个“接近奇异点”的评分,当它跌破阈值时发出警示。
  2. 减速。随着评分下降,调低指令中的手部速度,使逆运算要求的关节速度保持在电机极限之内。
  3. 对逆运算加阻尼。不要用原始的 J⁻¹,而用一个带阻尼(正则化)的逆,温和地限制放大效应,用少许路径精度换取稳定、有界的关节指令。
  4. 绕开规划。在可能的情况下,规划路径,使其从一开始就不会穿过或擦过已知的奇异位姿。

带阻尼的逆值得细看,因为它是最常用的解决办法。其思路是加入一个小的缓冲项,表达“偏好适中的关节速度”。远离奇异点时这个缓冲微不足道,运动很精确;正处奇异点时,它让指令中的关节速度保持有限,手臂表现良好。你暂时放弃完美的跟踪,换来的是永远不会要求电机去做不可能的事。