← 全部文章

雅可比矩阵:让速度、力与奇异性说同一种语言

  • 机器人学
  • 雅可比矩阵
  • 奇异性
  • 可操作度
  • 并联机构
目录

前三篇文章分别从螺旋轴、能量和代数出发,讨论了机器人的正运动学、动力学与刚体位姿表示。

但它们之间还缺少一座桥。

PoE 能告诉我们关节角给定以后,末端位姿在哪里;拉格朗日法会使用每根连杆质心的速度来计算动能;对偶四元数则能够复合和插值完整的刚体位姿。真正进入控制周期时,我们经常面对的却是更局部的问题:

  • 关节此刻转得多快,末端会朝哪里运动?
  • 想让末端沿某个方向移动,各关节应该怎样配合?
  • 末端受到一个力,电机上会出现多大的力矩?
  • 为什么某些姿态下,机器人明明还有电机,却突然失去了一个运动方向?

这些问题都指向同一个对象:雅可比矩阵(Jacobian matrix)

最常见的速度关系是:

x˙=J(q)q˙\dot x=J(q)\dot q

它看起来只是一条矩阵乘法,但背后同时连接着三件事:

关节速度  J  末端速度,末端力  JT  关节力矩\text{关节速度} \xrightarrow{\;J\;} \text{末端速度}, \qquad \text{末端力} \xrightarrow{\;J^{\scriptscriptstyle\mathsf T}\;} \text{关节力矩}

JJ 失去秩时,速度映射丢失方向,力映射也随之发生剧烈变化,这就是奇异性最直接的来源。

雅可比矩阵连接关节速度、末端运动与力

雅可比并不是机器人专属的矩阵。它来自多变量微积分,本质是一个非线性映射在当前点附近的最佳一阶近似。机器人学真正特别的地方,是让这张局部导数表同时获得了清晰的几何与物理意义。

1. 从一条曲线的斜率开始

先暂时忘掉机械臂。设一个标量函数:

y=f(x)y=f(x)

xx 附近发生一个很小的变化 δx\delta x,函数值的变化近似为:

δydfdxδx\delta y\approx\frac{df}{dx}\delta x

导数 df/dxdf/dx 告诉我们:输入在这一点附近变化一点,输出会怎样变化。

把输入和输出都换成向量:

x=f(q),qRn,xRmx=f(q), \qquad q\in\mathbb R^n, \quad x\in\mathbb R^m

每个输出分量都可能依赖每个输入分量,于是导数自然变成一张矩阵:

J(q)=fq=[f1q1f1qnfmq1fmqn]J(q)=\frac{\partial f}{\partial q} = \begin{bmatrix} \dfrac{\partial f_1}{\partial q_1}&\cdots&\dfrac{\partial f_1}{\partial q_n}\\ \vdots&\ddots&\vdots\\ \dfrac{\partial f_m}{\partial q_1}&\cdots&\dfrac{\partial f_m}{\partial q_n} \end{bmatrix}

在当前构型附近:

δxJ(q)δq\delta x\approx J(q)\delta q

qq 随时间变化,两边除以时间并取极限,就得到:

x˙=J(q)q˙\dot x=J(q)\dot q

这就是机器人雅可比最朴素的来历。

1.1 它是一张随姿态变化的局部地图

雅可比不是一台机器人的固定参数,而是构型 qq 的函数。同一组关节速度,在不同姿态下可能让末端朝完全不同的方向运动。

这也解释了为什么正运动学与雅可比承担不同任务:

  • 正运动学 x=f(q)x=f(q) 回答“现在在哪里”;
  • 雅可比 x˙=J(q)q˙\dot x=J(q)\dot q 回答“从这里出发,微小运动怎样传播”。

它只是一阶局部关系。若关节一步走得很大,直接用 J(q)ΔqJ(q)\Delta q 预测末端位移会逐渐偏离真实非线性运动;这时需要缩小步长,或者重新计算沿途的雅可比。

1.2 雅可比的列究竟是什么

把矩阵按列写开:

x˙=J1(q)q˙1+cdots+Jn(q)q˙n\dot x =J_1(q)\dot q_1+cdots+J_n(q)\dot q_n

令所有关节速度为零,只让第 ii 个关节以单位速度运动:

q˙i=1,q˙ji=0\dot q_i=1, \qquad \dot q_{j\ne i}=0

此时末端速度就是 Ji(q)J_i(q)。因此,雅可比的第 ii 列,就是第 ii 个关节单独以单位速度运动时,对任务速度产生的贡献。

这个观察非常重要。它让雅可比不再只是“对正运动学求偏导”,而成为一组可以直接从关节轴和机构几何中读出的速度基向量。

2. 平面 2R:先让雅可比变得可见

考虑一台平面两转动关节机械臂。两根连杆长度分别为 L1,L2L_1,L_2,关节角为 q1,q2q_1,q_2,末端点为 p=(x,y)Tp=(x,y)^{\scriptscriptstyle\mathsf T}

正运动学为:

x=L1cosq1+L2cos(q1+q2)x=L_1\cos q_1+L_2\cos(q_1+q_2) y=L1sinq1+L2sin(q1+q2)y=L_1\sin q_1+L_2\sin(q_1+q_2)

q1,q2q_1,q_2 求偏导:

Jp(q)=[L1sinq1L2sin(q1+q2)L2sin(q1+q2)L1cosq1+L2cos(q1+q2)L2cos(q1+q2)]J_p(q)= \begin{bmatrix} -L_1\sin q_1-L_2\sin(q_1+q_2)&-L_2\sin(q_1+q_2)\\ L_1\cos q_1+L_2\cos(q_1+q_2)&L_2\cos(q_1+q_2) \end{bmatrix}

于是:

p˙=Jp(q)[q˙1q˙2]\dot p=J_p(q) \begin{bmatrix} \dot q_1\\ \dot q_2 \end{bmatrix}

公式并不复杂,但几何解释比逐项求导更值得记住。

定义平面内逆时针旋转 9090^\circ 的矩阵:

E=[0110]E= \begin{bmatrix} 0&-1\\ 1&0 \end{bmatrix}

设两个关节中心分别为 o1,o2o_1,o_2,那么雅可比的两列可以直接写成:

Jp,1=E(po1),Jp,2=E(po2)J_{p,1}=E(p-o_1), \qquad J_{p,2}=E(p-o_2)

因为转动关节产生的瞬时速度,总是垂直于“关节中心指向该点”的半径:

  • 关节 1 转动时,末端绕基座画圆,速度沿大圆的切线;
  • 关节 2 转动时,末端绕肘部画圆,速度沿小圆的切线;
  • 两个关节同时运动时,真实末端速度就是这两个切向速度的线性组合。

平面 2R 机械臂中雅可比两列的几何意义

这就是“看图写雅可比”的本质:找到每个关节单独运动时,任务点会获得怎样的瞬时速度。

3. 从点速度回到旋量与 PoE

上一节只关心二维末端位置,因此 JpJ_p 是一张 2×22\times2 矩阵。空间机器人通常还要描述末端角速度,这时任务速度不再只是 p˙\dot p,而是六维 twist:

V=[ωv]\mathcal V= \begin{bmatrix} \boldsymbol\omega\\ \boldsymbol v \end{bmatrix}

若采用空间坐标系表达:

Vs=Js(q)q˙\mathcal V_s=J_s(q)\dot q

JsJ_s 称为空间雅可比。对于 PoE 正运动学:

T(q)=e[S1]q1e[S2]q2e[Sn]qnMT(q)=e^{[\mathcal S_1]q_1} e^{[\mathcal S_2]q_2}\cdots e^{[\mathcal S_n]q_n}M

它的空间雅可比可以按列写成:

Js(q)=[S1Ade[S1]q1S2Ade[S1]q1e[Sn1]qn1Sn]J_s(q)= \begin{bmatrix} \mathcal S_1& \operatorname{Ad}_{e^{[\mathcal S_1]q_1}}\mathcal S_2& \cdots& \operatorname{Ad}_{e^{[\mathcal S_1]q_1}\cdots e^{[\mathcal S_{n-1}]q_{n-1}}}\mathcal S_n \end{bmatrix}

第一列就是第一根空间螺旋轴;后面的每根轴,则被前面已经发生的关节运动带到当前构型。PoE 不需要先把正运动学完全展开成一大串三角函数,再逐项求偏导,而是直接沿着关节链递推每一列的几何作用。

若 twist 在末端固连坐标系表达:

Vb=Jb(q)q˙\mathcal V_b=J_b(q)\dot q

空间雅可比与本体雅可比满足:

Jb(q)=AdT1(q)Js(q)J_b(q)=\operatorname{Ad}_{T^{-1}(q)}J_s(q)

它们描述同一个物理运动,只是使用了不同坐标系。

3.1 twist 中的线速度不是“末端原点速度”的固定同义词

这里有一个很容易被忽略的细节。采用 (ω,v)(\boldsymbol\omega,\boldsymbol v) 排列的空间 twist 时,v\boldsymbol v 是速度场在空间坐标原点处的线速度参数。空间中一点 pp 的速度为:

p˙=ω×p+v\dot p=\boldsymbol\omega\times p+\boldsymbol v

因此,从六维 twist 雅可比取出点速度雅可比时,必须把任务点的位置考虑进去。只有在明确了 twist 的定义、参考点和表达坐标系以后,“雅可比的线速度部分”才不会产生歧义。

3.2 几何雅可比与解析雅可比不是一回事

几何雅可比映射到角速度与线速度:

[ωp˙]=Jg(q)q˙\begin{bmatrix} \boldsymbol\omega\\ \dot p \end{bmatrix} =J_g(q)\dot q

解析雅可比则可能把姿态写成欧拉角 η\eta

[p˙η˙]=Ja(q)q˙\begin{bmatrix} \dot p\\ \dot\eta \end{bmatrix} =J_a(q)\dot q

欧拉角导数 η˙\dot\eta 一般不等于角速度 ω\boldsymbol\omega,二者之间还需要一个随姿态变化的转换矩阵。该转换本身也可能在某些欧拉角姿态下奇异。

所以,讨论“雅可比奇异”之前,必须先说明任务变量是什么。机构的几何奇异与某套姿态参数自身的坐标奇异,不能混为一谈。

4. 转置为什么会把末端力变成关节力矩

速度映射使用 JJ

V=J(q)q˙\mathcal V=J(q)\dot q

力映射为什么会自然出现 JTJ^{\scriptscriptstyle\mathsf T}?答案不是记忆公式,而是瞬时功率守恒。

W\mathcal W 是机器人希望在任务空间中输出的 wrench,其正方向与 V\mathcal V 采用同一功率约定:

W=[mf]\mathcal W= \begin{bmatrix} \boldsymbol m\\ \boldsymbol f \end{bmatrix}

末端功率为:

P=WTV\mathcal P =\mathcal W^{\scriptscriptstyle\mathsf T}\mathcal V

关节侧功率为:

P=τTq˙\mathcal P =\tau^{\scriptscriptstyle\mathsf T}\dot q

理想刚性传动中,两边描述的是同一份瞬时功率。代入 V=Jq˙\mathcal V=J\dot q

WTJq˙=τTq˙\mathcal W^{\scriptscriptstyle\mathsf T}J\dot q =\tau^{\scriptscriptstyle\mathsf T}\dot q

对任意允许的 q˙\dot q 都成立,因此:

τ=JTW\boxed{\tau=J^{\scriptscriptstyle\mathsf T}\mathcal W}

对于只受二维末端力 ff 的平面 2R 机械臂:

τ=JpTf\tau=J_p^{\scriptscriptstyle\mathsf T}f

JpJ_p 的列记作 Jp,1,Jp,2J_{p,1},J_{p,2},则:

τi=Jp,iTf\tau_i=J_{p,i}^{\scriptscriptstyle\mathsf T}f

这正是熟悉的“力乘力臂”。第 ii 列给出了关节 ii 单位转速产生的末端速度方向;与末端力做功率内积,就得到该力对关节 ii 产生的力矩。

4.1 不要把力映射写成雅可比的逆

常见误解是:速度使用 JJ,力就应该使用 J1J^{-1}。实际上,力和速度属于互为对偶的空间,保持功率配对所需要的是转置。

只有在方阵、满秩并且确实要从关节力矩反求末端等效力时,才可能写出:

W=(JT)1τ\mathcal W= \left(J^{\scriptscriptstyle\mathsf T}\right)^{-1}\tau

冗余、欠驱动或奇异情况下,这个逆并不存在;此时必须结合约束、伪逆或具体的力分配目标。

同样重要的是,JJW\mathcal W 必须使用相同的 twist 排列、参考点和表达坐标系。空间雅可比不能直接乘一个在末端坐标系表达的 wrench。若 Wext\mathcal W_{\text{ext}} 表示环境施加在机器人上的外力,而 τ\tau 表示电机为维持静力平衡提供的力矩,则平衡式应写成 τ+JTWext=0\tau+J^{\scriptscriptstyle\mathsf T}\mathcal W_{\text{ext}}=0;符号差异来自作用力方向,而不是雅可比转置关系改变了。

5. 奇异性:不是行列式突然等于零

雅可比把关节速度空间映射到任务速度空间。若某些任务方向无法再由关节速度组合出来,映射的像空间就会缩小,也就是:

rankJ(q)<min(m,n)\operatorname{rank}J(q) <\min(m,n)

这才是奇异性的本质:雅可比失去秩,机器人丢失了一个或多个独立的瞬时运动方向。

对于平面 2R 的位置雅可比:

detJp=L1L2sinq2\det J_p=L_1L_2\sin q_2

所以:

q2=0q2=πq_2=0 \quad\text{或}\quad q_2=\pi

时,两个雅可比列向量共线。几何上,两根连杆完全伸直或折叠,两个关节单独产生的末端切向速度落在同一条直线上;无论怎样组合 q˙1,q˙2\dot q_1,\dot q_2,都无法获得另一个独立方向。

5.1 奇异附近为什么会出现很大的关节速度

假设我们希望末端产生速度 x˙d\dot x_d,并写成:

q˙=J1x˙d\dot q=J^{-1}\dot x_d

接近奇异位形时,JJ 在某个方向上的缩放因子变得很小。为了得到有限的末端速度,逆映射只能把对应关节速度放得很大。

这并不是数值算法“算坏了”,而是机构几何在告诉我们:机器人几乎无法沿那个方向运动。

5.2 任务定义决定奇异性

同一台机器人,针对不同任务可能有不同雅可比:

  • 只控制末端位置;
  • 同时控制位置与姿态;
  • 只控制工具轴方向;
  • 控制接触点沿表面的两个切向速度。

一个构型对六维位姿任务可能奇异,对三维位置任务却未必奇异。因此,“机器人处于奇异位形”这句话如果没有任务空间和坐标约定,信息并不完整。

关节限位也不是严格意义上的雅可比奇异。它会让某些速度在物理上不可执行,产生类似丢失方向的效果,但根源是可行域边界,而不是 JJ 自身失秩。

6. 用奇异值把方向能力画出来

仅仅知道“是否奇异”还不够。很多时候,我们更关心机器人离奇异还有多远,以及它更擅长沿哪些方向运动。

对雅可比作奇异值分解:

J=UΣVTJ=U\Sigma V^{\scriptscriptstyle\mathsf T}

其中:

Σ=diag(σ1,,σr),σ1σr0\Sigma=\operatorname{diag}(\sigma_1,\ldots,\sigma_r), \qquad \sigma_1\ge\cdots\ge\sigma_r\ge0

把单位关节速度球:

q˙1\|\dot q\|\le1

通过 JJ 映射到任务空间,就得到速度可操作度椭球。椭球主轴方向是 UU 的列,半轴长度是奇异值 σi\sigma_i

  • 大奇异值方向:很小的关节速度就能产生较大的末端速度;
  • 小奇异值方向:机器人不擅长运动;
  • 某个奇异值变为零:椭球塌缩,进入奇异位形。

平面 2R 机械臂的速度椭球与奇异性

6.1 Yoshikawa 可操作度

对于任务维度不高于关节自由度、且采用一致尺度的速度雅可比,常见的 Yoshikawa 可操作度指标为:

w(q)=det(JJT)=iσiw(q)=\sqrt{\det\left(JJ^{\scriptscriptstyle\mathsf T}\right)} =\prod_i\sigma_i

它与速度椭球的体积成比例:任一必要奇异值趋近于零,ww 也会趋近于零。

不过,这个标量不能代替完整的椭球。两个姿态可能拥有相同体积,却一个细长、一个均匀;前者在某个方向上仍然很脆弱。工程上通常还会同时观察:

σmin,κ(J)=σmaxσmin\sigma_{\min}, \qquad \kappa(J)=\frac{\sigma_{\max}}{\sigma_{\min}}

分别描述最弱方向与条件数。

6.2 速度椭球与力椭球互为对偶

若约束关节力矩满足 τ1\|\tau\|\le1,又有 τ=JTf\tau=J^{\scriptscriptstyle\mathsf T}f,则末端力满足:

fTJJTf1f^{\scriptscriptstyle\mathsf T}JJ^{\scriptscriptstyle\mathsf T}f\le1

沿速度椭球奇异值为 σi\sigma_i 的方向,力椭球半轴长度为 1/σi1/\sigma_i

这是一种很漂亮的互补关系:

  • 容易产生高速运动的方向,抵抗或输出静态力的机械优势较小;
  • 难以运动的方向,理论上的静态力放大能力较强;
  • 到达理想刚性模型的奇异点时,某些静力映射会趋向无穷,这同时意味着模型对柔性、间隙和结构变形极其敏感,不能把“无穷大力”当作真实机器的能力。

6.3 线速度和角速度不能随意放进同一个欧氏球

六维几何雅可比同时含有角速度与线速度,二者单位不同。直接计算 JJTJJ^{\scriptscriptstyle\mathsf T}、条件数或椭球,会隐含一个旋转和平移的相对尺度。

因此,比较空间机械臂的综合可操作度时,应明确特征长度、任务权重或单位归一化。没有尺度说明的“全局可操作度排名”,往往比公式看起来更主观。

7. 并联机构:一张雅可比不再够用

串联机器人通常直接写成:

x˙=J(q)q˙\dot x=J(q)\dot q

并联机构还要同时满足多条支链的闭环约束。对于平面五杆机构,更自然的速度形式是:

A(q)p˙=B(q)q˙aA(q)\dot p=B(q)\dot q_a

q˙a\dot q_a 只包含两个主动关节速度,p˙\dot p 是末端二维速度。矩阵 AABB 分别揭示两类不同的退化。

设左右基座关节为 OL,ORO_L,O_R,两个肘部为 CL,CRC_L,C_R,末端为 PP。左右近端连杆方向单位向量为 aL,aRa_L,a_R,远端连杆方向单位向量为 uL,uRu_L,u_R

左支链速度可以写成:

p˙=L1EaLq˙L+L2EuLϕ˙L\dot p =L_1Ea_L\dot q_L +L_2Eu_L\dot\phi_L

ϕL\phi_L 是左侧远端连杆的绝对方向,属于被动变量。用 uLTu_L^{\scriptscriptstyle\mathsf T} 左乘:

uLTp˙=L1uLTEaLq˙Lu_L^{\scriptscriptstyle\mathsf T}\dot p =L_1u_L^{\scriptscriptstyle\mathsf T}Ea_L\dot q_L

因为:

uLTEuL=0u_L^{\scriptscriptstyle\mathsf T}Eu_L=0

被动速度项精确消失。右侧同理,最终得到:

[uLTuRT]Ap˙=[L1uLTEaL00L3uRTEaR]B[q˙Lq˙R]\underbrace{ \begin{bmatrix} u_L^{\scriptscriptstyle\mathsf T}\\ u_R^{\scriptscriptstyle\mathsf T} \end{bmatrix}}_{A} \dot p = \underbrace{ \begin{bmatrix} L_1u_L^{\scriptscriptstyle\mathsf T}Ea_L&0\\ 0&L_3u_R^{\scriptscriptstyle\mathsf T}Ea_R \end{bmatrix}}_{B} \begin{bmatrix} \dot q_L\\ \dot q_R \end{bmatrix}

平面五杆机构的约束雅可比与两类奇异性

7.1 支链奇异:驱动传不出去

BB 的某个对角元素为零:

uLTEaL=0uRTEaR=0u_L^{\scriptscriptstyle\mathsf T}Ea_L=0 \quad\text{或}\quad u_R^{\scriptscriptstyle\mathsf T}Ea_R=0

说明该侧近端与远端连杆共线。主动关节速度无法有效产生某个末端速度方向。这类退化常称为支链奇异或串联奇异。

7.2 并联奇异:约束撑不住末端

AA 失去秩,左右两个远端连杆方向平行或共线:

detA=0\det A=0

此时两条支链施加在末端上的独立约束方向合并成一个。即使主动关节锁住,理想机构仍可能存在非零的末端瞬时运动。这类并联奇异往往比串联机器人奇异更危险,因为它意味着末端失去约束刚度。

所以,并联机器人不能只计算一个 J=A1BJ=A^{-1}B 后就忘掉它的来源。AA 不可逆与 BB 降秩对应不同物理现象,应该分别保留和监测。

8. 从速度控制走向数值逆运动学

给定期望末端速度 x˙d\dot x_d,如果 JJ 是方阵且满秩,可以直接写:

q˙=J1x˙d\dot q=J^{-1}\dot x_d

一般机器人更常遇到非方阵或冗余情形,此时使用 Moore-Penrose 伪逆:

q˙=J+x˙d\dot q=J^+\dot x_d

它给出满足任务速度的最小二范数关节速度解。若任务维度不高于关节数且 JJ 满行秩:

J+=JT(JJT)1J^+=J^{\scriptscriptstyle\mathsf T} \left(JJ^{\scriptscriptstyle\mathsf T}\right)^{-1}

但接近奇异位形时,小奇异值的倒数仍会把速度和噪声强烈放大。

8.1 阻尼最小二乘

阻尼最小二乘(Damped Least Squares,DLS)不再要求精确满足任务速度,而是求解:

minq˙(Jq˙x˙d2+λ2q˙2)\min_{\dot q} \left( \|J\dot q-\dot x_d\|^2 +\lambda^2\|\dot q\|^2 \right)

解为:

q˙=JT(JJT+λ2I)1x˙d\dot q =J^{\scriptscriptstyle\mathsf T} \left(JJ^{\scriptscriptstyle\mathsf T}+\lambda^2I\right)^{-1} \dot x_d

在奇异值方向上:

1σiσiσi2+λ2\frac{1}{\sigma_i} \quad\longrightarrow\quad \frac{\sigma_i}{\sigma_i^2+\lambda^2}

伪逆增益会在 σi0\sigma_i\to0 时发散;DLS 增益则回到零,用有限的任务误差换取有界关节速度。

伪逆与阻尼最小二乘在小奇异值附近的增益

λ\lambda 不是越大越安全:阻尼过大时,远离奇异点也会产生明显跟踪误差。常见做法是根据 σmin\sigma_{\min}、可操作度或任务误差自适应调节阻尼,并同时限制关节速度。

8.2 冗余机器人的零空间

当关节数多于任务维度时,满足末端速度的解通常不唯一:

q˙=J+x˙d+(IJ+J)z\dot q =J^+\dot x_d +\left(I-J^+J\right)z

第二项位于 JJ 的零空间中,因为:

J(IJ+J)z=0J\left(I-J^+J\right)z=0

它可以在不改变一阶末端任务的前提下,用来远离关节限位、提高可操作度、避障或保持某种姿态。

这里要保留“一阶”两个字。有限时间积分、模型误差和任务优先级切换都可能造成漂移,实际控制器还需要重新投影和反馈修正。

9. 雅可比怎样进入拉格朗日动力学

在拉格朗日法中,第 ii 根连杆质心的线速度和角速度写成:

vci=Jvi(q)q˙,ωi=Jωi(q)q˙v_{c_i}=J_{v_i}(q)\dot q, \qquad \omega_i=J_{\omega_i}(q)\dot q

代入动能:

Ti=12mivciTvci+12ωiTIiωiT_i =\frac12m_i v_{c_i}^{\scriptscriptstyle\mathsf T}v_{c_i} +\frac12\omega_i^{\scriptscriptstyle\mathsf T}I_i\omega_i

其中 IiI_i 必须与 ωi\omega_i 在同一坐标系表达。代入以后,可以直接看到每根连杆对质量矩阵的贡献:

M(q)=i(miJviTJvi+JωiTIiJωi)M(q) =\sum_i \left( m_iJ_{v_i}^{\scriptscriptstyle\mathsf T}J_{v_i} +J_{\omega_i}^{\scriptscriptstyle\mathsf T}I_iJ_{\omega_i} \right)

这条公式把前两篇文章真正接了起来:雅可比负责把广义速度传到每根连杆,拉格朗日法再用这些速度计算系统能量。

若存在闭环或接触约束:

ϕ(q)=0\phi(q)=0

对时间求导得到:

Jc(q)q˙=0,Jc=ϕqJ_c(q)\dot q=0, \qquad J_c=\frac{\partial\phi}{\partial q}

对应的理想约束力以:

JcTλJ_c^{\scriptscriptstyle\mathsf T}\lambda

进入广义动力学。速度约束使用 JcJ_c,约束力使用 JcTJ_c^{\scriptscriptstyle\mathsf T},依然是同一组功率对偶关系。

在满足满秩等条件时,任务空间等效惯量还可以写成:

Λ(q)=(JM1JT)1\Lambda(q) =\left(JM^{-1}J^{\scriptscriptstyle\mathsf T}\right)^{-1}

它描述机器人沿不同末端方向表现出的惯性。仅看运动学速度椭球,并不能完整代表高动态运动能力;质量分布、执行器能力和姿态都会通过动力学继续改变结果。

10. 工程实现最容易出错的地方

10.1 先写清任务、参考点和坐标系

同一个机器人可能同时存在:

  • 空间雅可比与本体雅可比;
  • 几何雅可比与解析雅可比;
  • 工具坐标原点、法兰中心或接触点的雅可比;
  • (ω,v)(\boldsymbol\omega,\boldsymbol v)(v,ω)(\boldsymbol v,\boldsymbol\omega) 两种六维排列。

如果接口只返回一个名为 J 的矩阵,却没有这些约定,后续的速度、力和控制计算很容易在维度正确的情况下悄悄出错。

10.2 用李群有限差分验证空间雅可比

对第 ii 个关节加入小扰动 hh。若要验证本体雅可比,可以计算:

ΔTb=T1(q)T(q+hei)\Delta T_b =T^{-1}(q)T(q+h e_i)

然后:

Jb,i1hLog(ΔTb)J_{b,i} \approx \frac{1}{h} \operatorname{Log}(\Delta T_b)^\vee

若验证空间雅可比,则使用:

ΔTs=T(q+hei)T1(q)\Delta T_s =T(q+h e_i)T^{-1}(q) Js,i1hLog(ΔTs)J_{s,i} \approx \frac{1}{h} \operatorname{Log}(\Delta T_s)^\vee

只对位置坐标做差分无法验证角速度部分;直接对旋转矩阵元素相减,也不是合法的姿态误差向量。

10.3 差分步长不能只取“越小越好”

hh 太大时,截断误差明显;hh 太小时,浮点相消会放大舍入误差。可以在多个数量级上扫描步长,观察误差是否先下降后上升,并与自动微分或独立实现交叉检查。

10.4 用奇异值而不是固定行列式阈值

非方阵雅可比没有行列式;即使是方阵,行列式也会随单位和尺度剧烈变化。工程上更适合监测:

σmin,σminσmax,κ(J)\sigma_{\min}, \qquad \frac{\sigma_{\min}}{\sigma_{\max}}, \qquad \kappa(J)

阈值应结合单位归一化、噪声水平、速度上限和具体任务确定,而不是复制一个脱离系统尺度的常数。

10.5 伪逆不是完整控制器

q˙=J+x˙d\dot q=J^+\dot x_d 只解决瞬时速度分配。真实机器人还需要:

  • 位置或位姿误差反馈;
  • 关节位置、速度和加速度限制;
  • 奇异与关节限位回避;
  • 碰撞、接触和闭环约束;
  • 离散积分与通信延迟处理。

一条漂亮的伪逆公式,不会自动把这些工程边界消失掉。

11. 一套更可靠的雅可比检查流程

把雅可比用于控制或优化以前,可以依次完成下面这些检查:

  1. 明确输入关节的顺序、单位和正方向;
  2. 明确输出任务的维度、参考点、坐标系和六维排列;
  3. 在简单零位下,逐列检查单关节单位速度的几何方向;
  4. 用李群有限差分或自动微分核对随机姿态;
  5. 验证功率一致性 WTJq˙=(JTW)Tq˙\mathcal W^{\scriptscriptstyle\mathsf T}J\dot q=(J^{\scriptscriptstyle\mathsf T}\mathcal W)^{\scriptscriptstyle\mathsf T}\dot q
  6. 扫描工作空间中的 σmin\sigma_{\min} 与条件数;
  7. 对已知伸直、折叠或闭环共线构型检查奇异方向;
  8. 在奇异附近验证速度限幅、阻尼和故障处理;
  9. 对并联机构分别保留 AABB,不要只检查组合后的逆映射;
  10. 与 CAD、仿真或另一套独立运动学实现交叉验证。

其中,功率一致性尤其有用。它不只检查矩阵尺寸,还会同时暴露坐标系、twist 排列、参考点和转置方向错误。

12. 回到最初的问题

雅可比最初只是一个局部导数:

δxJ(q)δq\delta x\approx J(q)\delta q

进入机器人学以后,它逐渐展现出多层含义:

x˙=J(q)q˙\dot x=J(q)\dot q

描述关节运动怎样汇聚成末端速度;

τ=JTW\tau=J^{\scriptscriptstyle\mathsf T}\mathcal W

描述末端力怎样回到关节;

rankJ<min(m,n)\operatorname{rank}J<\min(m,n)

揭示机构何时丢失独立方向;

J=UΣVTJ=U\Sigma V^{\scriptscriptstyle\mathsf T}

则把这种方向能力展开成可以观察的速度椭球、力椭球与条件数。

所以,雅可比不是正运动学之后附带的一张偏导数表。它是机器人局部运动的核心接口:一边连接几何,一边连接力与能量;向前通往逆运动学、轨迹规划和冗余控制,向后又能回到奇异性、约束与机构设计。

前三篇文章讨论的三种语言,也在这里第一次同时出现:

  • 旋量与 PoE 提供雅可比每一列的几何来源;
  • 拉格朗日法通过质心雅可比把速度写进动能;
  • 对偶四元数与 SE(3)SE(3) 的误差可以通过对数映射转成局部 twist,再交给雅可比处理。

它们描述的从来不是三套彼此分离的数学,而是同一台机器人在不同尺度上的运动结构。

参考与延伸阅读