2. 逆运动学求解方法(上):解析法(代数法与几何法)推导,以6轴工业机器人为例,求解封闭解的条件与技巧。

各位同学,欢迎来到第二章。上一章我们聊了逆运动学到底在解决什么问题——说白了,就是给机器人一个末端位姿,让它自己算出每个关节该转多少度。

这一章,我们直接上手最核心的求解方法:解析法。我个人习惯把解析法分成两派——代数法和几何法。别被名字吓到,其实思路都很直观。

2.1 为什么非要解析法?数值法不香吗?

你可能会问:现在计算机这么快,直接迭代算不就行了?嗯,我在项目里确实见过不少直接用数值法(比如牛顿-拉夫森法)的工程师。但说实话,工业现场最怕的就是迭代不收敛。

解析法有几个硬核优势:

  • 速度快:公式代入,一次出结果,没有迭代开销
  • 确定性:同样的输入,永远得到同样的输出
  • 可预测:你能提前知道有多少组解,每组解长什么样

核心观点:解析法求出的解叫"封闭解"(Closed-form Solution)。对于6轴工业机器人,只有满足特定条件才能得到封闭解。这个条件就是——三个相邻关节轴交于一点,或者三个相邻关节轴平行。

为什么会这样?因为只有这些几何约束才能让方程解耦,把6个方程拆成几个低次方程。我最早做焊接机器人项目时,就因为没注意这个条件,硬算了三天三夜没收敛……后来一查,机器人末端三轴根本就没交于一点。

2.2 封闭解存在的条件——Pieper准则

1968年,Pieper老爷子给出了一个经典结论:6自由度串联机器人存在封闭解的充分条件是:三个相邻关节轴交于一点,或三个相邻关节轴平行。

现代工业机器人几乎都遵守这个准则。比如你常见的KUKA、ABB、FANUC,它们的腕部(第4、5、6轴)都设计成相交于一点,这个点叫腕心(Wrist Center)。

机器人类型 封闭解条件 典型结构
6轴串联(标准) 后三轴交于一点 KUKA KR系列、ABB IRB系列
6轴串联(偏置腕) 前三轴平行 部分SCARA-like结构
协作机器人 后三轴交于一点 UR系列、Franka Emika

实战技巧:拿到一台新机器人的DH参数表,第一件事就是检查后三轴的坐标系原点是否重合。如果重合,恭喜你,可以用解析法。如果不重合……嗯,你可能得考虑数值法了。

2.3 代数法——从矩阵方程到三角函数

代数法的思路很直接:把正运动学的齐次变换矩阵展开,然后逐元素对比,建立方程。

正运动学公式长这样:

T_06 = T_01 * T_12 * T_23 * T_34 * T_45 * T_56

其中每个T_i(i+1)都是关于关节角θ_i的函数。展开后,T_06的每个元素都是sin和cos的复杂组合。

我们的目标是:已知T_06的数值(目标位姿),反求θ_1到θ_6。

2.3.1 第一步:分离腕心位置

因为后三轴交于腕心,我们可以把问题拆成两步:

  1. 位置逆解:用前三轴把腕心送到目标位置
  2. 姿态逆解:用后三轴调整末端姿态

腕心的位置怎么算?很简单:

P_wrist = P_06 - d_6 * R_06 * [0, 0, 1]^T

其中d_6是末端连杆长度,R_06是目标姿态矩阵。这一步把6自由度问题降成了3自由度问题。

注意:这个公式成立的前提是后三轴交于一点。如果腕部有偏置,P_wrist的计算会更复杂,甚至无法直接分离。

2.3.2 第二步:求解前三轴关节角

有了腕心位置,我们就可以建立关于θ_1、θ_2、θ_3的方程。以典型的6轴机器人为例:

  • θ_1:通常由腕心在基坐标系中的x、y坐标通过atan2直接求出
  • θ_2、θ_3:通过余弦定理,在由连杆2、连杆3和腕心构成的三角形中求解

这里有个经典公式:

cos(θ_3) = (P_x^2 + P_y^2 + P_z^2 - a_2^2 - a_3^2 - d_3^2 - d_4^2) / (2 * a_2 * sqrt(a_3^2 + d_4^2))

嗯,看着有点复杂。但说白了,就是解一个三角形——你初中就学过的东西。

2.3.3 第三步:求解后三轴关节角

前三轴算出来后,我们可以算出前三轴对末端姿态的贡献R_03。然后用目标姿态R_06减去这个贡献,得到后三轴需要的姿态R_36:

R_36 = (R_03)^T * R_06

R_36是θ_4、θ_5、θ_6的函数。对于标准腕部结构,通常:

  • θ_5:通过R_36的(3,3)元素用arccos求解
  • θ_4、θ_6:通过atan2求解,注意处理θ_5=0时的奇异情况

避坑指南:我曾经在调试喷涂机器人时,发现θ_5接近0°时,θ_4和θ_6的解会突然跳变。后来才意识到,这是腕部奇异点——两个关节轴重合了。解决办法是:当|sin(θ_5)| < ε时,固定θ_4为当前值,只算θ_6。

2.4 几何法——用空间想象力解题

代数法虽然严谨,但有时候太抽象。我个人更喜欢几何法——把机器人简化成几根棍子,在三维空间里画图。

几何法的核心思想:把机器人的运动学约束投影到平面或球面上,用几何关系直接求解。

2.4.1 平面几何法(适用于前三轴)

对于前三轴,我们可以把问题投影到两个平面:

  • 水平面(XY平面):求解θ_1
  • 垂直平面(由关节2、3和腕心构成):求解θ_2、θ_3

举个例子,求解θ_1:

θ_1 = atan2(P_y, P_x)  // 如果第一关节是旋转关节

就这么简单。但要注意,如果P_x和P_y都接近0(腕心在基座正上方),θ_1有无穷多解。这时候我一般会取当前关节角的值,或者加一个约束条件。

2.4.2 球面几何法(适用于后三轴)

后三轴构成一个球面腕——三个旋转轴交于一点,末端姿态可以看作在球面上的旋转。

球面几何法的步骤:

  1. 把目标姿态分解成三个欧拉角(Z-Y-Z或Z-X-Z,取决于机器人结构)
  2. 每个欧拉角对应一个关节角
  3. 注意多解:同一个姿态对应多组欧拉角

经验之谈:我习惯用Z-Y-Z欧拉角来对应标准腕部的θ_4、θ_5、θ_6。因为大多数机器人的腕部结构就是绕Z轴转、绕Y轴转、再绕Z轴转。但不同厂家的定义可能不同,一定要查DH参数表确认。

2.5 多解处理——选哪一组?

解析法的一大特点就是多解。一个6轴机器人,最多可以有8组逆解(2^3,因为前三轴各有两种构型)。

怎么选?我一般按这个优先级:

优先级 选择策略 适用场景
1 关节角度变化最小(最小路径) 连续轨迹、焊接、喷涂
2 避免关节极限 所有场景
3 避免奇异位形 高速运动、精密装配
4 优先"肘部向上"或"肘部向下" 根据工作空间需求

重要提醒:多解选择不是一次性的。在连续轨迹中,每一帧都要重新评估,否则可能出现关节角跳变。我见过一个案例,因为没做多解连续性检查,机器人在运动过程中突然"甩腕",差点把工件甩飞。

2.6 本章知识体系总览

下面这张图总结了本章的核心逻辑:

逆运动学解析法知识体系 逆运动学解析法知识体系 解析法(封闭解) Pieper准则:三相邻轴交于一点或平行 代数法 几何法 ① 分离腕心位置 ② 前三轴(余弦定理) ③ 后三轴(姿态分解) ① 平面投影(XY/垂直面) ② 三角形几何关系 ③ 球面腕欧拉角分解 输出:最多8组封闭解

这张图把本章的核心脉络串起来了。你从最上面的"解析法"出发,先检查Pieper条件是否满足,然后选择代数法或几何法(或者两者结合),最后得到多组解,再根据实际需求选择最优解。

2.7 实战建议

最后,给各位几个实战中的建议:

  • 先检查DH参数:拿到机器人,先确认后三轴是否交于一点。这是解析法的基础。
  • 代数法和几何法结合用:我习惯前三轴用几何法(直观),后三轴用代数法(严谨)。
  • 多解选择要加平滑:连续运动中,相邻两帧的解要尽量接近,避免跳变。
  • 奇异点要单独处理:θ_5接近0°或180°时,后三轴会退化,需要特殊逻辑。

总结一句话:解析法不是万能的,但没有解析法是万万不能的。在工业机器人领域,90%以上的场景都可以用解析法搞定。掌握好代数法和几何法,你就掌握了逆运动学的核心武器。