运动学是机械臂软件栈里最底层的一块地基:正解回答“关节角是这样时末端在哪”,逆解回答“想让末端到那里关节角该是多少”,雅可比回答“关节速度和末端速度怎么换算”。规划器、笛卡尔伺服、力控、示教再现,全都建立在这三个问题的答案之上。
本文按依赖顺序推导前两块半:先把位姿和齐次变换说清楚,再用 DH 参数把串联机构参数化,然后构造雅可比并讨论奇异性。逆运动学本身是另一个体量的问题,只在这里给出结论,完整推导见配套的那篇。
刚体在空间中的位姿由位置 p∈R3 和姿态 R∈SO(3) 组成,合写成齐次变换矩阵:
T=[R0⊤p1]∈SE(3)
它的好处是复合就是矩阵乘法:坐标系 {B} 相对 {A}、{C} 相对 {B} 的位姿已知时,
ATC=ATBBTC
串联机械臂正是一串这样的复合。逆变换也有闭式:
T−1=[R⊤0⊤−R⊤p1]
姿态的参数化(欧拉角、轴角、四元数)各有取舍:欧拉角直观但有万向锁;四元数无奇异、插值方便(slerp),是运动规划中的默认选择;旋转矩阵则用于一切需要复合和求导的推导。工程上常见的错误几乎都发生在约定不清:内旋还是外旋、四元数 wxyz 还是 xyzw、角度还是弧度——这些约定错了,后面全错。
串联机构相邻连杆之间的变换有 6 个自由度,但 Denavit 与 Hartenberg 发现:只要坐标系按规则架设(z 轴取关节轴,x 轴取相邻两关节轴的公垂线),相邻连杆变换只需要 4 个参数。
采用修正 DH(Modified DH,Craig 版约定),从坐标系 {i−1} 到 {i} 的变换为
i−1Ti=Rx(αi−1)Dx(ai−1)Rz(θi)Dz(di)
展开成矩阵:
i−1Ti=cosθisinθicosαi−1sinθisinαi−10−sinθicosθicosαi−1cosθisinαi−100−sinαi−1cosαi−10ai−1−disinαi−1dicosαi−11
四个参数的物理含义:
- ai−1(连杆长度)、αi−1(连杆扭角):由机械结构决定的常数;
- θi(关节角):转动关节的变量;
- di(连杆偏距):移动关节的变量。
注意标准 DH(Spong 版)与修正 DH 的下标和乘法顺序不同,两套约定的参数表不能混用。看论文或者对接现成 URDF 时第一件事是确认约定;URDF 本身不用 DH,而是任意的 joint origin + axis,从 URDF 提取 DH 参数并不总是唯一的。
正运动学就是把 n 个连杆变换连乘:
0Tn(q)=0T1(q1)1T2(q2)⋯n−1Tn(qn)
这一步没有任何数值困难:给定 q,答案唯一、计算是 O(n) 次矩阵乘法。真正的难点全在反方向。
设末端线速度 ve、角速度 ωe,堆叠成 6 维空间速度。雅可比矩阵 J(q)∈R6×n 定义了它与关节速度的线性映射:
[veωe]=J(q)q˙
几何雅可比可以逐列构造,物理图像非常直接——第 i 列就是“只动第 i 个关节、单位速度”时末端的空间速度:
Ji=⎩⎨⎧[zi−1×(pe−pi−1)zi−1][zi−10]转动关节移动关节
其中 zi−1、pi−1 分别是第 i 个关节轴方向和轴上一点的位置(正解的中间结果,顺手就有)。
**这个逐列公式为什么成立?**分两步说清。
第一步,为什么可以一列一列地看。速度映射 Jq˙=∑iJiq˙i 对 q˙ 是线性的,所以末端速度是“每个关节单独运动产生的速度”的叠加。冻结除 i 外的所有关节,此时从关节 i 到末端的整段机构是一个刚体,末端的运动完全由关节 i 的运动决定——这就把问题化成了单关节的刚体运动学。
第二步,单个转动关节产生什么速度。关节 i 以 q˙i 绕轴 zi−1 转动时,这个刚体的角速度是 ω=q˙izi−1(角速度沿转轴,与轴上取哪个点无关);刚体上任意一点的线速度由刚体速度场公式给出——取轴上的点 pi−1 为参考点(它不动),末端点 pe 的速度是
ve=ω×(pe−pi−1)=q˙izi−1×(pe−pi−1)
除以 q˙i 就是第 i 列的上半块;下半块 zi−1 是角速度贡献(角速度矢量直接相加,这是角速度叠加定理)。移动关节更简单:整段刚体平移,线速度沿轴、角速度为零。雅可比不是求偏导求出来的,是刚体速度场拼出来的——这也是它叫“几何”雅可比的原因。
雅可比的用处远不止速度换算:
- 静力学对偶:末端受外力旋量 F、关节出力矩 τ,系统准静态平衡时对任意虚位移 δq 虚功为零:τ⊤δq−F⊤δx=0。代入 δx=Jδq 得 (τ−J⊤F)⊤δq=0 对一切 δq 成立,故 τ=J⊤F。速度正着映射、力反着映射(对偶),力控和碰撞检测都靠它;
- 数值逆解:见第 4 节;
- 奇异性分析:见下面。
当 J 丢秩时,末端在某些方向上瞬时失去运动能力,这就是运动学奇异。6 轴臂的典型奇异位形有三类:腕部奇异(4、6 轴共线,最常见)、肘部奇异(手臂完全伸直,即工作空间边界)、肩部奇异(腕心落在 1 轴轴线上)。
定量刻画用可操作度(manipulability):
w(q)=det(JJ⊤)=σ1σ2⋯σ6
即奇异值之积,等于末端速度椭球的体积。接近奇异时最小奇异值 σmin→0,后果不是“动不了”,而是反过来:为了维持普通的末端速度,某些关节速度会飙向无穷。笛卡尔伺服在奇异附近炸掉的根源就在这里,处理手段(阻尼、限速、任务重构)见第 4 节。
逆运动学要解 Ttarget=0Tn(q),它和正解有本质不对称性:解可能不存在(目标在工作空间外)、可能有限多个(6 轴臂一般位形最多 16 个,球腕构型 8 个)、也可能无穷多(7 轴冗余臂)。这决定了逆解不是一个函数,而是一次带选择的搜索。
工程上分两条路:
- 解析解:构型满足 Pieper 条件(相邻三轴交于一点,即球腕)时位置与姿态解耦,能写出全部 8 组闭式解——微秒级、可枚举全部分支,是轨迹规划的首选;
- 数值解:不满足 Pieper 条件或冗余臂只能迭代(阻尼最小二乘 + 零空间投影),代价是只收敛到初值附近的一个解,且对关节限位一无所知。
两者的完整推导——球腕 8 组解每一步的代数、阻尼最小二乘的 SVD 分析、数值解的吸引盆结构,以及解析法与数值法的实测对比——见 逆运动学:从球腕解耦到数值解的吸引盆。
| 问题 |
方法 |
复杂度 |
解的性质 |
| 正解 |
连乘 DH 变换 |
O(n),确定性 |
唯一 |
| 速度级 |
几何雅可比 |
O(n) 逐列构造 |
线性映射,奇异时丢秩 |
| 逆解(球腕) |
解析:几何 + 欧拉角提取 |
微秒级 |
8 组,可全局选支 |
| 逆解(一般/冗余) |
DLS 迭代 + 零空间投影 |
每步一次 6×n 最小二乘 |
局部唯一,依赖初值 |
几条实践经验:
- 实时笛卡尔伺服用速度级 IK(直接积分 q˙=J+x˙),不要每个周期做完整位置级 IK——前者天然连续,后者可能跳解分支;
- 解的选择比解本身重要:8 组解析解里选哪组,标准是与当前构型加权关节距离最小,且整条轨迹不换支;
- 检查逆解库的姿态误差定义和关节卷绕策略,这两处不一致会表现为“偶发的关节大回转”,非常难排查;
- 奇异不可怕,可怕的是没有处理策略就闯进去——限最小奇异值、DLS 阻尼、或者规划阶段直接把奇异邻域当障碍。
- J. J. Craig. Introduction to Robotics: Mechanics and Control. Pearson.(修正 DH 约定出处)
- K. M. Lynch, F. C. Park. Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press.(旋量视角,可与 DH 对照)
- B. Siciliano, L. Sciavicco, L. Villani, G. Oriolo. Robotics: Modelling, Planning and Control. Springer.