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

3.1 几何雅可比矩阵

位姿运动学 xe=k(q)x_e=k(q) 是高度非线性的;但对时间求导之后,非线性问题就在速度层面线性化了——线性化后的映射正是雅可比矩阵。本节从几何角度(矢量传递)把它推出来:先解决「旋转矩阵怎么求导」(3.1.1),再沿关节链递推连杆速度(3.1.2),最后把每个关节的贡献拼成矩阵(3.1.3)。录播 0:27:00–1:12:12。

雅可比:把关节速度翻译成末端速度 v = J(q)q̇;J 的每一列,都是一个关节对末端的「贡献方向」。 ROBOTICS · JACOBIAN / 19 ATLAS / R-19 雅可比:把关节速度翻译成末端速度 v = J(q)q̇;J 的每一列,都是一个关节对末端的「贡献方向」。 q₁q₂TCPq̇₁q̇₂vω几何雅可比J(q) =q̇₁q̇₂∂vₓ/∂q₁∂vₓ/∂q₂∂vᵧ/∂q₁∂vᵧ/∂q₂vₓvᵧ每一列 = 一个关节的贡献方向v = J(q) · q̇:关节速度经雅可比映射成末端速度。
图解读图:雅可比是「每个关节单独动一点,末端往哪走」的偏导表。第 i 列是第 i 个关节速度对末端线速度 / 角速度的贡献;末端速度箭头是各列贡献的线性叠加。

3.1.1 旋转矩阵求导:反对称算子登场

考虑 nn 自由度机械手,DH 法给出的正运动学

Te(q)=[ne(q)se(q)ae(q)pe(q)0001],Re=[neseae],T=[RP01]T_e(q)=\begin{bmatrix}n_e(q)&s_e(q)&a_e(q)&p_e(q)\0&0&0&1\end{bmatrix}, \qquad R_e=\begin{bmatrix}n_e&s_e&a_e\end{bmatrix},\qquad T=\begin{bmatrix}R&P\0&1\end{bmatrix}

RR 与 PP 都是位形 qq 的函数(ReR_e 的三列 ne,se,aen_e,s_e,a_e 是末端坐标系三根轴的单位向量——法向 / 滑动 / 接近向量,见 定义 2.8.2)。微分运动学要找的是:关节速度与末端执行器线速度、角速度之间的关系。

定义 3.1.1 · 微分运动学方程与几何雅可比

末端执行器速度取六维堆叠 ve=[p˙eωe]v_e=\begin{bmatrix}\dot p_e\\\omega_e\end{bmatrix}(33 平动 +3+3 转动),微分运动学方程为

[p˙eωe]=J(q) q˙=[JPJO]q˙,J∈R6×n\begin{bmatrix}\dot p_e\\ \omega_e\end{bmatrix}=J(q)\,\dot q=\begin{bmatrix}J_P\\ J_O\end{bmatrix}\dot q,\qquad J\in\mathbb R^{6\times n}

JJ 称几何雅可比矩阵,是位形 qq 的函数;JPJ_P(position)对应线速度、JOJ_O(orientation)对应角速度,各 3×n3\times n。ωe\omega_e 的三个分量是末端角速度在基坐标系三根轴上的投影(录播 0:29:11——这句话是几何/分析雅可比分歧的根源,见 3.6)。

位置部分好办——位移求导就是速度;关键在姿态部分:旋转矩阵怎么对时间求导?

定理 3.1.A · 旋转矩阵的导数与反对称算子

设 R=R(t)R=R(t) 为时变旋转矩阵。由正交性 RRT=IRR^{\mathrm T}=I,两边求导并用乘积法则:

R˙RT+RR˙T=0.\dot RR^{\mathrm T}+R\dot R^{\mathrm T}=0 .

记 S≜R˙RTS\triangleq\dot RR^{\mathrm T},则 S+ST=0S+S^{\mathrm T}=0——SS 反对称(对角线为零、非对角元素反对称)。上式两边右乘 RR 得

R˙=S R.\dot R=S\,R .

证明的三个落点(老师逐步口述,0:30:55–0:32:30)

① RRT=IRR^{\mathrm T}=I 是旋转矩阵正交性的直接结果(定义 2.2.2);② 求导用乘积法则,注意 (RT)˙=(R˙)T\dot{(R^{\mathrm T})}=(\dot R)^{\mathrm T};③ 「上式两边右乘 RR」的动机:R˙RT⋅R=R˙\dot RR^{\mathrm T}\cdot R=\dot R(把 R˙\dot R 单独解出来),RR˙TR=−SR\dot R^{\mathrm T}R=-S 保持反对称。于是一个反对称算子 SS 把 RR 和 R˙\dot R 联系起来。

□

SS 里装的是什么?——角速度。 考虑常模向量 p′p'(在刚体系下不动),p(t)=R(t)p′p(t)=R(t)p':它的模长始终不变,方向却在变。求导并代入 R˙=SR\dot R=SR:

p˙(t)=S(t) R(t) p′.\dot p(t)=S(t),R(t),p' .

另一方面,从力学角度(大学物理):随坐标系 R(t)R(t) 一起转动的点,线速度是角速度叉乘矢径:

p˙(t)=ω(t)×p(t)=ω×R(t)p′.\dot p(t)=\omega(t)\times p(t)=\omega\times R(t)p' .

两式对任意 p′p' 成立,比较即得 S(t)R(t)=S(ω)R(t)S(t)R(t)=S(\omega)R(t),即

定义 3.1.2 · 叉乘算子 / 反对称矩阵 S(ω)S(\omega)

(此算子已在 定义 2.5.2 作为「把叉积装进矩阵代数」的工具引入;本定义补上它的物理身份——角速度。用 2.5.3 的语言:S(ω)S(\omega) 是李代数 so(3)so(3) 的元素,ω\omega 是它的摘帽。)

S(ω)=[0−ωzωyωz0−ωx−ωyωx0],ω=[ωxωyωz],S(ω)p≡ω×pS(\omega)=\begin{bmatrix}0&-\omega_z&\omega_y\\ \omega_z&0&-\omega_x\\ -\omega_y&\omega_x&0\end{bmatrix},\qquad \omega=\begin{bmatrix}\omega_x\\\omega_y\\\omega_z\end{bmatrix},\qquad S(\omega)p\equiv\omega\times p

SS 的 33 个独立元素与 ω\omega 的 33 个分量一一对应。老师在这个点上补了一句(0:36:16):「一对一的映射关系,可以类比,但不完全一样」——数一数就明白:SS 有 99 个元素、66 个约束,独立数恰为 33,与 RR 同构,同样是「省参数」的表示。最终:

R˙=S(ω) R\dot R=S(\omega)\,R

(有的教材记 S(ω)=[ω]×S(\omega)=[\omega]_\times 或 ω^\hat\omega,本编与原书统一用 S(⋅)S(\cdot)。)

定理 3.1.B · 旋转共轭保持叉乘

对任意旋转矩阵 RR 与向量 ω\omega:

R S(ω) RT=S(Rω).R\,S(\omega)\,R^{\mathrm T}=S(R\omega).

即「先叉乘再旋转」等于「先旋转再叉乘」。证明:由「旋转保持叉积」(证明 第 0 步已证:R(a×b)=(Ra)×(Rb)R(a\times b)=(Ra)\times(Rb)),对任意向量 pp:

R S(ω) RTp=R(ω×RTp)=(Rω)×(RRTp)=(Rω)×p=S(Rω) p,R\,S(\omega)\,R^{\mathrm T}p=R\big(\omega\times R^{\mathrm T}p\big)=(R\omega)\times\big(RR^{\mathrm T}p\big)=(R\omega)\times p=S(R\omega)\,p,

两边矩阵对一切 pp 给出相同向量,故相等。□ 这个关系后面会用很多次(0:37:05 老师预告,连杆角速度递推 3.1.2 立刻用到)。

例 3.1(原书)· 绕 zz 轴的时变旋转

Rz(α(t))=[cα−sα0sαcα0001],ω=[0,0,α˙]T,S(ω)=[0−α˙0α˙00000],R˙z=S(ω)Rz.R_z(\alpha(t))=\begin{bmatrix}c_\alpha&-s_\alpha&0\\ s_\alpha&c_\alpha&0\\ 0&0&1\end{bmatrix},\qquad \omega=[0,0,\dot\alpha]^{\mathrm T},\qquad S(\omega)=\begin{bmatrix}0&-\dot\alpha&0\\ \dot\alpha&0&0\\ 0&0&0\end{bmatrix},\qquad \dot R_z=S(\omega)R_z .

「比较简单,不详细讲,目的是给大家更感性的认识——反对称矩阵元素与坐标系旋转角速度之间的关系」(0:38:43):ω\omega 的 x,yx,y 分量为零、zz 分量恰为 α˙\dot\alpha——对着元素读一遍,反对称矩阵与坐标系角速度的对应关系就一目了然。该例在 3.2.1 与 3.7 都会以「RzR_z 的 R˙\dot R」身份复用(例 3.1)。

李代数视角:R˙RT\dot RR^{\mathrm T} 与 RTR˙R^{\mathrm T}\dot R 各读出谁的角速度(本编补充)

同一个 R˙=S(ω)R\dot R=S(\omega)R,左乘还是右乘 RTR^{\mathrm T},读出来的是两套角速度。两边右乘 RTR^{\mathrm T} 得 S(ω)=R˙RTS(\omega)=\dot RR^{\mathrm T};两边左乘 RTR^{\mathrm T}、再用 定理 3.1.B 把 RTR^{\mathrm T} 「拿进」算子,则得 RTR˙=S(RTω)R^{\mathrm T}\dot R=S(R^{\mathrm T}\omega)——也是反对称阵。两个摘帽结果:

ω=(R˙RT)∨(基系读数——本课程用的就是它),ω′=RTω=(RTR˙)∨(刚体系读数).\omega=\big(\dot RR^{\mathrm T}\big)^\vee\quad\text{(基系读数——本课程用的就是它)},\qquad \omega'=R^{\mathrm T}\omega=\big(R^{\mathrm T}\dot R\big)^\vee\quad\text{(刚体系读数)}.

同一段旋转、两套坐标读法——「角速度住在李代数 so(3)so(3) 里,但读数要问在哪套坐标」(2.5.3)。这正是 3.1.3 末「雅可比的坐标变换 JuJ^u」在角速度层面的版本;姿态控制文献里的空间速度 / 物体速度之别即源于此。

3.1.2 连杆速度:三项合成与两条递推

这一小节的(a)–(e)五步层层递进:先看单个点如何做速度合成(a),再用 DH 记号把它搬到相邻连杆之间(b–c),接着推出角速度递推(d),最后落到单个关节的特例(e)——这些结论稍后组装雅可比时都要用。

(a)点的速度合成。 设点 PP 在坐标系 11 中的位置为 p1p^1,坐标系 11 的原点在基系 00 中为 o10o_1^0、姿态为 R10R_1^0:

p0=o10+R10 p1.p^0=o_1^0+R_1^0,p^1 .

老师强调(0:40:13):「不能直接加——能直接相加的量都必须在同一空间。要先把 p1p^1 转到基坐标系,计算才是正确的、有意义的。」两边求时间导数,记 r10≜R10p1r_1^0\triangleq R_1^0p^1(p1p^1 在基系中的表示),姿态项用 定理 3.1.A:

p˙0=o˙10+R˙10p1+R10p˙1=o˙10⏟原点速度+ω1×r10⏟牵连转动+R10p˙1⏟相对速度\dot p^0=\dot o_1^0+\dot R_1^0p^1+R_1^0\dot p^1 =\underbrace{\dot o_1^0}_{\text{原点速度}}+\underbrace{\omega_1\times r_1^0}_{\text{牵连转动}}+\underbrace{R_1^0\dot p^1}_{\text{相对速度}}

三项合起来,正是大学物理里的「绝对速度 = 牵连速度 + 相对速度」;若 PP 与刚体固联(p˙1=0\dot p^1=0),它就进一步退化为定轴转动公式 p˙=o˙+ω×r\dot p=\dot o+\omega\times r。相对速度项仍带 R10R_1^0——同样是「先转到同一坐标系再相加」。

(b)DH 建系回顾与记号。 要把(a)用到相邻连杆之间,先得把记号交代清楚——沿用第 2 章约定:连杆 ii 连接关节 ii(近端)与关节 i+1i+1(远端),坐标系 ii 建在远端(原点在关节 i+1i+1 轴上)。老师特意警告(0:43:04):「也有 modified DH 建在近端的,咱们整本教材都按远端建,去年有同学搞混了这个问题,作业怎么做都不对。」记 pi−1,pip_{i-1},p_i 为两坐标系原点在基系中的位置,ri−1,ii−1r_{i-1,i}^{i-1} 为坐标系 ii 的原点相对 i−1i-1 的位置在 i−1i-1 系中的表示,则

pi=pi−1+Ri−1 ri−1,ii−1.p_i=p_{i-1}+R_{i-1},r_{i-1,i}^{i-1}.

(c)连杆线速度递推。 对上式求时间导数(即把(a)的公式套到两连杆之间),记基系表示 ri−1,i=Ri−1ri−1,ii−1r_{i-1,i}=R_{i-1}r_{i-1,i}^{i-1}:

p˙i=p˙i−1+Ri−1r˙i−1,ii−1+ωi−1×Ri−1 ri−1,ii−1\dot p_i=\dot p_{i-1}+R_{i-1}\dot r_{i-1,i}^{i-1}+\omega_{i-1}\times R_{i-1},r_{i-1,i}^{i-1}

连杆 ii 的线速度 = 前一连杆线速度 ++ 相对速度 ++ 前一连杆转动的牵连速度——又是三项合成(0:47:23)。

(d)连杆角速度递推。 从旋转合成 Ri=Ri−1Rii−1R_i=R_{i-1}R_i^{i-1} 出发,两边求导并用 R˙=SR\dot R=SR:

S(ωi)Ri=S(ωi−1) Ri−1Rii−1+Ri−1S(ωi−1,ii−1)Rii−1S(\omega_i)R_i=S(\omega_{i-1}),R_{i-1}R_i^{i-1}+R_{i-1}S(\omega_{i-1,i}^{i-1})R_i^{i-1}

第二项用 定理 3.1.B 把 Ri−1R_{i-1} 「拿进」算子(Ri−1S(ωi−1,ii−1)=S(Ri−1ωi−1,ii−1)Ri−1R_{i-1}S(\omega_{i-1,i}^{i-1})=S(R_{i-1}\omega_{i-1,i}^{i-1})R_{i-1}),三个算子便对同一矩阵 Ri=Ri−1Rii−1R_i=R_{i-1}R_i^{i-1} 作用,比较得

ωi=ωi−1+Ri−1 ωi−1,ii−1\omega_i=\omega_{i-1}+R_{i-1},\omega_{i-1,i}^{i-1}

其中 ωi−1,ii−1\omega_{i-1,i}^{i-1} 是坐标系 ii 相对 i−1i-1 的角速度在 i−1i-1 系中的表示。「坐标系 ii 的角速度 = 前一坐标系的角速度 ++ 相对角速度」。至于为什么角速度可以直接叠加(0:55:46),老师给的理由是:「两刚体传动相连、牵连到一起就可以叠加——大学物理讲转动合成时思考过的问题,从这里自己看出来。」

(e)单个关节的特例(组装雅可比的零件)。 相邻坐标系之间只有一个关节变量:

  • 关节 ii 为转动关节(变量 ϑi\vartheta_i):ωi−1,i=ϑ˙i zi−1\omega_{i-1,i}=\dot\vartheta_i,z_{i-1},且 ri−1,ii−1r_{i-1,i}^{i-1} 不变(r˙=0\dot r=0);
  • 关节 ii 为移动关节(变量 did_i):ωi−1,i=0\omega_{i-1,i}=0,ri−1,ii−1r_{i-1,i}^{i-1} 沿轴伸缩,r˙i−1,ii−1=d˙i zi−1i−1\dot r_{i-1,i}^{i-1}=\dot d_i,z_{i-1}^{i-1}。

其中 zi−1z_{i-1} 是关节 ii 轴向的单位向量(基系表示)。

3.1.3 雅可比矩阵的计算:逐列构造(绿框)

3.1.2 的两条递推都是沿链累加的形式;下面把它按「单关节贡献」拆开——每一项正好对应 JJ 的一列。

线速度。 pe(q)p_e(q) 是 qq 的函数、qq 又是时间的函数,复合求导:

p˙e=∑i=1n∂pe(q)∂qi q˙i=JP q˙.\dot p_e=\sum_{i=1}^{n}\frac{\partial p_e(q)}{\partial q_i},\dot q_i=J_P,\dot q .

(投影仪常年显示不出这个 ∑\sum 符号,老师每年都要口头补,0:59:58。)关键物理解读(1:00:52):每一项表示其余关节全部锁死时,单个关节的速度对末端线速度的贡献——研究第 ii 项时,其他系数全为零。于是逐项用 3.1.2(e):

  • 关节 ii 移动:纯平移,∂pe∂qi=zi−1\dfrac{\partial p_e}{\partial q_i}=z_{i-1};
  • 关节 ii 转动:i∼ni\sim n 段连成刚体绕轴 zi−1z_{i-1} 定轴转动,ω=ϑ˙izi−1\omega=\dot\vartheta_i z_{i-1},矢径 pe−pi−1p_e-p_{i-1},故 ∂pe∂qi=zi−1×(pe−pi−1)\dfrac{\partial p_e}{\partial q_i}=z_{i-1}\times(p_e-p_{i-1})。

角速度。 沿链累加(末端执行器与连杆 nn 之间只有固定齐次变换、无关节变量,故 ωe=ωn\omega_e=\omega_n,1:04:05):

ωe=ωn=∑i=1nωi−1,i=∑i=1nJOi q˙i.\omega_e=\omega_n=\sum_{i=1}^{n}\omega_{i-1,i}=\sum_{i=1}^{n}J_{O_i},\dot q_i .

逐列取法与绿框公式。 把线速度与角速度两部分的结论合起来,就得到逐列的取法:

定理 3.1.C · 几何雅可比的逐列构造(绿框,1:05:52「这部分内容肯定是要考的」)

J=[J1⋯Ji⋯Jn],Ji=[JPiJOi],{关节 i 转动: JPi=zi−1×(pe−pi−1), JOi=zi−1关节 i 移动: JPi=zi−1, JOi=0J=\begin{bmatrix}J_1&\cdots&J_i&\cdots&J_n\end{bmatrix},\qquad J_i=\begin{bmatrix}J_{P_i}\\ J_{O_i}\end{bmatrix},\qquad \begin{cases}\text{关节 } i \text{ 转动:}\ J_{P_i}=z_{i-1}\times(p_e-p_{i-1}),\ J_{O_i}=z_{i-1}\\[2mm] \text{关节 } i \text{ 移动:}\ J_{P_i}=z_{i-1},\ J_{O_i}=0\end{cases}

(课件用关节标志 σi\sigma_i 区分两类关节:转动 σi=0\sigma_i=0、移动 σi=1\sigma_i=1,上式两列取法据此二选一。)

雅可比逐列构造的物理含义 左侧三连杆平面臂只驱动第二个关节、其余关节锁死,末端沿垂直于矢径的方向产生速度;右侧给出转动列与移动列两种取法。 y0 x0 pe 关节 1(锁死) 关节 2(只动它) 关节 3(锁死) z1 出纸面(关节 2 的转动轴) r = pe − p1 J2 q′2 = z1 × r · q′2 垂直于 r 转动关节 i: Ji = [ zi−1 × (pe − pi−1) ; zi−1 ] 移动关节 i: Ji = [ zi−1 ; 0 ] zi−1 = Ti−10 左上 3×3 块的第三列(基系表示);pi−1、pe = 相应 T 的第四列前三行
逐列构造的物理图像(本教程绘):其余关节全部锁死、只以单位速度驱动第 ii 个关节,末端产生的速度就是第 ii 列。左图锁死关节 1 与 3、只驱动关节 2:i∼ni\sim n 段(杆 2、杆 3)连成一个刚体绕轴 z1z_1 定轴转动,末端速度方向垂直于矢径 pe−pi−1\boldsymbol p_e-\boldsymbol p_{i-1}——这正是 zi−1×(pe−pi−1)z_{i-1}\times(\boldsymbol p_e-\boldsymbol p_{i-1}) 的几何内容。移动关节不转,故角速度行取零。

所需量全部来自正运动学(1:07:26–1:09:52,本节最重要的工程结论):

  • zi−1z_{i-1} = 旋转矩阵 Ri−1R_{i-1}(即 Ti−10T_{i-1}^0 的左上 3×33\times3 块)的第三列;
  • pi−1p_{i-1} = Ti−10T_{i-1}^0 第四列前三行;pep_e = Tn0T_n^0 第四列前三行。

此外,在求 Tn0=A10⋯Ann−1T_n^0=A_1^0\cdots A_n^{n-1} 的过程中,中间的 T10,…,Tn−10T_1^0,\dots,T_{n-1}^0 本来就要逐个算出来——「只要正运动学得到(对每个关节的),几何雅可比矩阵就都得到了」,中间任意关节的雅可比也能顺带求出(1:10:22)。

常见错误 · zi−1z_{i-1} 不是 [0,0,1]T[0,0,1]^{\mathrm T}

「zi−1z_{i-1} 表示在基坐标系下。它肯定不是 [0,0,1]T[0,0,1]^{\mathrm T}!只有表示在它自己的坐标系下才是 [0,0,1][0,0,1],表示在基坐标系下要乘很复杂的旋转矩阵」(1:06:52)。除 z0=[0,0,1]Tz_0=[0,0,1]^{\mathrm T} 外,zi−1=Ri−1z_{i-1}=R_{i-1} 第三列随位形变化。

雅可比的坐标变换。 上述 JJ 是相对基坐标系建立的。若要在其他坐标系 uu(约束坐标系、传感器系——「传感器得到的结果都是相对它本身坐标系的」,1:11:30)中表示,由 p˙eu=Rup˙e\dot p_e^u=R^u\dot p_e、ωeu=Ruωe\omega_e^u=R^u\omega_e:

[p˙euωeu]=[Ru00Ru][p˙eωe]⟹Ju=[Ru00Ru]J.\begin{bmatrix}\dot p_e^u\ \omega_e^u\end{bmatrix}=\begin{bmatrix}R^u&0\0&R^u\end{bmatrix}\begin{bmatrix}\dot p_e\ \omega_e\end{bmatrix} \qquad\Longrightarrow\qquad J^u=\begin{bmatrix}R^u&0\0&R^u\end{bmatrix}J .

「写代码开发的时候如果不考虑这个因素,结果肯定是错的」(1:12:01)。

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

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

  1. 重推 RRT=I⇒R˙=S(ω)RRR^{\mathrm T}=I\Rightarrow\dot R=S(\boldsymbol\omega)R。
  2. 默写逐列构造的绿框公式(转动 / 移动两式)。
  3. zi−1z_{i-1} 从 Ti−10T_{i-1}^0 的哪一部分读?它是不是 [0,0,1]T[0,0,1]^{\mathrm T}?
核对

RRT=IRR^{\mathrm T}=I 两边求导 ⇒ R˙RT+RR˙T=0\dot RR^{\mathrm T}+R\dot R^{\mathrm T}=0,记 S=R˙RTS=\dot RR^{\mathrm T} 则 S+ST=0S+S^{\mathrm T}=0(反对称);两边右乘 RR 得 R˙=SR\dot R=SR。再用常模向量 p=Rp′p=Rp' 求导与 p˙=ω×p\dot p=\boldsymbol\omega\times p 比对,认出 S=S(ω)S=S(\boldsymbol\omega)。

转动:JPi=zi−1×(pe−pi−1)J_{P_i}=z_{i-1}\times(\boldsymbol p_e-\boldsymbol p_{i-1})、JOi=zi−1J_{O_i}=z_{i-1};移动:JPi=zi−1J_{P_i}=z_{i-1}、JOi=0J_{O_i}=\boldsymbol 0。

zi−1=Ri−1z_{i-1}=R_{i-1}(即 Ti−10T_{i-1}^0 左上 3×33\times3 块)的第三列,表示在基坐标系下。它不是 [0,0,1]T[0,0,1]^{\mathrm T}——只有 z0z_0 才是;其余随位形变化。

3.1 小结与常见错误

  • 一条主线:正交性求导 → R˙=SR\dot R=SR(SS 反对称)→ 常模向量识别出 S=S(ω)S=S(\omega) → 点速度三项合成 → 连杆两条递推(p˙i\dot p_i、ωi\omega_i)→ 复合求导拆成单关节贡献 → 绿框逐列公式。
  • 两个免费校验:JJ 的每一列要么是 [zi−1×(⋅)zi−1]\begin{bmatrix}z_{i-1}\times(\cdot)\ z_{i-1}\end{bmatrix}(转动),要么是 [zi−10]\begin{bmatrix}z_{i-1}\ 0\end{bmatrix}(移动),形状不对就说明组装错了;数值上则可以用 p˙e≈(pe(q+δq)−pe(q−δq))/2δ\dot p_e\approx\big(p_e(q+\delta q)-p_e(q-\delta q)\big)/2\delta 抽查任一列。
常见错误清单 · 自查三条
  1. 把 p˙i\dot p_i 递推里的牵连项写成 ωi×(⋅)\omega_i\times(\cdot)——牵连的是前一连杆的角速度 ωi−1\omega_{i-1},不是本连杆的 ωi\omega_i;
  2. 转动关节列忘了叉乘方向:JPi=zi−1×(pe−pi−1)J_{P_i}=z_{i-1}\times(p_e-p_{i-1}),矢径从关节轴上的点指向末端,写反顺序差一个负号;
  3. 误以为 ωe≠ωn\omega_e\neq\omega_n——末端执行器与连杆 nn 之间没有关节变量,两者角速度必定相同;即便末端带工具偏置,那也只是固连变换。