Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.12 逆运动学问题

正运动学是函数计算,逆运动学则是解方程:给定 (pe,Re)(\boldsymbol p_e,R_e) 求 q\boldsymbol q。解方程比算函数难得多,难处集中在四条——非线性、多解、可能无解 / 无穷多解、无通用解析法。本节把课程覆盖的解法全部推导一遍:先讲平面臂(代数 + 几何双法),再讲球形腕解耦框架(含球形臂、拟人臂、球形腕三个子问题)。录播 1:55:29–2:13:16。

2.12.1 问题有多难:四难点与存在性

定理 2.12.A · 逆运动学的四难点(原书)
  1. 非线性:方程组是三角函数的复合,闭合形式解未必存在;
  2. 多重解:同一末端位姿可对应多组关节变量。解数随自由度与非零 DH 参数个数增长:无关节限位的 6 自由度机械手可多达 16 组解,需按准则(如肘上 / 肘下)选解;机械关节限位会削减实际可行解数;
  3. 无穷多解:运动学冗余(定义 2.10.3)情形;
  4. 可能无解:给定位姿超出可达 / 灵活工作空间。

存在性判据很直接:位姿落在灵活工作空间内,解就必然存在(原书)。难的是怎么求。录播 1:57:29 老师把解法版图讲得直白:「正运动学不管什么机械臂都能算;逆运动学没有通用(解析)方法,只能针对特殊构型」——数值法虽然通用,却得不到全部解(见第 3 章)。既然通用解析法走不通,闭合解就只能在特殊构型上做文章,靠的是两种直觉(原书):代数直觉(找含未知量的关键方程)与几何直觉(找化简未知量的结构关键点)。

2.12.2 三连杆平面臂的求解

要看清逆解怎么做,先从最简单的三连杆平面臂入手。任务很明确:给定 (px,py,ϕ)(p_x,p_y,\phi)(末端位置与方向角),求 (ϑ1,ϑ2,ϑ3)(\vartheta_1,\vartheta_2,\vartheta_3)(原书 §2.12.1)。这里有个前提值得注意:若不给方向角 ϕ\phi,臂就变成冗余的,逆解有无穷多(原书脚注)。

代数解法的思路是「先分离腕心,再平方相加消元」,一共五步(录播 1:58:31:「没有什么技巧……就是简单的三角关系」):

  1. 方向方程 ϕ=ϑ1+ϑ2+ϑ3\phi=\vartheta_1+\vartheta_2+\vartheta_3;
  2. 腕心分离:腕心 WW(末梢沿末杆回退 a3a_3 处,即坐标系 2 原点)只依赖前两角: pwx=px−a3cφ=a1c1+a2c12,pwy=py−a3sφ=a1s1+a2s12;p_{wx}=p_x-a_3c_\varphi=a_1c_1+a_2c_{12},\qquad p_{wy}=p_y-a_3s_\varphi=a_1s_1+a_2s_{12};
  3. 平方相加消 ϑ1\vartheta_1(存在性要求 −1≤c2≤1-1\le c_2\le 1,否则点在工作空间外): c2=pwx2+pwy2−a12−a222a1a2,s2=±1−c22,ϑ2=Atan2⁡(s2,c2);c_2=\frac{p_{wx}^2+p_{wy}^2-a_1^2-a_2^2}{2a_1a_2},\qquad s_2=\pm\sqrt{1-c_2^2},\qquad \vartheta_2=\operatorname{Atan2}(s_2,c_2); (s2s_2 正号肘朝下、负号肘朝上)
  4. 把 c2,s2c_2,s_2 代回腕心方程,解这个线性组: s1=(a1+a2c2)pwy−a2s2 pwxpwx2+pwy2,c1=(a1+a2c2)pwx+a2s2 pwypwx2+pwy2,ϑ1=Atan2⁡(s1,c1);s_1=\frac{(a_1+a_2c_2)p_{wy}-a_2s_2,p_{wx}}{p_{wx}^2+p_{wy}^2},\qquad c_1=\frac{(a_1+a_2c_2)p_{wx}+a_2s_2,p_{wy}}{p_{wx}^2+p_{wy}^2},\qquad \vartheta_1=\operatorname{Atan2}(s_1,c_1);
  5. 回代 ϑ3=ϕ−ϑ1−ϑ2\vartheta_3=\phi-\vartheta_1-\vartheta_2。

还要注意 s2=0s_2=0(两杆共线、臂伸直)的情形:此时机械臂处于运动学奇异(第 3 章),两支解合一,但 ϑ1\vartheta_1 仍然唯一——除非同时满足 a1=a2a_1=a_2 且 pw=0\boldsymbol p_w=\boldsymbol 0(原书)。

几何解法走的是另一条路:先看图形,再列式子(录播 2:01:10:「这是个三角形……用余弦公式」)。a1,a2a_1,a_2 与线段 OWOW 构成一个三角形,对边用余弦定理,得到与代数法相同的 c2c_2(ϑ2=±arccos⁡c2\vartheta_2=\pm\arccos c_2,负肘上 / 正肘下)。设 α=Atan2⁡(pwy,pwx)\alpha=\operatorname{Atan2}(p_{wy},p_{wx}),则 β=arccos⁡pwx2+pwy2+a12−a222a1pwx2+pwy2 (β∈(0,π)),ϑ1=α±β(ϑ2<0 取+, ϑ2>0 取−);\beta=\arccos\frac{p_{wx}^2+p_{wy}^2+a_1^2-a_2^2}{2a_1\sqrt{p_{wx}^2+p_{wy}^2}}\ \big(\beta\in(0,\pi)\big),\qquad \vartheta_1=\alpha\pm\beta\quad(\vartheta_2&lt;0\text{ 取}+,\ \vartheta_2&gt;0\text{ 取}-); 最后同样 ϑ3=ϕ−ϑ1−ϑ2\vartheta_3=\phi-\vartheta_1-\vartheta_2。两种解法给出的解数一致,但几何法多给出一层图像:「双支 = 三角形镜像」(原书图 2.31);同样的思路也适用于运动学等价的平行四边形臂(原书 §2.9.2)。

「双支 = 三角形镜像」这句话可以直接画出来——就长下图这样:同一个腕心 WW、同一个末端方向 φ\varphi,两组两连杆三角形一上一下互为镜像,而 ϑ1=α±β\vartheta_1=\alpha\pm\beta 的两个符号选择,就发生在这里。

同一腕心的两支解:肘上与肘下 基座 O 到腕心 W 的虚线上方与下方各有一组两连杆三角形:金色为肘朝下支(s2 取正),蓝色为肘朝上支(s2 取负),两支共享相同的腕心 W 与末端方向 φ;图上标出 α、β 与 θ1 的两支取值。 同一腕心 W、同一末端方向 φ 的两支解 x |OW|(余弦定理) O 腕心 W φ 末端(a3 = φ − θ1 − θ2 仍成立) α β a1 a2 a1 a2 a3 肘朝下支 肘朝上支 金:s2 > 0(θ1 = α − β) 蓝:s2 < 0(θ1 = α + β) θ3 = φ − θ1 − θ2(各支不同) 两支共享腕心 W 与末端方向 φ:差异全部被 θ1、θ2 的符号与 θ3 吸收——这就是「多解」的几何本体
平面臂逆解的两支(本教程绘,对照原书图 2.31):代数法里 s2=±1−c2 2s_2=\pm\sqrt{1-c_2^{\ 2}} 的正负号,在几何法里就是三角形的上下镜像;ϑ1=α±β\vartheta_1=\alpha\pm\beta、ϑ3=φ−ϑ1−ϑ2\vartheta_3=\varphi-\vartheta_1-\vartheta_2 随支各自取值。s2=0s_2=0(伸直)时两支合一,退化为第 3 章的运动学奇异。

看静态图不过瘾?下面的操作台可以直接拖:改变两个关节角,末端、肘部、可达工作空间与「同一 P 的另一支解」会全部实时联动。试试把 c2c_2 拖到 ±1\pm1 附近,看两支解如何合并成奇异。

两连杆平面臂操作台 拖动滑杆改变关节角,实时观察末端位置、可达工作空间圆环与肘上肘下两支解;两杆共线时给出奇异提示。 R = a1 + a2 r = |a1 − a2| x y 两连杆平面臂操作台(a1 = 1,a2 = 0.8) P = + |P| = +  c2 = + 本支:+ 蓝实线 = 当前解;金虚线 = 同一 P 的另一支解 拖动滑杆,或用 Tab 聚焦后按方向键微调 观察:θ2 变号 → 肘上 / 肘下翻转,P 不动; c2 → ±1 时两支合一(伸直 / 折回 = 奇异,见第 3 章)
交互操作台(本教程绘):拖动 ϑ1,ϑ2\vartheta_1,\vartheta_2 观察正运动学 p=a1e(ϑ1)+a2e(ϑ1+ϑ2)\boldsymbol p=a_1e(\vartheta_1)+a_2e(\vartheta_{1}+\vartheta_{2})、可达工作空间(环形)与双支解。另一支解按 ϑ2→−ϑ2\vartheta_2\to-\vartheta_2、ϑ1→2α−ϑ1\vartheta_1\to 2\alpha-\vartheta_1(α=Atan2⁡(py,px)\alpha=\operatorname{Atan2}(p_y,p_x))实时算出——例 2.6 与 定理 2.12.A 的「肘上 / 肘下」在指尖上验证。

2.12.3 解耦:带球形腕机械手的求解

定理 2.12.B · 闭合解的充分条件(原书)

6 自由度运动学结构具有闭合形式逆解的充分条件如下,满足其一即可:

  • 三个连续转动关节的轴交于一点(球形腕);
  • 三个连续转动关节的轴平行。

这就解释了工程界为什么把主流机械手设计成「臂 + 球形腕」——录播 2:02:06:「一个博士(论文)里给出的条件」(文献:Pieper, 1968,见勘误补注)。

解耦的关键,是把一个 6 元问题拆成两个 3 元子问题,让位置与方向分离(「位置解和方向解被解耦」,原书)。操作上分五步:

解耦五步(原书式 2.93)

选定 3 个末端转动轴的交点 WW(腕心)。由给定的 pe\boldsymbol p_e 与 Re=[ne se ae]R_e=[\boldsymbol n_e\ \boldsymbol s_e\ \boldsymbol a_e]:

  1. 算腕心: pw=pe−d6 ae;\boldsymbol p_w=\boldsymbol p_e-d_6\,\boldsymbol a_e; (d6d_6 即 2.9.6 的「外移长度」;录播 2:05:04:「减去 d6d_6 这么长度的矢量」。)
  2. 解臂的逆运动学得 (q1,q2,q3)(q_1,q_2,q_3)(pw\boldsymbol p_w 只依赖前三个关节);
  3. 由正运动学算 R30(ϑ1,ϑ2,ϑ3)R_3^0(\vartheta_1,\vartheta_2,\vartheta_3);
  4. 方向分离:R63(ϑ4,ϑ5,ϑ6)=R30TR60R_6^3(\vartheta_4,\vartheta_5,\vartheta_6)=R_3^{0T}R_6^0;
  5. 解腕的逆运动学(= ZYZ 反解,见 2.12.6)。

这个框架并不限定臂的具体形态:只要结构满足上述条件,位置与方向就能分开处理——下面两小节分别给出球形臂与拟人臂两个实例。

2.12.4 球形臂的求解

先看球形臂。给定腕心位置 pw\boldsymbol p_w,求 (ϑ1,ϑ2,d3)(\vartheta_1,\vartheta_2,d_3)(原书 §2.12.3,正运动学见 2.9.3 式 2.65)。为了把变量分离开,先把 pw\boldsymbol p_w 移到系 1 中表达(左乘 A01A_0^1),再令它与 A21A32A_2^1A_3^2 的第 4 列相等:

[pwxc1+pwys1−pwz−pwxs1+pwyc1]=[d3s2−d3c2d2](原书式 2.94)\begin{bmatrix}p_{wx}c_1+p_{wy}s_1\ -p_{wz}\ -p_{wx}s_1+p_{wy}c_1\end{bmatrix}=\begin{bmatrix}d_3s_2\ -d_3c_2\ d_2\end{bmatrix}\qquad(\text{原书式 }2.94)

求解分三步,逐一拿下 ϑ1\vartheta_1、d3d_3、ϑ2\vartheta_2:

  1. 第三行只含 ϑ1\vartheta_1:−pwxs1+pwyc1=d2-p_{wx}s_1+p_{wy}c_1=d_2。作半角代换 t=tan⁡(ϑ1/2)t=\tan(\vartheta_1/2)(c1=1−t21+t2, s1=2t1+t2c_1=\frac{1-t^2}{1+t^2},\ s_1=\frac{2t}{1+t^2}),化为二次方程

(d2+pwy) t2+2pwx t+(d2−pwy)=0 ⟹ t=−pwx±pwx2+pwy2−d22d2+pwy,(d_2+p_{wy}),t^2+2p_{wx},t+(d_2-p_{wy})=0 \ \Longrightarrow\ t=\frac{-p_{wx}\pm\sqrt{p_{wx}^2+p_{wy}^2-d_2^2}}{d_2+p_{wy}},

即两支解(对应两种肩姿态)

ϑ1=2Atan2⁡ ⁣(−pwx±pwx2+pwy2−d22, pwy+d2).\vartheta_1=2\operatorname{Atan2}!\big(-p_{wx}\pm\sqrt{p_{wx}^2+p_{wy}^2-d_2^2},\ p_{wy}+d_2\big).

判别式 pwx2+pwy2≥d22p_{wx}^2+p_{wy}^2\ge d_2^2 是解存在的几何条件——腕心到 z0z_0 轴的距离不得小于 ∣d2∣|d_2|,否则判别式为负、解不存在。

  1. 求 d3d_3:ϑ1\vartheta_1 已知后,对前两行的平方求和(右端 s22+c22=1s_2^2+c_2^2=1,左端第二行恰为 −pwz-p_{wz}):

d3=(pwxc1+pwys1)2+pwz2(只取 d3>0 支);d_3=\sqrt{(p_{wx}c_1+p_{wy}s_1)^2+p_{wz}^2}\qquad(\text{只取 } d_3&gt;0\ \text{支});

ϑ1\vartheta_1 的两支给出同一个 d3d_3。

  1. 求 ϑ2\vartheta_2(d3≠0d_3\neq0):s2=(pwxc1+pwys1)/d3s_2=(p_{wx}c_1+p_{wy}s_1)/d_3、c2=pwz/d3c_2=p_{wz}/d_3,故

ϑ2=Atan2⁡(pwxc1+pwys1, pwz).\vartheta_2=\operatorname{Atan2}\big(p_{wx}c_1+p_{wy}s_1,\ p_{wz}\big).

若 d3=0d_3=0,ϑ2\vartheta_2 不能唯一确定(伸缩归零后第二关节的指向不再影响腕心位置)。

记号提示

原书此小节排版密度大(OCR 版符号粘连明显),本教程按英文原版做了校正:半角代换的对象是 ϑ1\vartheta_1;二次方程判别式 pwx2+pwy2−d22≥0p_{wx}^2+p_{wy}^2-d_2^2\ge0 是解存在的几何条件(腕心到 z0z_0 轴的距离不小于 ∣d2∣|d_2|,与上文一致)。

2.12.5 拟人臂的求解

再看拟人臂。给定腕心 pw\boldsymbol p_w,求 (ϑ1,ϑ2,ϑ3)(\vartheta_1,\vartheta_2,\vartheta_3)(正运动学见 2.9.4 式 2.66)。腕心方程的三个分量如下,后面按 ϑ3→ϑ2→ϑ1\vartheta_3\to\vartheta_2\to\vartheta_1 的顺序逐个解出:

pwx=c1(a2c2+a3c23),pwy=s1(a2c2+a3c23),pwz=a2s2+a3s23.p_{wx}=c_1(a_2c_2+a_3c_{23}),\qquad p_{wy}=s_1(a_2c_2+a_3c_{23}),\qquad p_{wz}=a_2s_2+a_3s_{23}.

  1. 三式平方相加(前两式的平方和 + 第三式的平方)消 ϑ1,ϑ2\vartheta_1,\vartheta_2: c3=pwx2+pwy2+pwz2−a22−a322a2a3(原书式 2.98)c_3=\frac{p_{wx}^2+p_{wy}^2+p_{wz}^2-a_2^2-a_3^2}{2a_2a_3}\qquad(\text{原书式 }2.98) 容许性条件 −1≤c3≤1-1\le c_3\le 1,等价于 ∣a2−a3∣≤∥pw∥≤a2+a3|a_2-a_3|\le&#124;\boldsymbol p_w&#124;\le a_2+a_3(超出即腕心在可达工作空间外)。s3=±1−c32s_3=\pm\sqrt{1-c_3^2},ϑ3I=Atan2⁡(s3,c3)\vartheta_3^{\mathrm{I}}=\operatorname{Atan2}(s_3,c_3),ϑ3II=−ϑ3I\vartheta_3^{\mathrm{II}}=-\vartheta_3^{\mathrm{I}}(原书式 2.99–2.101)——肘上 / 肘下。
  2. 前两式平方和给出 a2c2+a3c23=±pwx2+pwy2a_2c_2+a_3c_{23}=\pm\sqrt{p_{wx}^2+p_{wy}^2}(原书式 2.102),与 pwzp_{wz} 式联立,对每支 ϑ3\vartheta_3 解出(原书式 2.103–2.104) c2=±pwx2+pwy2 (a2+a3c3)+pwza3s3a22+a32+2a2a3c3,s2=pwz(a2+a3c3)∓pwx2+pwy2 a3s3a22+a32+2a2a3c3,ϑ2=Atan2⁡(s2,c2);c_2=\frac{\pm\sqrt{p_{wx}^2+p_{wy}^2},(a_2+a_3c_3)+p_{wz}a_3s_3}{a_2^2+a_3^2+2a_2a_3c_3},\qquad s_2=\frac{p_{wz}(a_2+a_3c_3)\mp\sqrt{p_{wx}^2+p_{wy}^2},a_3s_3}{a_2^2+a_3^2+2a_2a_3c_3},\qquad \vartheta_2=\operatorname{Atan2}(s_2,c_2);
  3. 最后由前两式的结构 pwx=±c1pwx2+pwy2, pwy=±s1pwx2+pwy2p_{wx}=\pm c_1\sqrt{p_{wx}^2+p_{wy}^2},\ p_{wy}=\pm s_1\sqrt{p_{wx}^2+p_{wy}^2}: ϑ1I=Atan2⁡(pwy,pwx),ϑ1II=Atan2⁡(−pwy,−pwx)\vartheta_{1}^{\mathrm{I}}=\operatorname{Atan2}(p_{wy},p_{wx}),\qquad \vartheta_1^{\mathrm{II}}=\operatorname{Atan2}(-p_{wy},-p_{wx}) (二者相差 π\pi;原书式 2.109–2.110)——肩左 / 肩右。⋅=0\sqrt{\cdot}=0(pwx=pwy=0p_{wx}=p_{wy}=0)时 ϑ1\vartheta_1 任意(无穷多解,臂处于肩奇异,原书习题 2.18)。
定理 2.12.C · 拟人臂的 4 支解(原书图 2.33)

(ϑ3 双支)×(ϑ1 双支)(\vartheta_3\ \text{双支})\times(\vartheta_1\ \text{双支}) 组合出 4 组解:肩右 / 肘上、肩左 / 肘上、肩右 / 肘下、肩左 / 肘下——同一腕心位置,前臂方向不同。这正是 定理 2.12.A 「多重解」与 例 2.6「姿态切换」的完整版。

2.12.6 球形腕的求解

最后是腕。给定方向 R63R_6^3,求 (ϑ4,ϑ5,ϑ6)(\vartheta_4,\vartheta_5,\vartheta_6)。2.9.5 留下的结构性发现在这里兑现:R63R_6^3 就是 ZYZ 合成矩阵(原书式 2.18)。把它的三个列向量元素记为 n63=[n1′,n2′,n3′]T\boldsymbol n_6^3=[n_1&#x27;,n_2&#x27;,n_3&#x27;]^T、s63=[s1′,s2′,s3′]T\boldsymbol s_6^3=[s_1&#x27;,s_2&#x27;,s_3&#x27;]^T、a63=[a1′,a2′,a3′]T\boldsymbol a_6^3=[a_1&#x27;,a_2&#x27;,a_3&#x27;]^T,逆解就可直接套用 2.4.4 的式 2.19–2.20(原书式 2.111–2.112),按 ϑ5\vartheta_5 的正负分成两支:

ϑ5∈(0,π):ϑ4=Atan2⁡(a2′,a1′),ϑ5=Atan2⁡ ⁣(a1′2+a2′2, a3′),ϑ6=Atan2⁡(s3′,−n3′);\vartheta_5\in(0,\pi):\qquad \vartheta_4=\operatorname{Atan2}(a_2&#x27;,a_1&#x27;),\qquad \vartheta_5=\operatorname{Atan2}!\big(\sqrt{a_1&#x27;^2+a_2&#x27;^2},\ a_3&#x27;\big),\qquad \vartheta_6=\operatorname{Atan2}(s_3&#x27;,-n_3&#x27;);

ϑ5∈(−π,0):ϑ4=Atan2⁡(−a2′,−a1′),ϑ5=Atan2⁡ ⁣(−a1′2+a2′2, a3′),ϑ6=Atan2⁡(−s3′,n3′).\vartheta_5\in(-\pi,0):\qquad \vartheta_4=\operatorname{Atan2}(-a_2&#x27;,-a_1&#x27;),\qquad \vartheta_5=\operatorname{Atan2}!\big({-\sqrt{a_1&#x27;^2+a_2&#x27;^2}},\ a_3&#x27;\big),\qquad \vartheta_6=\operatorname{Atan2}(-s_3&#x27;,n_3&#x27;).

录播 2:11:14–2:12:36 老师:「整个 R63R_6^3 的旋转矩阵都是已知的,把它带进去就可以计算出来……就跟前面(ZYZ 逆解)一样」——这正是解耦框架的价值:把「难的 6 关节问题」拆成了「平面臂式三角题 + 查表式 ZYZ 反解」。

默写点 · 合上书再写(主动回忆)

不看正文与速查卡,先写出下面几条,再展开核对。写不出来就说明这一节还没「拿走」。

  1. 写出腕心公式,说明 d6d_6 的角色。
  2. 默写解耦五步。
  3. 平面臂的逆解为什么有两支?各叫什么?
核对

pw=pe−d6ae\boldsymbol p_w=\boldsymbol p_e-d_6\boldsymbol a_e。d6d_6 是腕心到末端原点的「外移长度」,沿接近向量 ae\boldsymbol a_e 反推——不扣掉它就分不清解出的是腕心还是工具端的关节角。

① 由 pe\boldsymbol p_e 反推 pw\boldsymbol p_w;② 解臂得 (q1,q2,q3)(q_1,q_2,q_3);③ 算 R30=R10R21R32R_3^0=R_1^0R_2^1R_3^2;④ 解腕:由 (R30)TRe=R63(R_3^0)^{\mathrm T}R_e=R_6^3 反解 (q4,q5,q6)(q_4,q_5,q_6);⑤ 整理解支。

平方相加消去 ϑ1\vartheta_1 后出现 c2c_2,回代时 s2=±1−c22s_2=\pm\sqrt{1-c_2^2} 有两个符号——对应「肘上 / 肘下」(拟人臂还有肩左 / 肩右,共 4 支)。

2.12 小结与常见错误

  • 一张决策树:任务位姿 → 属于灵活工作空间?(无解预警)→ 结构满足解耦条件(定理 2.12.B)?→ 是:算 pw\boldsymbol p_w、拆臂 + 腕;否:试几何直觉、再退到第 3 章数值法。
  • 三个「多解来源」:肘(s2s_2 / s3s_3 符号)、肩(ϑ1\vartheta_1 加 π\pi)、腕(ϑ5\vartheta_5 符号)——选解准则 + 关节限位在工程上裁决。
  • 一个习惯:每解出一支,都回代正运动学验证——本章公式都很长,抄错一个下标并不奇怪。
常见错误清单 · 自查四条
  1. 忘记从 pe\boldsymbol p_e 里扣掉 d6aed_6\boldsymbol a_e 就直接解臂——分不清解出的是「腕心」的关节角还是「工具端」的关节角,d6≠0d_6\neq0 时全错;
  2. 平方相加后只取 cc、漏掉 ss 的符号分支——丢掉整支解(肘上 / 肘下、肩左 / 肩右);
  3. 在 ∣a2−a3∣>∥pw∥|a_2-a_3|&gt;\|\boldsymbol p_w\| 或 c2∉[−1,1]c_2\notin[-1,1] 时继续往下算——这说明给定点在工作空间外,应报告无解而不是硬套 Atan2;
  4. 把球形腕的解当独立问题硬推——先查旋转块是否恰为某个欧拉角矩阵(这是读正运动学结果时应留下的「结构红利」)。