想象一支搬运钢琴的小队:六名工人分别站在钢琴的不同方位,有人负责抬起琴脚,有人负责侧面扶持,有人负责后部推顶。队长喊一声“往左前方挪半米”,每个工人都会按自己的站位使出一分力,钢琴最终朝哪个方向动、动多快,取决于大家发力的方向和幅度。这套“谁发力多少 → 钢琴整体怎么动”的对应关系,在机器人学里就是雅可比矩阵(Jacobian)。它是一张动态的“协调表”:每个关节相当于一名工人,末端执行器相当于钢琴,而雅可比矩阵记录着每个关节转动一个小角度时,末端会以怎样的速度、朝哪个方向移动。更妙的是,这张表还能反向使用——如果想在末端施加一个力,它就是决定每个关节该出多少扭矩的“分账清单”。理解这张表,你就读懂了机器人运动与力控的骨架。

岗位关联

对 AI 从业者而言,速度运动学是机器人轨迹规划、力控打磨、人机协作等工程落地的数学地基;理解雅可比矩阵的构造、奇异与可操作度,能帮你从算法视角快速判断一个机器人方案在物理上是否可行。

目录
  1. 可视化演示
  2. 矩阵定义与直觉
  3. 雅可比矩阵构造
  4. 速度传递
  5. 奇异位形分析
  6. 可操作度度量
  7. 力与静力学
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示深入理解速度运动学(Jaco的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

深入理解速度运动学(Jaco:雅可比矩 雅可比矩阵定义与构造方法 速度传递与关节速度求解 核心机制可视化 深入理解速度运动学(Jaco整体架构与关键组件

矩阵定义与直觉

搬运小队的领队手上有一张“协调表”:每个工人脚下踩住的位置不同,只要他肩膀轻轻一抬,钢琴就会沿某个方向挪动一丝。把所有人的微小贡献叠加起来,就得到钢琴的整体运动。雅可比矩阵就是这张协调表的数学形态:它是一个矩阵,时刻记录着“每个关节转一点,末端就动多少”,并且它会随机器人姿态变化而实时改变。

对于一台有 \(n\) 个关节的机器人,设 \(\dot{q}\) 为关节速度向量,末端执行器的速度 \(v_e\) 由正运动学对时间的导数决定。雅可比矩阵 \(J(q)\) 正是这个局部线性映射的核心:

\[

v_e = J(q)\,\dot{q}

\]

之所以说它“局部”,是因为这条映射只在当前姿态附近近似成立。钢琴在被搬运时,一旦某个工人换脚站位,整张协调表就需要重新计算——这正是机器人运动中雅可比矩阵必须随位形更新的原因。这种随时变化的特性,让它在轨迹规划、避奇异、力控中成为绕不开的核心工具。

ve=J(q) q˙v_e = J(q)\,\dot{q}
这个公式就是“协调表”的浓缩:关节速度是输入,末端速度是输出,雅可比矩阵就是那张决定输出如何组合的表。
  1. 关节速度向量每个关节每秒转多少弧度,按顺序排成的一列数字。
    q˙=[q˙1, q˙2, …, q˙n]T\dot{q} = [\dot{q}_1,\ \dot{q}_2,\ \ldots,\ \dot{q}_n]^T
  2. 雅可比矩阵正运动学函数对每个关节变量的偏导数,表达“关节微动会引起末端如何微动”。
    J(q)=∂f(q)∂q∈R6×nJ(q) = \frac{\partial f(q)}{\partial q} \in \mathbb{R}^{6\times n}
  3. 末端速度向量由线速度 \(v_x, v_y, v_z\) 与角速度 \(\omega_x, \omega_y, \omega_z\) 组成的 6 维向量。
    ve=[vx, vy, vz, ωx, ωy, ωz]Tv_e = [v_x,\ v_y,\ v_z,\ \omega_x,\ \omega_y,\ \omega_z]^T

雅可比矩阵构造

既然协调表要记录每个工人的发力贡献,那么它天然是一列一列搭起来的:第 \(i\) 列就是“第 \(i\) 个工人单独动一下时,钢琴会怎么动”。机器人的关节分成两类:旋转关节像工人转动手腕发力,移动关节像工人沿导轨推拉。两类关节在雅可比矩阵中拥有不同的“列模板”。

对于旋转关节 \(i\),其轴线方向为 \(z_i\),关节中心位置为 \(p_i\),末端位置为 \(p_e\)。转动时末端的角速度沿轴线方向,而线速度来自力臂叉乘,对应的列是:

\[

J_i = \begin{bmatrix} z_i \times (p_e - p_i) \\ z_i \end{bmatrix}

\]

移动关节则完全不同:工人只沿导轨平移,不给钢琴施加旋转。若移动方向沿 \(z_i\),该列只有线速度贡献,角速度部分为零:

\[

J_i = \begin{bmatrix} z_i \\ 0 \end{bmatrix}

\]

把 \(n\) 个关节逐列拼接,就得到完整的雅可比矩阵。通常它是 \(6 \times n\) 的长方阵:行数固定为末端的自由度(线速度 3 行 + 角速度 3 行),列数等于关节数。这张“列模板”拼出的协调表,就是后续所有速度、奇异与力分析的基础。

Ji=[zi×(pe−pi)zi]J_i = \begin{bmatrix} z_i \times (p_e - p_i) \\ z_i \end{bmatrix}
移动关节列像工人“直推”:只产生平移,不产生旋转。
  1. 平移方向 \(\displaystyle z_i\)移动关节导轨的轴向单位向量。
    ziz_i
  2. 零角速度块平移不带动末端旋转,因此角速度部分的贡献置零。
    0∈R3\mathbf{0} \in \mathbb{R}^3

速度传递

搬运团队发力的过程是逐级传导的:最靠近钢琴的工人一动,邻近的工人跟着调整,力量沿队伍一层层传到钢琴。机器人的速度也有同样的“逐杆传递”结构:从基座开始,每经过一个关节,就把该关节的速度叠加到上一连杆的速度上。

设第 \(i\) 连杆的角速度为 \(\omega_i\),线速度为 \(v_i\)。经过关节 \(i+1\) 后,新的角速度等于旧角速度加上关节轴的旋转贡献;新的线速度则等于旧线速度加上由旋转带来的牵连项:

\[

\omega_{i+1} = \omega_i + z_i\,\dot{q}_{i+1}, \qquad v_{i+1} = v_i + \omega_i \times r_{i,i+1}

\]

从基座到末端逐杆递推,等价于雅可比矩阵 \(J\) 对关节速度的“一次性合成”。实际工程中,这种递推形式尤其适合计算机迭代实现:每一层只需要小的叉乘与加法,就能高效算出末端速度。它也是理解奇异如何从几何上出现的直觉来源——当某些旋转轴方向一致时,叠加出的速度会丢失某个方向。

ωi+1=ωi+zi q˙i+1,vi+1=vi+ωi×ri,i+1\omega_{i+1} = \omega_i + z_i\,\dot{q}_{i+1}, \qquad v_{i+1} = v_i + \omega_i \times r_{i,i+1}
这条递推就像“接力传话”:每个关节只关心上一杆的速度,叠加自己的贡献后传给下一杆。
  1. 角速度叠加新连杆角速度 = 旧连杆角速度 + 本关节旋转速度。
    ωi+1=ωi+zi q˙i+1\omega_{i+1} = \omega_i + z_i\,\dot{q}_{i+1}
  2. 线速度牵连项旧角速度叉乘两杆间的位移向量,产生额外平移速度。
    ωi×ri,i+1\omega_i \times r_{i,i+1}
  3. 末端速度合成递推到第 \(n\) 杆后,就得到末端执行器的最终速度表达。
    ve=vn,ωe=ωnv_e = v_n,\quad \omega_e = \omega_n

奇异位形分析

想象搬运工全部站到钢琴的同一侧,沿一条直线发力。此时无论大家怎么使劲,钢琴都只能沿这条线前后移动,侧面方向完全无能为力。机器人学把这称为奇异位形(Singular Configuration):在这个姿态下,雅可比矩阵降秩,末端执行器至少在某个方向上失去运动能力。

数学上,对于方阵雅可比矩阵(如 6 关节机器人的 \(6 \times 6\) 矩阵),奇异条件由行列式判断:

\[

\det\big(J(q)\big) = 0

\]

典型奇异结构主要有两类:一是机械臂完全伸直或完全折叠(边界奇异),二是机械臂手腕三轴交于一点时发生内部奇异。奇异位形本身不是“死机”,却会让末端在某个方向上无法运动,甚至导致关节速度爆炸。这就是为什么轨迹规划器通常要主动避开奇异区域,或者利用冗余关节重新分配运动。

det⁡(J(q))=0\det\big(J(q)\big) = 0
行列式为零,意味着协调表“坍缩”成一条线:某些方向无论怎么分配关节速度,末端都纹丝不动。
  1. 行列式含义方阵行列式表示映射在空间中的体积缩放因子。
    det⁡(J)\det(J)
  2. 奇异条件体积缩放因子为零,矩阵不可逆,反解速度时会出现无穷大关节速度。
    det⁡(J)=0  ⟺  rank(J)<6\det(J) = 0 \iff \text{rank}(J) < 6
  3. 损失的自由度雅可比矩阵的零空间非平凡,存在非零关节速度使末端速度为 0。
    ∃q˙≠0,J q˙=0\exists \dot{q} \ne 0,\quad J\,\dot{q} = 0

可操作度度量

既然奇异会让团队“瘫掉一个方向”,工程上就需要一个指标来量化“当前姿态离奇异有多远、灵活性有多好”。搬运钢琴时,如果团队站位开合得当,钢琴可以向任意方向移动;如果站位挤成一线,可动方向就只剩下一条。Yoshikawa 提出的可操作度(Manipulability)正是衡量这种“各方向运动能力”的标尺。

最直观的刻画是速度椭球:假设关节速度被约束为单位大小 \(\|\dot{q}\| \le 1\),末端速度可能到达的范围构成一个椭球。椭球越接近球形,说明各方向速度能力越均匀;椭球越扁,说明某些方向的速度能力大幅萎缩。定义最小奇异值作为可操作度的代表:

\[

w = \sigma_{\min}(J)

\]

与之配套的常用指标是条件数 \(\kappa = \sigma_{\max}/\sigma_{\min}\)。条件数越大,椭球越扁;当 \(\kappa \to \infty\) 时即趋向奇异。实际应用中,可操作度帮助规划器在运行前预判危险姿态,条件数则常用于评估末端速度/力输出的“均衡性”。

w=σmin⁡(J)w = \sigma_{\min}(J)
最小奇异值像“最短的那根木桶板”:它决定了末端在最不灵活的方向上还能保留多少速度能力。
  1. 奇异值分解把雅可比矩阵分解为旋转与缩放操作。
    J=U Σ VTJ = U\,\Sigma\,V^T
  2. 对角元素\(\Sigma\) 对角线上的奇异值 \(\sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_n\) 是各主轴方向的缩放倍数。
    Σ=diag(σ1,σ2,…,σn)\Sigma = \text{diag}(\sigma_1, \sigma_2, \ldots, \sigma_n)
  3. 最小奇异值取可操作度最小奇异值越小,椭球越扁。
    w=σmin⁡(J)w = \sigma_{\min}(J)

力与静力学

速度关系还有一个绝妙的对偶:搬钢琴时,如果钢琴侧面被人推了一把,每个工人肩上的负担会立即改变;反之,工人同时发力,钢琴也会受到一个合力。机器人学中,末端执行器受到的力 \(F\) 与关节驱动力矩 \(\tau\) 之间,恰好由雅可比矩阵的转置建立映射:

\[

\tau = J^T F

\]

这个对偶关系是力控算法的基石:机械臂打磨、装配、人机协作时,我们希望末端接触力保持恒定。通过测量或估计末端力 \(F\),用 \(J^T\) 实时计算出关节力矩补偿,就能实现柔顺控制。值得注意的是,在奇异位形附近,某些方向上的力映射会变得极不均衡——搬运工站成一线时,侧面推钢琴的力量根本无法有效分配到工人肩上。

τ=JTF\tau = J^T F
这张“分账表”告诉你:末端承受一个外力时,每个关节需要额外承担多少扭矩。
  1. 末端力向量作用在末端执行器上的力与力矩。
    F=[fx, fy, fz, mx, my, mz]TF = [f_x,\ f_y,\ f_z,\ m_x,\ m_y,\ m_z]^T
  2. 雅可比转置把 6 维空间的作用力投影到 \(n\) 个关节轴上。
    JT∈Rn×6J^T \in \mathbb{R}^{n \times 6}
  3. 关节力矩各关节驱动器需要输出的扭矩。
    τ=[τ1, τ2, …, τn]T\tau = [\tau_1,\ \tau_2,\ \ldots,\ \tau_n]^T

AI 应用场景

工业机器人轨迹跟踪与奇异规避

阶段:运动规划与轨迹优化

解决的问题:传统焊接、喷涂机器人沿复杂路径运动时,如果规划器不了解雅可比矩阵,容易让机械臂闯入奇异位形,导致某个方向速度失控、关节电机过流。利用可操作度与条件数,规划器能让轨迹自动绕开低灵活度区域。

具体案例:某汽车产线喷涂机器人对车门曲面进行连续喷涂。规划阶段在每个路径点计算雅可比矩阵的条件数,当条件数超过阈值时,通过冗余关节重新调整姿态,保证末端始终保有均匀的速度能力,喷涂厚度一致性从 78% 提升到 94%。

力控打磨与装配

阶段:力觉控制与柔顺策略

解决的问题:传统打磨依赖人工示教固定轨迹,工件公差波动大时易出现过磨或虚磨。利用 \(\tau = J^T F\),机器人实时感知末端接触力并换算成关节力矩补偿,实现恒力打磨。

具体案例:3C 电子产品外壳打磨中,末端安装六维力传感器,控制周期内以雅可比转置把目标接触力映射为关节力矩,叠加到位置环上,使打磨力波动从 ±5N 降至 ±0.8N,良率显著提升。

人机协作中的外力检测

阶段:安全交互控制

解决的问题:协作机器人在运行中遇到人推挤时,需要快速判断外力大小并柔顺退让。利用雅可比矩阵的动力学映射,可以从关节力矩残差中估计末端等效外力。

具体案例:某实验室协作机械臂装配电路板时,操作员用手轻轻引导机械臂调整位置。控制系统通过 \(J^T\) 反向估计末端力,当外力超过安全阈值时立即切换到柔顺跟随模式,引导过程中无冲击感。

Python 演示

python54 行
import numpy as np L = [1.0, 0.8, 0.4] def forward_kinematics(q):    # q: [q1, q2, q3],相对基座的角度    theta = np.cumsum(q)    x = sum(L[i] * np.cos(theta[i]) for i in range(3))    y = sum(L[i] * np.sin(theta[i]) for i in range(3))    return np.array([x, y]) def jacobian_planar(q):    # 平面3连杆机械臂的 2x3 雅可比矩阵    theta = np.cumsum(q)    J = np.zeros((2, 3))    for i in range(3):        dx = sum(L[k] * np.cos(theta[k]) for k in range(i, 3))        dy = sum(L[k] * np.sin(theta[k]) for k in range(i, 3))        J[0, i] = -dy        J[1, i] = dx    return J def condition_number(J):    return np.linalg.cond(J) def manipulability(J):    # 最小奇异值作为可操作度指标    s = np.linalg.svd(J, compute_uv=False)    return s[-1] def force_to_torque(J, F):    # 静力学对偶:tau = J^T F    return J.T @ F if __name__ == "__main__":    q = np.array([0.5, 1.2, 0.8])    p = forward_kinematics(q)    J = jacobian_planar(q)    print("末端位置:", np.round(p, 4))    print("雅可比矩阵:\n", np.round(J, 4))    print("条件数:", round(condition_number(J), 4))    print("可操作度(最小奇异值):", round(manipulability(J), 4))     v_des = np.array([0.5, 0.0])    qdot = np.linalg.pinv(J) @ v_des    print("末端速度", v_des, "对应的关节速度:", np.round(qdot, 4))     F = np.array([10.0, 5.0])    tau = force_to_torque(J, F)    print("末端力 F 对应的关节力矩:", np.round(tau, 4))     q_sing = np.array([0.0, 0.0, 0.0])    Js = jacobian_planar(q_sing)    print("完全伸直时条件数:", round(condition_number(Js), 4))
目的:演示平面机械臂雅可比矩阵的构造、条件数/可操作度计算,以及力-力矩对偶,是理解速度运动学的最小可运行样例。
  1. forward_kinematics(q)输入 3 个关节角度,输出末端位置,是雅可比矩阵数值构造的基础
  2. J[0, i] = -dy; J[1, i] = dx按旋转关节列公式 \(z_i \times (p_e - p_i)\) 填充雅可比矩阵的每一列
  3. np.linalg.svd(J, compute_uv=False)对雅可比矩阵做奇异值分解,取最小奇异值作为可操作度
  4. np.linalg.pinv(J) @ v_des用伪逆求解冗余机械臂的关节速度,体现雅可比矩阵在速度反解中的作用
  5. J.T @ F用雅可比转置把末端力映射为关节力矩,即力控对偶
  6. np.linalg.cond(Js)在完全伸直位形计算条件数,验证奇异位形附近条件数急剧增大

常见误区

误区我把雅可比矩阵当作像变换矩阵一样的常数,写进代码里就永远用它,以为末端速度和关节速度始终满足同一张表。

正解雅可比矩阵 \(J(q)\) 是位形的函数,每个时刻都要根据当前关节角重新计算。以搬钢琴为例,工人一挪脚步,整个协调表就变了。两连杆手臂伸直与弯曲时,同一关节速度对应的末端速度完全不同,这正是矩阵必须实时更新的原因。

为何常见:很多教材先展示雅可比矩阵的最终数值,初学者容易误以为它是一个固定矩阵,而忽略了偏导发生在“当前位形”这一语义。

误区一听到“奇异”就联想到机器人完全锁死,认为所有关节都无法转动、所有运动都停止。

正解奇异只是某个方向上丢失运动能力,其他方向仍然正常。搬运工站成一线时,钢琴沿线的方向照样能推,只是侧面方向无能为力。机械臂完全伸直时,末端无法沿手臂轴线方向继续伸长,但仍可正常旋转。

为何常见:“奇异”一词听上去像故障,加上矩阵不可逆在数学上又和“无解”绑定,容易让人放大为完全失效。

误区我认为可操作度越高,机械臂末端定位就越准,所以只要把可操作度调到最大就能提升精度。

正解可操作度衡量的是速度/力传递的各向同性程度,与绝对定位精度不是一回事。椭球越圆,说明各方向运动能力均匀,但它并不直接反映编码器分辨率、结构刚度等定位精度因素。好比团队站位灵活不等于每一步迈得精确。

为何常见:人的直觉容易把“灵活”和“准确”混为一谈,实际上二者在机器人学中是两个维度的指标。

误区我只见过 \(6 \times 6\) 的雅可比矩阵,以为只有方阵才能做速度反解和奇异分析。

正解雅可比矩阵通常是 \(6 \times n\),\(n\) 可大于、等于或小于 6。冗余机械臂 \(n > 6\) 时用伪逆求解;欠驱动情况下用最小二乘或其它优化方法。奇异判定也可用秩 \(\text{rank}(J)<\min(m,n)\) 代替行列式。

为何常见:教材常以 6 轴工业机器人的方阵雅可比举例,导致“一定要方阵”的思维惯性。

面试题

Q1. 雅可比矩阵将什么映射到末端速度?

单选题 · easy

  • A.关节角度到末端位置
  • B.关节速度到末端速度← 正确答案
  • C.关节力矩到末端力
  • D.末端力到关节力矩

答案:B。雅可比矩阵 \(J(q)\) 的核心定义是 \(v_e = J(q)\dot{q}\),即关节速度到末端速度的线性映射。选项 A 是正运动学的映射,C 和 D 是静力学对偶中的映射,都不是雅可比矩阵的主定义。

Q2. 旋转关节对应的雅可比矩阵列中,线速度部分的表达式是?

单选题 · easy

  • A.关节轴方向的单位向量
  • B.轴方向叉乘末端相对位置← 正确答案
  • C.末端相对位置叉乘轴方向
  • D.末端位置与关节位置的差

答案:B。旋转关节列的线速度贡献是力臂向量 \(p_e - p_i\) 与轴向量 \(z_i\) 的叉乘 \(z_i \times (p_e - p_i)\),要求轴向量在前。选项 C 顺序反了,方向就会反;D 只给了力臂,缺少转动轴的信息。

Q3. 移动关节(prismatic)对应的雅可比矩阵列中,角速度部分为?

单选题 · easy

  • A.关节轴线方向向量
  • B.全零的 3 维向量← 正确答案
  • C.末端相对关节位置
  • D.关节角速度数值

答案:B。移动关节只沿轴方向平移,不产生旋转,因此角速度块为零。A 是线速度部分的内容,C 是力臂向量,D 与列结构无关。

Q4. 6 关节机器人的雅可比矩阵行列式为零,说明?

单选题 · mid

  • A.机械臂完全停止运动
  • B.某方向末端速度难实现← 正确答案
  • C.可以实现所有方向运动
  • D.所有关节速度必然为零

答案:B。行列式为零意味着雅可比矩阵降秩,末端至少在一个方向上失去速度能力,但其他方向仍可运动。A 过度理解为完全停转,D 也不对,因为零空间里可能存在非零关节速度。

Q5. 可操作度指标主要用于?

单选题 · mid

  • A.衡量末端定位的精度
  • B.衡量关节力矩的大小
  • C.衡量接近奇异位的程度← 正确答案
  • D.衡量关节速度的上限

答案:C。可操作度通过速度椭球或最小奇异值衡量末端运动能力的各向同性程度,越小说明越接近奇异位形。A 是精度概念,B 是静力学概念,D 是关节驱动限制概念,都与可操作度不同。

Q6. 静力学对偶 \(\tau = J^T F\) 中,\(\tau\) 代表?

单选题 · mid

  • A.末端执行器的速度
  • B.关节角的加速度
  • C.关节的驱动力矩← 正确答案
  • D.关节的角速度大小

答案:C。\(\tau = J^T F\) 把末端力(含力矩)映射到关节驱动力矩,是力控的基础。A 是速度量,B 是加速度量,D 是关节速度,都不在静力学映射的输出端。

Q7. 2 自由度平面机械臂的雅可比矩阵条件数非常大,说明?

单选题 · hard

  • A.关节达到物理运动极限
  • B.末端速度椭球接近正圆形
  • C.某些方向运动能力大幅下降← 正确答案
  • D.机械臂完全无法进行运动

答案:C。条件数是最大与最小奇异值之比,值越大说明速度椭球越扁,末端在某个方向上的速度能力大幅萎缩。A 是关节限位问题,B 恰恰相反,D 把局部退化夸大为整体失效。

Q8. 机械臂处于奇异位形时,以下说法正确的是?

单选题 · hard

  • A.雅可比矩阵各行线性无关
  • B.雅可比矩阵零空间存在非零解← 正确答案
  • C.雅可比矩阵的秩等于关节数
  • D.机器人末端仍可任意方向运动

答案:B。奇异时矩阵降秩,零空间非平凡,即存在非零关节速度组合使末端速度为零。A 与降秩矛盾,C 也矛盾,D 与奇异时丢失方向能力的结论相反。

Q9. 关于雅可比矩阵,以下说法正确的有?

多选题 · mid

  • A.雅可比矩阵随位形变化← 正确答案
  • B.映射关节速度到末端速度← 正确答案
  • C.不随参考坐标系改变
  • D.奇异位形时矩阵可能降秩← 正确答案

答案:ABD。雅可比矩阵是位形的函数且描述关节速度到末端速度的映射;奇异时矩阵降秩。选项 C 错误,因为雅可比矩阵的列向量依赖参考坐标系,改变参考系会改变矩阵表达。

Q10. 速度传递中,第 \(i+1\) 连杆的角速度取决于哪些量?

多选题 · hard

  • A.上一连杆的角速度向量← 正确答案
  • B.关节轴线的方向矢量← 正确答案
  • C.该关节转动的角速度值← 正确答案
  • D.末端执行器的负载质量

答案:ABC。由递推式 \(\omega_{i+1} = \omega_i + z_i \dot{q}_{i+1}\),新角速度由上一杆角速度、关节轴线方向和关节角速度共同决定。D 负载质量属于动力学范畴,不参与速度传递。