雅可比把「速度层面」的问题变成了线性代数,而线性代数最典型的病症——矩阵退化——也随之显形:某些位形下 J 不满秩,末端在特定方向上「给不出速度」、「解不出关节速度」,甚至「解出无穷多」。这些位形就是运动学奇点。本节对应录播 1:23:42–1:48:42(含四段工业机器人奇异规避视频)。
定义 3.3.1 · 运动学奇点
使雅可比矩阵 J(q) 不满秩的位形 q 称为运动学奇点(kinematic singularity);方阵情形判据为
detJ(q)=0.
奇点值得认真研究,理由可以归为三类(1:24:45–1:26:06):
- 运动退化:处于奇点时,无法让末端执行器朝任意方向运动——两关节轴平行(即两列线性相关)时,垂直于该平面方向的速度分量「造不出来」;
- 解不唯一:逆解可能存在无穷多组——拟人臂的腕点落在肩轴线上时,无论肩关节角怎么转,该点都不动;
- 邻域放大(三类中最危险):奇点邻域内,操作空间里很小的速度可能要求关节空间给出极高的速度(课堂视频:机械臂翻越奇异位形时关节瞬间加速)。
开课引子(0:19:28–0:23:40):「雅可比矩阵其中有两列线性相关——一列可以用另一列线性表出——那么雅可比矩阵就退化了,秩肯定是降秩的,就奇异了。对机器人来说,两列线性相关就说明这两个关节轴平行了。」行与列的分工:行对应操作空间速度分量,列对应关节(0:21:46)。
按出现位置分类(1:26:24–1:28:02):
边界奇点 vs 内部奇点
- 边界奇点(boundary):机械手完全伸出或缩回、抵达工作空间边界时产生,「不表示真正的缺陷」,使用时避开边界即可;
- 内部奇点(interior):出现在可达工作空间内部,「比较严重」,轨迹规划时一定要避开。它的产生条件是两个或两个以上运动轴线共线——共线即对应两列线性相关,这正是它不同于边界奇点、可能引起严重问题的原因。
腕点位置可以直接由几何写出(结构简单就不走 DH 通式——只有复杂的三维结构才必须用通用方法,1:28:19):
pw=[a1c1+a2c12a1s1+a2s12]⟹J=[∂ϑ1∂pw∂ϑ2∂pw]=[−a1s1−a2s12a1c1+a2c12−a2s12a2c12]
detJ=(−a1s1−a2s12)(a2c12)−(−a2s12)(a1c1+a2c12)=a1a2(s12c1−s1c12)=a1a2sinϑ2.
例 3.2(原书)· 两连杆臂的奇点
detJ=a1a2s2=0⟺s2=0⟺ϑ2=0 或 π
- 与 ϑ1 无关:转肩不改变奇异性(1:29:35);
- ϑ2=0:臂伸直(工作空间边界);ϑ2=π:臂折回——都是边界奇点;
- 代入 ϑ2=0 验证(1:29:58):两列分别变为 [−(a1+a2)s1(a1+a2)c1] 与 [−a2s1a2c1]——二者共线,比例系数为 (a1+a2)/a2;秩由 2 降为 1,末端沿径向的速度分量不可产生(该方向「不可控制」)。
detJ 的形状值得直接看图:它只依赖肘角 ϑ2,按正弦振荡,在伸直与折回两处过零——「离奇点多远」一眼可读。
例 3.2 的行列式曲线(本教程绘):detJ=a1a2sinϑ2 与肩角无关、随肘角正弦振荡;零点在伸直(ϑ2=0,2π,外边界)与折回(ϑ2=π,内边界),峰值在 ϑ2=±π/2——「离奇点多远」就是 ∣sinϑ2∣ 离 0 多远,这正是 3.5 节可操作度 w(q)=det(JJT) 的平面特例。
上一张图是一条静态曲线;「离奇点多远」还能看得更立体。下面的操作台把 ∥ve∥=Jq˙, ∥q˙∥≤1 的末端速度集(一个椭圆)叠加在速度平面上:拖动肘角 ϑ2,看椭圆如何随 detJ 缩水、在奇异位形压扁成线段;再拖转肩角 ϑ1,验证「转肩只把整幅图旋转」。
可操作度椭圆操作台(本教程绘):右图是把关节空间单位球 ∥q˙∥≤1 经 J 映到速度平面的像——半轴即奇异值 σ1,σ2,w=σ1σ2=∣detJ∣=a1a2∣sinϑ2∣(例 3.2 与 3.5.1 可操作度的平面实例)。ϑ2→0,π 时 σ2→0:椭圆沿径向压扁成线段,「径向速度不可产生」从一句话变成看得见的形状。
平面两连杆只是最简单的特例。更一般的六轴机械手,奇点按结构分成三类——腕奇点、肘奇点、肩奇点;下图把它们各自「坏」在哪里一次看清,也提前为 3.3.3 的解耦判定做铺垫。
三类奇点都是结构的几何属性,不是数值问题(本教程绘):① 腕奇点——两个腕关节轴共线,绕它们的转动等价,丢掉一个定向自由度;② 肘奇点——臂完全伸直(或折回),腕心落在可达工作空间边界,径向只能向里;③ 肩奇点——腕心落在第一关节轴上,绕该轴转不改变腕心位置。三者分别对应 detJ22∝s5、detJ11 的 s3 因子、(a2c2+a3c23) 因子(定理 3.3.A)。
六自由度机械手的 6×6 行列式直接展开并不现实,于是又一次请出与逆运动学闭合解同源的技巧——球形腕解耦(定理 2.12.B 的前提在这里复用)。
定理 3.3.A · 奇点解耦
对「臂(关节 1…n−3)+ 球形腕(关节 n−2…n)」构型,把微分运动学的参考点从末端挪到腕中心 pw,雅可比分块化为下三角:
[p˙wωe]=[J11J210J22][q˙aq˙w],detJ=detJ11⋅detJ22
J11(3×3)只含臂关节,J22(3×3)只含腕关节。奇点判定拆成两个三阶行列式。
为什么可以挪参考点(课堂问答的核心,1:32:40、1:38:15–1:43:03)
运动学奇点是机械结构固有的特性,与坐标系建在哪里无关——所以完全可以为了简化计算而重新选参考系(取在腕中心),使 J12=0。但代价是:这个下三角矩阵不再提供关节速度与末端执行器速度之间的关系(参考点已经不是末端了)。因此这种建法只能用于奇点分析,不能用来表示末端的位姿与速度,也不能拿去做逆解。整个技巧的合法性来源,正是这一条:「结构上的奇点与参考点选取无关」。
分块之后,腕与臂的奇点可以分开判定:腕的问题只涉及 J22,臂的问题只涉及 J11。腕奇点(1:35:29):三个腕关节全是转动关节,J22 的三列形如 zn−2×(⋅)→ 角速度行恰为 zn−2,zn−1,zn,故
detJ22=(zn−2×zn−1)⋅zn∝s5⟹s5=0⟺ϑ5=0 或 π
ϑ5=0 时,腕关节 4 与 6 的轴共线:转 ϑ4 与转 ϑ6 效果相同,绕垂直于该轴方向的角速度自由度丢失(1:35:55)——这是典型的内部奇点,轨迹规划时必须避开。
再看臂:臂奇点即 detJ11=0。以拟人臂 + 球形腕为例,沿用 3.2.2 的 DH 约定,可写出腕中心线速度块的行列式(该式在 3.2.2 已推、make verify 已验):
detJ11=detJP=−a2a3s3(a2c2+a3c23)(与 ϑ1 无关;教材未编号式,见 3.3.3 节)
- 肘奇点 s3=0(ϑ3=0 伸直 / π 折回):属于边界奇点,与两连杆平面臂(例 3.2)在概念上完全一样——臂展达到极限,径向速度造不出来(1:43:11);
- 肩奇点 a2c2+a3c23=0:腕中心恰好落在 z0 轴上(pw 的 x,y 分量同时为零)。此时 J 的第一列 z0×(pw−p0)=z0×pw=θ 整列为零——无论肩关节转多快,腕点纹丝不动;相应地,逆运动学无穷多解(ϑ1 任取),沿该方向的运动不可行(1:44:31–1:46:03)。
工程规避(课堂视频,1:46:24–1:48:42)
大族机器人演示了腕 / 肩 / 肘三类奇异点,其自研力控算法「可阻止机械臂进入奇异点位置」。Doosan 协作机器人则给出两种方式:变速度(Variable Velocity,在奇点附近自动降速)与自动规避(Auto Avoidance——不严格遵循设定轨迹,在奇点附近容忍较大的轨迹跟踪误差)。
默写点 · 合上书再写(主动回忆)
先不看正文与速查卡,默写下面几条,再展开核对;写不出来,就说明这一节还没真正「拿走」。
- 奇点的定义是什么?三类后果各是什么?
- 写出 detJ=detJ11detJ22 的成立条件与适用边界。
- 球腕奇点、肘奇点、肩奇点各对应哪个条件?
核对
detJ(q)=0。三类后果:① 末端在某些方向失去运动能力;② 逆解无解或无穷多解;③ 邻域内关节速度趋于无穷(J−1=adjJ/detJ)。
条件是带球形腕(三轴交一点)的机械手,J 呈 [J11 0; J21 J22] 的块三角。边界:它只保行列式,用于奇点分析——不能拿去做逆解或速度控制(不保「末端」语义)。
球腕 s5=0(ϑ5=0,π);肘 s3=0;肩 a2c2+a3c23=0(腕点落在第一关节轴上)。
- 一条主线:detJ=0(列退化 ⇔ 轴共线)→ 三类后果(退化 / 无穷解 / 邻域放大)→ 方阵直接算(两连杆 a1a2s2)→ 六轴球腕解耦(detJ11detJ22)→ 腕 s5、臂(肘 s3 / 肩「腕点落轴」)。
- 解耦只管奇点:参考点挪到腕中心后矩阵不再是「末端速度映射」,做速度传递必须换回末端参考。
常见错误清单 · 自查三条
- 把奇点当「数值 bug」——奇点是结构的几何属性(轴共线 / 腕点落轴),换算法、换精度都躲不掉,只有规划绕开或结构上避免;
- 用解耦矩阵做逆解 / 速度控制——它只保行列式,不保「末端」语义(定理 3.3.A 的适用边界);
- 忘了「邻域」二字——detJ=0 但很小时 J−1 元素已经巨大,边界奇点附近的关节速度放大同样要规划规避。