正运动学是函数计算,逆运动学则是解方程:给定 (pe,Re) 求 q。解方程比算函数难得多,难处集中在四条——非线性、多解、可能无解 / 无穷多解、无通用解析法。本节把课程覆盖的解法全部推导一遍:先讲平面臂(代数 + 几何双法),再讲球形腕解耦框架(含球形臂、拟人臂、球形腕三个子问题)。录播 1:55:29–2:13:16。
定理 2.12.A · 逆运动学的四难点(原书)
- 非线性:方程组是三角函数的复合,闭合形式解未必存在;
- 多重解:同一末端位姿可对应多组关节变量。解数随自由度与非零 DH 参数个数增长:无关节限位的 6 自由度机械手可多达 16 组解,需按准则(如肘上 / 肘下)选解;机械关节限位会削减实际可行解数;
- 无穷多解:运动学冗余(定义 2.10.3)情形;
- 可能无解:给定位姿超出可达 / 灵活工作空间。
存在性判据很直接:位姿落在灵活工作空间内,解就必然存在(原书)。难的是怎么求。录播 1:57:29 老师把解法版图讲得直白:「正运动学不管什么机械臂都能算;逆运动学没有通用(解析)方法,只能针对特殊构型」——数值法虽然通用,却得不到全部解(见第 3 章)。既然通用解析法走不通,闭合解就只能在特殊构型上做文章,靠的是两种直觉(原书):代数直觉(找含未知量的关键方程)与几何直觉(找化简未知量的结构关键点)。
要看清逆解怎么做,先从最简单的三连杆平面臂入手。任务很明确:给定 (px,py,ϕ)(末端位置与方向角),求 (ϑ1,ϑ2,ϑ3)(原书 §2.12.1)。这里有个前提值得注意:若不给方向角 ϕ,臂就变成冗余的,逆解有无穷多(原书脚注)。
代数解法的思路是「先分离腕心,再平方相加消元」,一共五步(录播 1:58:31:「没有什么技巧……就是简单的三角关系」):
- 方向方程 ϕ=ϑ1+ϑ2+ϑ3;
- 腕心分离:腕心 W(末梢沿末杆回退 a3 处,即坐标系 2 原点)只依赖前两角:
pwx=px−a3cφ=a1c1+a2c12,pwy=py−a3sφ=a1s1+a2s12;
- 平方相加消 ϑ1(存在性要求 −1≤c2≤1,否则点在工作空间外):
c2=2a1a2pwx2+pwy2−a12−a22,s2=±1−c22,ϑ2=Atan2(s2,c2);
(s2 正号肘朝下、负号肘朝上)
- 把 c2,s2 代回腕心方程,解这个线性组:
s1=pwx2+pwy2(a1+a2c2)pwy−a2s2pwx,c1=pwx2+pwy2(a1+a2c2)pwx+a2s2pwy,ϑ1=Atan2(s1,c1);
- 回代 ϑ3=ϕ−ϑ1−ϑ2。
还要注意 s2=0(两杆共线、臂伸直)的情形:此时机械臂处于运动学奇异(第 3 章),两支解合一,但 ϑ1 仍然唯一——除非同时满足 a1=a2 且 pw=0(原书)。
几何解法走的是另一条路:先看图形,再列式子(录播 2:01:10:「这是个三角形……用余弦公式」)。a1,a2 与线段 OW 构成一个三角形,对边用余弦定理,得到与代数法相同的 c2(ϑ2=±arccosc2,负肘上 / 正肘下)。设 α=Atan2(pwy,pwx),则
β=arccos2a1pwx2+pwy2pwx2+pwy2+a12−a22 (β∈(0,π)),ϑ1=α±β(ϑ2<0 取+, ϑ2>0 取−);
最后同样 ϑ3=ϕ−ϑ1−ϑ2。两种解法给出的解数一致,但几何法多给出一层图像:「双支 = 三角形镜像」(原书图 2.31);同样的思路也适用于运动学等价的平行四边形臂(原书 §2.9.2)。
「双支 = 三角形镜像」这句话可以直接画出来——就长下图这样:同一个腕心 W、同一个末端方向 φ,两组两连杆三角形一上一下互为镜像,而 ϑ1=α±β 的两个符号选择,就发生在这里。
平面臂逆解的两支(本教程绘,对照原书图 2.31):代数法里 s2=±1−c2 2 的正负号,在几何法里就是三角形的上下镜像;ϑ1=α±β、ϑ3=φ−ϑ1−ϑ2 随支各自取值。s2=0(伸直)时两支合一,退化为第 3 章的运动学奇异。
看静态图不过瘾?下面的操作台可以直接拖:改变两个关节角,末端、肘部、可达工作空间与「同一 P 的另一支解」会全部实时联动。试试把 c2 拖到 ±1 附近,看两支解如何合并成奇异。
交互操作台(本教程绘):拖动 ϑ1,ϑ2 观察正运动学 p=a1e(ϑ1)+a2e(ϑ1+ϑ2)、可达工作空间(环形)与双支解。另一支解按 ϑ2→−ϑ2、ϑ1→2α−ϑ1(α=Atan2(py,px))实时算出——例 2.6 与 定理 2.12.A 的「肘上 / 肘下」在指尖上验证。
定理 2.12.B · 闭合解的充分条件(原书)
6 自由度运动学结构具有闭合形式逆解的充分条件如下,满足其一即可:
- 三个连续转动关节的轴交于一点(球形腕);
- 三个连续转动关节的轴平行。
这就解释了工程界为什么把主流机械手设计成「臂 + 球形腕」——录播 2:02:06:「一个博士(论文)里给出的条件」(文献:Pieper, 1968,见勘误补注)。
解耦的关键,是把一个 6 元问题拆成两个 3 元子问题,让位置与方向分离(「位置解和方向解被解耦」,原书)。操作上分五步:
解耦五步(原书式 2.93)
选定 3 个末端转动轴的交点 W(腕心)。由给定的 pe 与 Re=[ne se ae]:
- 算腕心:
pw=pe−d6ae;
(d6 即 2.9.6 的「外移长度」;录播 2:05:04:「减去 d6 这么长度的矢量」。)
- 解臂的逆运动学得 (q1,q2,q3)(pw 只依赖前三个关节);
- 由正运动学算 R30(ϑ1,ϑ2,ϑ3);
- 方向分离:R63(ϑ4,ϑ5,ϑ6)=R30TR60;
- 解腕的逆运动学(= ZYZ 反解,见 2.12.6)。
这个框架并不限定臂的具体形态:只要结构满足上述条件,位置与方向就能分开处理——下面两小节分别给出球形臂与拟人臂两个实例。
先看球形臂。给定腕心位置 pw,求 (ϑ1,ϑ2,d3)(原书 §2.12.3,正运动学见 2.9.3 式 2.65)。为了把变量分离开,先把 pw 移到系 1 中表达(左乘 A01),再令它与 A21A32 的第 4 列相等:
pwxc1+pwys1−pwz−pwxs1+pwyc1=d3s2−d3c2d2(原书式 2.94)
求解分三步,逐一拿下 ϑ1、d3、ϑ2:
- 第三行只含 ϑ1:−pwxs1+pwyc1=d2。作半角代换 t=tan(ϑ1/2)(c1=1+t21−t2, s1=1+t22t),化为二次方程
(d2+pwy)t2+2pwxt+(d2−pwy)=0 ⟹ t=d2+pwy−pwx±pwx2+pwy2−d22,
即两支解(对应两种肩姿态)
ϑ1=2Atan2(−pwx±pwx2+pwy2−d22, pwy+d2).
判别式 pwx2+pwy2≥d22 是解存在的几何条件——腕心到 z0 轴的距离不得小于 ∣d2∣,否则判别式为负、解不存在。
- 求 d3:ϑ1 已知后,对前两行的平方求和(右端 s22+c22=1,左端第二行恰为 −pwz):
d3=(pwxc1+pwys1)2+pwz2(只取 d3>0 支);
ϑ1 的两支给出同一个 d3。
- 求 ϑ2(d3=0):s2=(pwxc1+pwys1)/d3、c2=pwz/d3,故
ϑ2=Atan2(pwxc1+pwys1, pwz).
若 d3=0,ϑ2 不能唯一确定(伸缩归零后第二关节的指向不再影响腕心位置)。
记号提示
原书此小节排版密度大(OCR 版符号粘连明显),本教程按英文原版做了校正:半角代换的对象是 ϑ1;二次方程判别式 pwx2+pwy2−d22≥0 是解存在的几何条件(腕心到 z0 轴的距离不小于 ∣d2∣,与上文一致)。
再看拟人臂。给定腕心 pw,求 (ϑ1,ϑ2,ϑ3)(正运动学见 2.9.4 式 2.66)。腕心方程的三个分量如下,后面按 ϑ3→ϑ2→ϑ1 的顺序逐个解出:
pwx=c1(a2c2+a3c23),pwy=s1(a2c2+a3c23),pwz=a2s2+a3s23.
- 三式平方相加(前两式的平方和 + 第三式的平方)消 ϑ1,ϑ2:
c3=2a2a3pwx2+pwy2+pwz2−a22−a32(原书式 2.98)
容许性条件 −1≤c3≤1,等价于 ∣a2−a3∣≤∥pw∥≤a2+a3(超出即腕心在可达工作空间外)。s3=±1−c32,ϑ3I=Atan2(s3,c3),ϑ3II=−ϑ3I(原书式 2.99–2.101)——肘上 / 肘下。
- 前两式平方和给出 a2c2+a3c23=±pwx2+pwy2(原书式 2.102),与 pwz 式联立,对每支 ϑ3 解出(原书式 2.103–2.104)
c2=a22+a32+2a2a3c3±pwx2+pwy2(a2+a3c3)+pwza3s3,s2=a22+a32+2a2a3c3pwz(a2+a3c3)∓pwx2+pwy2a3s3,ϑ2=Atan2(s2,c2);
- 最后由前两式的结构 pwx=±c1pwx2+pwy2, pwy=±s1pwx2+pwy2:
ϑ1I=Atan2(pwy,pwx),ϑ1II=Atan2(−pwy,−pwx)
(二者相差 π;原书式 2.109–2.110)——肩左 / 肩右。⋅=0(pwx=pwy=0)时 ϑ1 任意(无穷多解,臂处于肩奇异,原书习题 2.18)。
定理 2.12.C · 拟人臂的 4 支解(原书图 2.33)
(ϑ3 双支)×(ϑ1 双支) 组合出 4 组解:肩右 / 肘上、肩左 / 肘上、肩右 / 肘下、肩左 / 肘下——同一腕心位置,前臂方向不同。这正是 定理 2.12.A 「多重解」与 例 2.6「姿态切换」的完整版。
最后是腕。给定方向 R63,求 (ϑ4,ϑ5,ϑ6)。2.9.5 留下的结构性发现在这里兑现:R63 就是 ZYZ 合成矩阵(原书式 2.18)。把它的三个列向量元素记为 n63=[n1′,n2′,n3′]T、s63=[s1′,s2′,s3′]T、a63=[a1′,a2′,a3′]T,逆解就可直接套用 2.4.4 的式 2.19–2.20(原书式 2.111–2.112),按 ϑ5 的正负分成两支:
ϑ5∈(0,π):ϑ4=Atan2(a2′,a1′),ϑ5=Atan2(a1′2+a2′2, a3′),ϑ6=Atan2(s3′,−n3′);
ϑ5∈(−π,0):ϑ4=Atan2(−a2′,−a1′),ϑ5=Atan2(−a1′2+a2′2, a3′),ϑ6=Atan2(−s3′,n3′).
录播 2:11:14–2:12:36 老师:「整个 R63 的旋转矩阵都是已知的,把它带进去就可以计算出来……就跟前面(ZYZ 逆解)一样」——这正是解耦框架的价值:把「难的 6 关节问题」拆成了「平面臂式三角题 + 查表式 ZYZ 反解」。
默写点 · 合上书再写(主动回忆)
不看正文与速查卡,先写出下面几条,再展开核对。写不出来就说明这一节还没「拿走」。
- 写出腕心公式,说明 d6 的角色。
- 默写解耦五步。
- 平面臂的逆解为什么有两支?各叫什么?
核对
pw=pe−d6ae。d6 是腕心到末端原点的「外移长度」,沿接近向量 ae 反推——不扣掉它就分不清解出的是腕心还是工具端的关节角。
① 由 pe 反推 pw;② 解臂得 (q1,q2,q3);③ 算 R30=R10R21R32;④ 解腕:由 (R30)TRe=R63 反解 (q4,q5,q6);⑤ 整理解支。
平方相加消去 ϑ1 后出现 c2,回代时 s2=±1−c22 有两个符号——对应「肘上 / 肘下」(拟人臂还有肩左 / 肩右,共 4 支)。
- 一张决策树:任务位姿 → 属于灵活工作空间?(无解预警)→ 结构满足解耦条件(定理 2.12.B)?→ 是:算 pw、拆臂 + 腕;否:试几何直觉、再退到第 3 章数值法。
- 三个「多解来源」:肘(s2 / s3 符号)、肩(ϑ1 加 π)、腕(ϑ5 符号)——选解准则 + 关节限位在工程上裁决。
- 一个习惯:每解出一支,都回代正运动学验证——本章公式都很长,抄错一个下标并不奇怪。
常见错误清单 · 自查四条
- 忘记从 pe 里扣掉 d6ae 就直接解臂——分不清解出的是「腕心」的关节角还是「工具端」的关节角,d6=0 时全错;
- 平方相加后只取 c、漏掉 s 的符号分支——丢掉整支解(肘上 / 肘下、肩左 / 肩右);
- 在 ∣a2−a3∣>∥pw∥ 或 c2∈/[−1,1] 时继续往下算——这说明给定点在工作空间外,应报告无解而不是硬套 Atan2;
- 把球形腕的解当独立问题硬推——先查旋转块是否恰为某个欧拉角矩阵(这是读正运动学结果时应留下的「结构红利」)。