第二章 机械臂运动学基础:空间描述与变换、DH参数建模、正运动学求解、逆运动学求解

各位工程师朋友,大家好。我是老张,在半导体设备这行摸爬滚打了十几年。今天咱们聊聊机械臂运动学——说白了,就是让机械臂知道自己“在哪儿”、“要去哪儿”、“怎么去”。

你想想看,晶圆传输机械臂在真空腔体里来回穿梭,要是位置算错一毫米,晶圆就可能碎掉。我当年刚入行时,就亲眼见过一次因为运动学参数没标定好,机械臂直接把晶圆怼到腔壁上……那声音,至今难忘。

2.1 空间描述与变换:给机械臂一个“坐标系”

机械臂要动,首先得有个参考系。就像你问路,得先说“以哪里为起点”。

在机器人学里,我们通常用齐次变换矩阵来描述两个坐标系之间的关系。一个4×4的矩阵,包含了旋转和位移信息:

| R(3×3)   P(3×1) |
| 0 0 0      1     |

其中R是旋转矩阵,P是平移向量。我个人习惯把变换矩阵想象成“坐标转换器”——把A坐标系下的点,换算到B坐标系下。

核心概念:

  • 位置描述:用3×1向量表示空间中的点
  • 姿态描述:用3×3旋转矩阵表示方向
  • 位姿描述:位置+姿态,用4×4齐次矩阵

我在项目中遇到过一个问题:两个工程师用了不同的坐标系定义,结果机械臂走出来的轨迹完全不对。后来我们统一规定:所有坐标系都遵循右手定则,Z轴向上。嗯,这种基础约定,越早统一越好。

2.2 DH参数建模:机械臂的“身份证”

DH参数法,是Denavit和Hartenberg两位老前辈提出的。它用四个参数来描述相邻两个关节之间的关系:

参数 符号 含义
连杆长度 ai-1 沿Xi-1轴,从Zi-1到Zi的距离
连杆扭转角 αi-1 绕Xi-1轴,从Zi-1到Zi的角度
关节距离 di 沿Zi轴,从Xi-1到Xi的距离
关节角度 θi 绕Zi轴,从Xi-1到Xi的角度

为什么是这四个参数?你想想看,两个连杆在空间中的相对位置,其实只需要一个旋转和一个平移就能描述。但为了唯一确定,我们拆成了两个旋转和两个平移——这就是DH参数的巧妙之处。

我的经验:建立DH参数表时,一定要画清楚坐标系图。我见过太多人直接套公式,结果符号搞反了。画图花10分钟,能省你后面调试的半天时间。

以SCARA型晶圆传输机械臂为例,它的DH参数表大概是这样的:

关节 | a(i-1) | α(i-1) | d(i) | θ(i)
  1   |   L1   |   0    |  d1  |  θ1
  2   |   L2   |   0    |  0   |  θ2
  3   |   0    |   0    |  d3  |  0
  4   |   0    |  180°  |  0   |  θ4

2.3 正运动学求解:已知关节角,求末端位姿

正运动学,说白了就是“已知各个关节的角度,求机械臂末端在哪儿”。

求解过程很简单:把每个关节的变换矩阵连乘起来。

T_0_n = T_0_1 × T_1_2 × ... × T_(n-1)_n

其中T_(i-1)_i是根据DH参数构建的齐次变换矩阵:

T_(i-1)_i = Rot(X, α(i-1)) × Trans(X, a(i-1)) × Rot(Z, θ(i)) × Trans(Z, d(i))

展开后就是:

| cosθ   -sinθ   0   a |
| sinθcosα  cosθcosα  -sinα  -d·sinα |
| sinθsinα  cosθsinα   cosα   d·cosα |
|   0       0       0     1   |

我记得有一次调试,正运动学算出来的位置和实际差了2mm。查了半天,发现是DH参数里一个角度符号写反了。所以啊,算完之后一定要做验证——让机械臂动到一个已知位置,对比计算结果。

避坑指南:我曾经因为忽略了关节限位,正运动学算出来一个理论上正确但实际上机械臂根本到不了的位置。后来我养成了习惯:算完正解后,先检查每个关节角度是否在物理限位内。

2.4 逆运动学求解:已知末端位姿,求关节角

逆运动学比正运动学难得多。正解是唯一的,逆解可能有多个解,也可能无解。

常用的求解方法有两种:

  • 解析法:通过代数或几何方法直接求解。速度快,适合特定构型。
  • 数值法:迭代逼近,通用性强,但计算量大。

对于晶圆传输机械臂,我强烈建议用解析法。为什么?因为实时性要求高——机械臂在高速运动时,你每毫秒都要算一次逆解,数值法可能来不及。

以6轴关节臂为例,逆解的一般步骤是:

  1. 根据末端位姿,反推腕部中心点位置
  2. 求解前三个关节角(决定位置)
  3. 求解后三个关节角(决定姿态)
  4. 从多组解中选最优解(通常选关节变化最小的)

选解原则:

  • 优先选靠近关节中位的解
  • 避免关节限位
  • 避免奇异位形
  • 考虑避障需求

你可能会问:多组解怎么选?我一般用“加权最小关节变化”原则——给每个关节一个权重,大关节权重小(因为运动惯量大),小关节权重大。这样选出来的解,机械臂运动最平滑。

2.5 本章知识体系

下面这张图,是我自己总结的运动学知识框架,希望能帮你理清思路:

机械臂运动学知识体系 空间描述与变换 DH参数建模 正运动学求解 逆运动学求解 关节角 → 末端位姿(唯一解) 末端位姿 → 关节角(多解/无解) 轨迹规划与控制的基础

这张图把运动学的核心脉络串起来了。从空间描述出发,建立DH模型,然后分正解和逆解两条路,最终都服务于轨迹规划。你把这个框架记在脑子里,后面学轨迹规划时会轻松很多。

实用建议:刚开始学的时候,别急着写代码。先拿纸笔手动算一个2关节机械臂的正逆解。算通了,再上代码。我当年就是这么过来的,基础打得牢,后面遇到复杂构型也不慌。

好了,运动学基础就聊到这儿。记住:正解是“因→果”,逆解是“果→因”。搞清楚了这两个方向,机械臂的“大脑”就算装上了。


公众号:蓝海资料掘金营,微信deep3321