Robotics-雅可比矩阵 - 从关节运动到末端速度、力与控制
机械臂的正运动学回答一个问题:给定各关节的位置,末端在哪里、朝向哪里?
但让机器人真正动起来,还需要回答另一组问题:每个关节以多快的速度运动,末端才能向指定方向移动?同样的关节速度,为什么在手臂伸直和弯曲时产生不同的末端速度?为什么有些姿态下,末端明明只需要缓慢移动,某个关节却要转得很快?
这些问题,都可以从雅可比矩阵开始理解。
雅可比矩阵描述的是:在当前关节配置下,关节的微小变化或瞬时速度,怎样影响所选任务坐标。
它不是一张固定的“换算表”,也不是相邻连杆齐次变换矩阵的另一种名字。它是正运动学在当前配置附近的局部线性关系。
本文以固定基座、刚性连杆、独立单自由度关节的串联机械臂为主要对象。公式采用列向量;角度求导默认使用弧度;没有明确写参考系时,同一公式中的向量均在同一坐标系下表达。
阅读路线与符号
建议分三遍阅读:第一遍看第 1—5 节,建立雅可比的直觉;第二遍看第 6—12 节,理解角速度、坐标表示和速度递推;第三遍看第 13—19 节,掌握逆解、奇异性、加速度和力映射。
| 符号 | 含义 |
|---|---|
| \(\mathbf q\) | 独立关节位置变量组成的向量 |
| \(\dot{\mathbf q},\ddot{\mathbf q}\) | 关节速度、关节加速度 |
| \(\mathbf X\) | 选定的任务坐标,可以只描述位置,也可以包含姿态参数 |
| \(J_{\mathbf X}\) | 将关节速度映射到任务坐标变化率的雅可比 |
| \(J_g\) | 将关节速度映射到末端线速度和角速度的几何雅可比 |
| \(\mathbf p,\mathbf v,\boldsymbol\omega\) | 位置、线速度、角速度向量 |
| \({}^{A}R_B\) | 将 B 坐标系表达的向量转换为 A 坐标系表达的旋转矩阵 |
| \({}^{A}\mathbf v_{P/B}\) | P 相对 B 的速度,用 A 的坐标轴表达 |
| \([\mathbf a]_\times\) | 向量 \(\mathbf a\) 对应的叉乘矩阵 |
1. 从一个导数开始:雅可比究竟在描述什么?
先不考虑机器人。假设一个输入 \(q\) 决定一个输出 \(x\):
如果输入只改变一点点,那么输出变化可以近似为:
导数告诉我们:在当前输入位置,输入变化一点,输出大约改变多少。
机械臂只不过有多个输入和多个输出。输入是关节变量,输出是末端任务坐标:
对每个输出分别求各输入的偏导,把结果排成矩阵:
于是:
微分记作 \(d\mathbf X=J_{\mathbf X}d\mathbf q\)。课件中的 \(\delta\mathbf X=J\delta\mathbf q\) 也常用于表达这种一阶变化关系。对有限位移应保留近似号;关节变化很大时,不能一直用起点处的同一个雅可比去乘总变化量。
如果正运动学光滑且没有显式时间依赖,对时间使用链式求导就得到精确的瞬时速度关系:
它不是说整条非线性运动轨迹变成了直线,而是说每一时刻的速度满足这个线性映射。
2. \(m\) 和 \(n\) 分别是什么?为什么雅可比不一定是 6×6?
在公式中:
| 符号 | 由什么决定 | 具体含义 |
|---|---|---|
| \(n\) | 机构本身及独立坐标的选取 | 独立关节变量数 |
| \(m\) | 你选择的任务和表示方式 | 任务坐标向量的分量数 |
对于普通串联 R/P 机构,每个关节一个自由度,因此 \(n\) 就是关节数。对于存在闭环约束、耦合或多自由度关节的机构,则不能机械地数关节外壳,应该数独立变量。
例如 RPRR 机构:
只研究末端三维位置,\(m=3\),雅可比为 \(3\times4\);研究完整线速度和角速度,几何雅可比为 \(6\times4\)。
把末端写成六维量,不代表四关节机构能够独立控制全部六个方向。 可实现的瞬时运动维数由雅可比的秩决定:
还有一种容易混淆的情况:使用位置加四元数时,任务向量可以有 7 个分量;使用位置加旋转矩阵的九个元素时,可以有 12 个分量。但其中存在约束,空间刚体位姿仍只有 6 个独立自由度。
3. 机器人模型确定后,雅可比是固定的还是变化的?
通常是公式固定、数值变化。
连杆长度、关节类型、工具安装关系等确定后,我们可以推导出 \(J(\mathbf q)\) 的表达式。机器人运动过程中,当前关节角和伸缩量改变,代入表达式得到的矩阵数值通常也改变。
| 内容 | 是否随运动变化 |
|---|---|
| 刚性连杆长度、固定安装关系 | 不变 |
| 给定任务和参考系下的雅可比表达式 | 不变 |
| 当前关节配置 \(\mathbf q\) | 变化 |
| 当前矩阵数值 \(J(\mathbf q)\) | 通常变化 |
| 末端速度 \(J\dot{\mathbf q}\) | 受配置和关节速度共同影响 |
因此,雅可比不直接依赖关节速度或加速度;它主要由当前配置和模型、任务定义决定。它的时间导数 \(\dot J\) 则会涉及关节速度,后面讨论加速度时会用到。
这里说“关节配置”比“末端姿态”更准确。同一个末端位姿可能对应肘上、肘下等不同关节配置,各自的雅可比可能不同。
也有常数雅可比。例如,理想 XYZ 直线平台的三个关节方向固定且彼此正交,若关节位移直接等于末端的三个位置坐标,那么 \(J=I_3\)。
4. 怎样读懂雅可比的一行、一列和一个元素?
将矩阵按列写成:
则:
- 一个元素 \(J_{ij}\):第 \(j\) 个关节变量对第 \(i\) 个任务坐标的局部影响。
- 一行:所有关节分别如何影响同一个任务坐标。
- 一列:只让某个关节运动时,它对全部任务坐标变化率的贡献系数。
例如,把第 2 关节速度设为单位速度,其他关节速度设为零,输出恰好就是第 2 列。所谓“单位速度”,对于 R 关节是 \(1\,\mathrm{rad/s}\),对于 P 关节是 \(1\,\mathrm{m/s}\),应根据实际单位解释。
每一列都在描述同一个目标点或同一个末端任务,只是贡献来自不同关节。
5. 第一个完整例子:平面 2R 的直接求导法
设两根连杆长为 \(l_1,l_2\);\(\theta_1\) 是第一杆相对基准轴的角度,\(\theta_2\) 是第二杆相对第一杆的角度。第二杆的绝对朝向为 \(\theta_1+\theta_2\)。
末端位置:
为简化书写,记 \(s_1=\sin\theta_1\)、\(c_1=\cos\theta_1\)、\(s_{12}=\sin(\theta_1+\theta_2)\)、\(c_{12}=\cos(\theta_1+\theta_2)\)。
分别对两个角求偏导:


因此:
如果还关心末端的平面朝向 \(\phi=\theta_1+\theta_2\),就增加一行:
这个 \(3\times2\) 矩阵可以描述三个输出变化率,但只有两个独立输入,所以不能任意指定三个输出。
代入一组数字
设 \(l_1=l_2=1\,\mathrm m\),当前角度为 \(\theta_1=30^\circ\)、\(\theta_2=60^\circ\),关节速度为:
代入时角度按弧度参与计算,得到:
同时 \(\dot\phi=0.5-0.2=0.3\,\mathrm{rad/s}\)。这就是把关节速度换算为末端运动的完整过程。
6. 必须区分:任务坐标变化率与真实角速度
到目前为止,雅可比是对选定坐标直接求导得到的。但是,三维姿态有一个特殊之处:三个欧拉角的变化率,一般不等于角速度向量的三个分量。
线速度 \(\mathbf v\) 描述指定点的瞬时运动;角速度 \(\boldsymbol\omega\) 描述刚体绕哪根瞬时轴、以多快的速率旋转。
定义几何雅可比:
其中 \(J_v,J_\omega\) 都是 \(3\times n\),完整的 \(J_g\) 是 \(6\times n\)。即使机构只能做平面运动,也可以写成六行形式,其中部分行恒为零;也可以只保留所需的非零运动分量。
| 比较项 | 几何雅可比 | 对任务坐标求导的雅可比 |
|---|---|---|
| 输出 | 指定末端点的线速度与刚体角速度 | 所选位置、姿态参数的变化率 |
| 姿态部分 | 三维角速度向量 | 欧拉角、四元数等参数的变化率 |
| 行数 | 完整形式为 6 | 取决于任务表示 |
| 主要依赖 | 配置、几何、参考系和目标点 | 还依赖坐标参数化方式 |
本文把后一类统一记为 \(J_{\mathbf X}\);采用位置加三个姿态参数时,通常称为解析雅可比。几何雅可比与解析雅可比的区分也见 Robotics Toolbox 文档。
7. 两种雅可比如何连接?\(J_{\mathbf X}=EJ_g\)
设任务坐标分为位置表示 \(\mathbf x_p\) 与姿态表示 \(\mathbf x_R\):
按本文章和课件的转换方向定义:
代入几何雅可比,得到:
这就是“关节速度 → 线速度与角速度 → 任务坐标变化率”的两级映射。对应课件的矩阵关系可见 Stanford Jacobian 讲义第 4 页。
位置取同一固定参考系下的笛卡尔坐标时,\(E_p=I_3\)。姿态转换则必须明确参数顺序、旋转约定和角速度表达坐标系。
| 任务表示 | \(E_p\) | \(E_R\) 尺寸 | \(J_{\mathbf X}\) 尺寸 |
|---|---|---|---|
| 笛卡尔位置 + 三个欧拉角 | \(I_3\) | \(3\times3\) | \(6\times n\) |
| 笛卡尔位置 + 单位四元数 | \(I_3\) | \(4\times3\) | \(7\times n\) |
| 笛卡尔位置 + 旋转矩阵九元素 | \(I_3\) | \(9\times3\) | \(12\times n\) |
四元数与旋转矩阵形式的输出包含约束,不能把所有分量的目标变化率任意独立指定。三个欧拉角的转换则需要避开表示奇异点。
有的教材先定义 \(\boldsymbol\omega=A(\mathbf x_R)\dot{\mathbf x}_R\)。对于三个姿态角,在 \(A\) 可逆的区域,本文章的 \(E_R=A^{-1}\)。因此,看到不同写法时要先看映射方向,不能只凭矩阵名称判断。
单杆圆周运动:同一个速度,不同的坐标变化率
设平面单杆长 \(l=2\,\mathrm m\),当前 \(q=30^\circ\),\(\dot q=0.5\,\mathrm{rad/s}\)。末端的平面几何速度为:
若任务坐标为 \([x,y,\phi]^T\),则这三个分量直接对应 \([\dot x,\dot y,\dot\phi]^T\)。这里 \(\dot\phi=\omega_z\) 是平面单轴转动的性质。
如果位置改用极坐标,任务坐标取 \([r,\beta,\phi]^T\),那么在 \(r>0\) 时:
半径不变,位置方位角与杆的朝向角都在变化。物理运动完全相同,只是表示方式改变了。
8. 构造几何雅可比的基础:\(\mathbf v=\boldsymbol\omega\times\mathbf r\)
设刚体绕固定点 O 旋转,P 是固连在刚体上的点,\(\mathbf r_{OP}\) 为从 O 指向 P 的向量,则:
为什么是叉乘?点到旋转轴的垂直距离为 \(\rho=\|\mathbf r_{OP}\|\sin\phi\),圆周运动速率为 \(\|\boldsymbol\omega\|\rho\),恰好等于叉乘的模。叉乘方向又满足右手定则,沿圆周切线。
例如 \(\boldsymbol\omega=[0,0,2]^T\,\mathrm{rad/s}\),\(\mathbf r_{OP}=[1,0,0]^T\,\mathrm m\),则 \(\mathbf v_P=[0,2,0]^T\,\mathrm{m/s}\)。
叉乘顺序不能颠倒:
把叉乘写成矩阵乘法
对任意三维向量 \(\mathbf a=[a_x,a_y,a_z]^T\),定义:
于是:
课件把它写成 \(\widehat{\mathbf a}\)。这里的“帽子”表示反对称矩阵,不表示单位向量。它也不是旋转矩阵;一个描述叉乘运算,另一个描述有限旋转。
记忆方法是:叉乘左边的向量变成矩阵,右边保持为列向量。
9. 同时平移与旋转:三个速度贡献从哪里来?
前面的公式默认 O 固定。如果移动坐标系 B 相对 A 既平移又旋转,同时 P 还能相对 B 自己移动,那么:
| 项 | 物理来源 | 小车与乘客的类比 |
|---|---|---|
| \({}^A\mathbf v_{B/A}\) | B 原点的平移 | 小车参考点前进 |
| \({}^AR_B\,{}^B\mathbf v_{P/B}\) | P 相对 B 自己移动 | 乘客在车上行走 |
| 角速度叉乘位置向量 | B 旋转带动 P | 小车转弯使偏离参考点的位置获得速度 |
这条式子可以由位置关系直接推导。令 B 原点在 A 中的位置为 \({}^A\mathbf p_B\):
求导时有三项:原点位置变化、相对位置变化、旋转矩阵变化。结合:
就得到上面的速度公式。
如果 P 固定在 B 上,相对速度项为零。若 B 原点也固定,便进一步回到纯旋转公式。旋转矩阵在这里用于统一向量的表达坐标系;真正的旋转速度贡献由叉乘项给出,二者不能混为一谈。
10. 速度传播:从基座一路递推到末端
对机械臂的每一级,都可以把上一节中的 A、B、P 换成相邻连杆与原点。
先看适用于一般原点选择的关系。所有量统一用基座表达:
如果按课件的方式建系,第 \(i+1\) 个关节轴为 \(z_{i+1}\),原点 \(O_{i+1}\) 在该轴上,便可写成:
这里 \(\mathbf P_{i+1}\) 是从 \(O_i\) 指向 \(O_{i+1}\) 的位移,而不是从基座指向下一原点的位置。
对于转动关节,\(\dot d_{i+1}=0\);对于移动关节,\(\dot\theta_{i+1}=0\)。转动关节不直接移动它轴上的原点,但会改变下一连杆的角速度,从而在后续的叉乘项中影响离轴的点。
这个简式有建系前提,不能只记公式、不看原点位置。 如果原点偏离当前关节轴,当前转动也可能产生相对线速度项。
每一级都用自己的坐标系表达
工程计算中常保存 \({}^{i}\mathbf v_i\)、\({}^{i}\boldsymbol\omega_i\),即该连杆相对固定基座的速度,但以自身轴向给出分量。递推时需要转换坐标系:
其中 \(\mathbf e_z=[0,0,1]^T\);\({}^{i+1}R_i=({}^{i}R_{i+1})^T\),方向不要用反。
对于固定基座,从 \(\mathbf v_0=\mathbf0\)、\(\boldsymbol\omega_0=\mathbf0\) 开始,便可一路计算到末端。移动基座则必须加入基座本身的初始运动。
这里的“传播”是计算上的递推,不是说前面关节的运动要经过一段时间才传到后面。
11. 平面 3R 完整推导:把每一级贡献整理成雅可比
现在把递推方法完整用于三连杆机构。设 \(P_1\) 为固定的第一关节点,\(P_2,P_3\) 为后两个关节点,E 为第三连杆末端,连杆长度分别为 \(l_1,l_2,l_3\)。
所有关节轴均沿基座 z 轴正方向,三个关节角都是相对前一连杆的角度。记:
进一步记 \(s_{123}=\sin\theta_{123}\)、\(c_{123}=\cos\theta_{123}\),其他简写类似。
第一步:第一关节点不动,第一连杆转动
固定点的线速度为零,与连杆角速度非零并不矛盾。
第二步:求 \(P_2\) 的线速度
关节 2 不会改变其自身轴上的 \(P_2\),所以这里没有 \(\dot\theta_2\)。
第三步:求 \(P_3\) 的线速度
第二连杆既受到关节 1 带动,又受到关节 2 自身转动影响:
因此:
这里的第二项必须乘总角速度 \(\dot\theta_1+\dot\theta_2\),不能只乘 \(\dot\theta_2\),否则会漏掉第一关节对第二杆的带动。
第四步:继续算到第三杆末端 E
所以:
第五步:按三个关节速度收集系数
任务取 \(\mathbf X=[x_E,y_E,\phi_E]^T\),其中 \(\phi_E=\theta_{123}\),则:
这个例子中 \(\dot\phi_E=\omega_z\),因此任务雅可比与只保留 \(v_x,v_y,\omega_z\) 三行的几何雅可比相同。
| 列 | 包含哪些连杆长度 | 原因 |
|---|---|---|
| 第 1 列 | \(l_1,l_2,l_3\) | 关节 1 带动其后全部连杆 |
| 第 2 列 | \(l_2,l_3\) | 关节 2 带动第二、第三连杆 |
| 第 3 列 | \(l_3\) | 关节 3 只带动第三连杆 |
也可以对 \(x_E=l_1c_1+l_2c_{12}+l_3c_{123}\)、\(y_E=l_1s_1+l_2s_{12}+l_3s_{123}\) 和 \(\phi_E=\theta_{123}\) 直接求导,会得到完全相同的结果。
至此,直接求导法与速度递推法就连在一起了:一个从位置方程出发,一个从刚体速度关系出发,最终描述的是同一个运动。
12. 不逐级展开,也能直接写出每一列
对于独立单自由度串联关节,在统一参考系下,设:
- \(\mathbf a_i\):第 \(i\) 个关节的单位轴向;
- \(\mathbf o_i\):该轴上的任一点;
- \(\mathbf p_E\):所选末端点的位置。
则几何雅可比第 \(i\) 列为:
转动关节上半部分来自叉乘速度,下半部分来自绕轴转动;移动关节上半部分是沿轴的平移,下半部分为零。
为什么轴上的任一点都可以用?沿轴移动 \(\mathbf o_i\) 只会给位置差增加一个平行于 \(\mathbf a_i\) 的向量,而该向量与轴向的叉乘为零。
若用 D-H 数据提取关节轴,必须分清编号:
| 约定 | 第 \(i\) 个关节轴 |
|---|---|
| 标准 D-H | \(z_{i-1}\) |
| Craig 改进 D-H | \(z_i\) |
为避免混乱,上面的通用公式使用 \(\mathbf a_i\) 表示“物理上的第 \(i\) 关节轴”,不绑定任何一种 D-H 下标。
所有列最后水平拼接:
相邻连杆的变换能连乘,雅可比也能连乘吗?
通常不能这样做。齐次变换表示相邻坐标系的位姿关系,可以沿链连乘;末端雅可比的每一列描述各关节对同一个末端的贡献,要按列拼接,再乘关节速度相加。
当然,复合函数的雅可比可以按链式法则相乘,例如前面的 \(J_{\mathbf X}=EJ_g\)。但这不意味着可以任意把几个相邻连杆的雅可比相乘,得到机械臂末端雅可比。必须先确认它们的输入、输出是否真的构成函数复合。
13. 换表达坐标系,与换末端参考点,是两件事
同一个末端点,只换向量的表达坐标系
若递推结果在末端坐标系表达,换成基座坐标系时:
对应的几何雅可比也左乘同样的块对角矩阵。这里只换表达轴向,线速度仍属于同一个点 E,所以不加平移项。
从法兰原点换到工具尖端
若 F 与 E 固连在同一个末端刚体上,\(\mathbf r_{FE}\) 从法兰原点指向工具尖端,则:
所以在相同表达坐标系下:
这说明“同一台机械臂的雅可比”还需要说明是针对哪个点。法兰原点与工具尖端的线速度雅可比通常不同。
进阶阅读时还会遇到空间旋量、体旋量及其伴随变换。某些教材采用 \([\boldsymbol\omega;\mathbf v]\) 的排列,而且空间旋量的线性部分不一定就是末端原点的线速度。使用别人的公式前,应先核对定义,不能只看它也是一个六维向量。
14. 能正算速度,也能反求速度,但反求不一定有唯一解
正向计算很直接:
反向则是在求解线性方程:
| 情况 | 结果 |
|---|---|
| \(J\) 是可逆方阵 | 任意目标输出速度有唯一关节速度解 |
| 目标速度不在 \(J\) 的列空间内 | 无精确解 |
| 有精确解且 \(J\) 有非零零空间 | 存在多个关节速度解 |
因此,不是“关节数比任务维数多就一定可行”,也不是“关节数比任务维数少就全部不可行”。要看目标方向是否落在列空间中,以及矩阵的秩。
常用伪逆给出:
它是在所采用的欧氏度量下,最小范数的最小二乘解。目标可实现时,能得到精确匹配;不可实现时,只能尽量逼近。
如果有冗余,还可以写成:
第二项处于零空间,不改变瞬时任务速度,可用于调整手肘、远离关节限位等。有限时间内仍需不断更新配置和雅可比,不能把“瞬时不影响末端”理解为一次大幅关节位移也完全不影响。
有速度限制、碰撞约束时,常需要带约束优化,而不只是求一个伪逆。
15. 奇异配置:哪些方向突然无法产生?
对于给定机构和任务,若雅可比的秩下降到低于它通常能够达到的最大值,就发生了运动学奇异。
不是所有矩阵“秩小于 6”都叫奇异。一个只研究二维位置的任务最多只有秩 2,这本身很正常。奇异性的核心是可实现的瞬时运动方向比通常少了。这与 Modern Robotics 对奇异性的说明一致。
用平面 2R 看清楚
对于前面的二维位置雅可比:
假设杆长非零,当 \(\theta_2=0\) 或 \(\pi\) 时,两杆共线,二维位置雅可比降秩。
例如两杆沿 x 正方向完全伸直:
无论怎样组合瞬时关节速度,都有 \(\dot x=0\)。此刻只能产生 y 方向的一阶位置变化。
这不代表机械臂永远不能改变 x 坐标。它可以先弯曲,再产生不同方向的运动;从伸直位置开始的小角度弯曲也会产生二阶的 x 位移。雅可比说的是当前瞬间的一阶关系。
这个例子也提醒我们:奇异性与任务有关。如果把平面朝向也加入,2R 的 \(3\times2\) 雅可比在 \(l_1\ne0\) 时始终具有列秩 2。它本来就不能任意控制三个输出,不能把二维位置雅可比的降秩结论原封不动套过去。
机械臂奇异,与欧拉角表示奇异不同
- 机械臂奇异:几何映射的可实现方向减少。
- 表示奇异:例如欧拉角出现万向节锁,姿态参数本身无法正常描述某些变化,即使机械臂几何运动能力没有退化。
只看解析雅可比里的异常数值,可能混淆这两种问题。
为什么接近奇异点时,反求速度会变得很大?
奇异值分解 \(J=U\Sigma V^T\) 可以理解为把映射分解为若干方向上的伸缩。某个奇异值很小,意味着该方向上很大的关节运动只能产生很小的任务运动。反求时除以这个小数,就会放大关节速度和噪声。
常见的阻尼最小二乘形式是:
阻尼通过允许一定跟踪误差来抑制放大,并不会创造原本不可实现的运动方向。
16. 加速度:为什么必须多出一项 \(\dot J\dot{\mathbf q}\)?
对速度关系求导:
其中:
第一项来自关节加速度,第二项来自机器人运动时,关节到末端的速度映射本身在变化。
| 问题 | 需要哪些已知量 |
|---|---|
| 求当前 \(J\) | 配置 \(\mathbf q\) 和模型、任务定义 |
| 求当前 \(\dot J\) | 还需要关节速度 \(\dot{\mathbf q}\) |
| 求末端加速度 | 再加关节加速度 \(\ddot{\mathbf q}\) |
关节匀速,末端也可以有加速度
长度为 \(l\) 的单杆匀速旋转:
即使 \(\ddot q=0\),仍然有:
这正是朝向旋转中心的向心加速度。例如 \(l=2\,\mathrm m\)、\(\dot q=0.5\,\mathrm{rad/s}\),加速度大小为 \(0.5\,\mathrm{m/s^2}\)。
反求关节加速度时,需要解:
仍然可能出现无解或多解。如果 \(\mathbf X\) 包含欧拉角,这里的二阶导数是欧拉角二阶变化率,不应直接当成角加速度。
若使用基座表达的几何雅可比,则对其速度向量求导可得到 \([\mathbf a_E;\dot{\boldsymbol\omega}_E]\)。若用随动坐标系表达,向量分量的时间导数与物理加速度之间还要考虑坐标轴本身的转动。
17. 力与力矩:为什么会出现雅可比的转置?
速度关系为:
在同一作用点和参考系下,把末端力与力矩组成力旋量:
外力对末端运动做功的瞬时功率是:
因此该外载荷对应的关节广义力为:
R 关节的广义力是力矩,P 关节的广义力是轴向力。雅可比转置的静力映射可参考 Modern Robotics:开链机构静力学。
符号要看力的定义:如果 \(\mathbf w_{\mathrm{ext}}\) 是环境施加在机器人上的外载荷,忽略重力等其他影响时,静止保持需要驱动力矩 \(\boldsymbol\tau_{\mathrm{act}}=-J_g^T\mathbf w_{\mathrm{ext}}\)。如果讨论机器人向环境施加的输出力,则要按作用与反作用调整符号。
实际电机力矩还可能包含重力补偿、惯性、科氏与离心项、摩擦等。不能把 \(J_g^T\mathbf w\) 当作完整的动力学模型。
此外,物理力旋量不能不加区分地乘以欧拉角解析雅可比的转置。转置映射依赖功率配对;使用任务坐标变化率时,其对偶的广义任务力也要匹配转换。
18. 除了速度和力,雅可比还能做什么?
| 用途 | 基本思路 | 实际意义 |
|---|---|---|
| 数值逆运动学 | 用局部误差求关节修正量 | 迭代到达目标位置或姿态 |
| 冗余运动协调 | 利用零空间 | 调整手肘、远离关节限位 |
| 灵巧度分析 | 分析奇异值和可操作性椭球 | 判断当前配置朝哪个方向容易运动 |
| 误差传播 | \(\Delta\mathbf X\approx J\Delta\mathbf q\) | 估计关节误差引起的末端误差 |
| 协方差传播 | \(\Sigma_X\approx J\Sigma_qJ^T\) | 一阶估计定位不确定性 |
| 柔顺与力控制 | 将任务空间要求映射到关节空间 | 控制接触力或表现出指定的柔顺性 |
数值逆运动学常写作:
这里的误差 \(\mathbf e_k\) 必须与雅可比输出匹配。只控制笛卡尔位置时可以使用目标位置减当前位置;对于姿态,通常需要合理的旋转误差定义,不能对四元数或旋转矩阵随意相减后直接套用。
分析奇异值、最小范数和灵巧度时,还要注意单位。一个任务同时包含米和弧度,或者关节同时包含 R 与 P 类型,直接使用未经归一化的欧氏范数会隐含权重选择。工程上常引入特征长度、速度尺度或权重矩阵。
19. 实际编程时,怎样避免“公式对了,结果却错了”?
下面的流程适用于从几何关系构造末端雅可比:
- 明确目标点:是法兰原点、夹爪中心,还是工具尖端?
- 明确输出:是位置变化率、位置加姿态参数变化率,还是线速度加角速度?
- 明确表达坐标系和排列顺序,例如基座表达的 \([\mathbf v;\boldsymbol\omega]\)。
- 读取当前关节配置,完成正运动学,取得各关节轴和目标点位置。
- 将所有轴向、位置统一到同一坐标系。
- 按 R/P 类型构造每列,水平拼接成 \(J_g\)。
- 如有需要,再转换为目标坐标参数对应的 \(J_{\mathbf X}\)。
- 反求时处理奇异性、权重、关节速度限制和其他约束。
用数值差分核对位置雅可比
正运动学能独立验证雅可比。对第 \(i\) 个关节作小的正负扰动:
这里的 \(\mathbf e_i\) 是关节空间第 \(i\) 个标准基向量,与前文的三维轴向 \(\mathbf e_z\) 不同。步长 \(h\) 按该关节的单位选取,过大会带来截断误差,过小会放大浮点误差。
对旋转不能直接把“旋转矩阵九元素的差分”当成三维角速度。若 \(R\) 把工具坐标转换到基座表达,则:
可先通过差分得到 \(\dot R\) 的近似,再按所需表达坐标系恢复角速度。实际计算时可取矩阵的反对称部分来抑制数值误差。
20. 一张表回顾最容易混淆的地方
| 常见误解 | 更准确的理解 |
|---|---|
| 雅可比一定是 6×6 | 行数取决于任务表示,列数取决于独立关节变量数 |
| 模型建好后雅可比就是常数 | 表达式确定,数值通常随配置变化 |
| 雅可比取决于运动快慢 | \(J\) 不直接依赖速度,\(\dot J\) 才涉及速度 |
| 同一末端位姿必然有同一个雅可比 | 不同逆解配置可能有不同雅可比 |
| 欧拉角导数就是角速度 | 三维情况下通常需要转换矩阵 |
| 相邻连杆雅可比像齐次矩阵一样连乘 | 末端雅可比通常由各关节对同一末端的贡献按列组成 |
| 转动关节自身原点一定有线速度 | 如果原点在该转轴上,本关节转动不直接移动这个原点 |
| 用哪个坐标系表达,就是相对哪个坐标系运动 | 表达坐标系与相对运动关系是两件事 |
| 反求关节速度总能用普通逆矩阵 | 可能无解、多解或接近奇异,需要伪逆、阻尼或约束优化 |
| 奇异时机器人完全不能动 | 通常是某些瞬时任务方向无法实现 |
| 末端加速度等于 \(J\ddot{\mathbf q}\) | 还要加 \(\dot J\dot{\mathbf q}\) |
| \(J^T\mathbf w\) 就是实际电机力矩 | 它只给出匹配载荷的广义力贡献,还需考虑符号及动力学 |
最值得亲手练习的是本文的平面 3R 例子:先对正运动学求导,再用角速度与叉乘逐段递推,最后用每个关节轴到末端的几何关系直接构造列。三条路线得到同一个矩阵时,雅可比就不再只是需要背诵的公式,而成为能看见几何含义、也能用于计算的工具。

浙公网安备 33010602011771号