2. 机器人运动学基础:齐次变换矩阵、DH参数模型、正运动学与逆运动学
各位工程师,大家好。欢迎来到《关节标定核心技术手册》的第二章。
做机器人标定,说白了,你得先懂机器人是怎么动的。运动学就是描述这种“动”的数学语言。没有它,你连关节转了多少度、末端到了哪儿都说不清楚,更别提标定了。
我个人习惯把运动学比作“骨架”。它不关心力,不关心扭矩,只关心几何关系。这一章,我们就来把这副骨架搭起来。
2.1 齐次变换矩阵:描述空间位姿的“瑞士军刀”
想象一下,你手里拿着一个零件,想告诉同事它在空间里的位置和朝向。光说“在桌子右上角”肯定不行。我们需要一个精确的数学工具。
齐次变换矩阵就是干这个的。它是一个 4x4 的矩阵,把旋转和平移打包在一起。
核心公式:
| R(3x3) | t(3x1) |
|---------|---------|
| 0 0 0 | 1 |
其中,R 是旋转矩阵,描述姿态;t 是平移向量,描述位置。
为什么叫“齐次”?因为它引入了一个额外的维度,让平移也能用矩阵乘法表示。这样一来,连续的坐标变换就能通过矩阵连乘搞定。
举个例子,从基座标系 {B} 到工具坐标系 {T} 的变换,可以写成:
B_T_T = B_T_1 * 1_T_2 * ... * n_T_T
嗯,这里要注意:矩阵乘法不满足交换律。顺序搞反了,末端位置就飞到天上去了。我在项目中遇到过一位同事,调试半天发现机器人撞了安全围栏,最后查出来就是变换顺序写反了。从那以后,我每次写变换链都会在纸上先画一遍坐标系。
我的小技巧: 写代码时,把变换矩阵的变量名命名为 from_to 的格式,比如 base_to_shoulder、shoulder_to_elbow。这样连乘时,相邻的“to”和“from”会自然抵消,不容易出错。
2.2 DH参数模型:串联机器人的“身份证”
有了齐次变换矩阵,我们还需要一种标准化的方法来描述机器人每个关节之间的相对关系。Denavit-Hartenberg 参数法,也就是 DH 参数,就是最经典的一种。
它用四个参数来描述相邻两个关节坐标系的关系:
| 参数 | 符号 | 物理含义 |
|---|---|---|
| 连杆长度 | ai-1 | 沿 Xi-1 轴,从 Zi-1 到 Zi 的距离 |
| 连杆扭角 | αi-1 | 绕 Xi-1 轴,从 Zi-1 到 Zi 的转角 |
| 连杆偏距 | di | 沿 Zi 轴,从 Xi-1 到 Xi 的距离 |
| 关节角 | θi | 绕 Zi 轴,从 Xi-1 到 Xi 的转角 |
你想想看,对于旋转关节,θi 是变量;对于移动关节,di 是变量。其他参数在机器人设计完成后就是固定的。
有了这四组参数,相邻坐标系的变换矩阵就能唯一确定:
i-1_T_i = RotX(αi-1) * TransX(ai-1) * RotZ(θi) * TransZ(di)
我曾经在标定一个六轴机器人时,发现末端重复定位精度总是差 0.5mm。查了很久,最后发现是 DH 参数表里一个连杆扭角的符号搞反了。这种错误在纸面上很难看出来,但一跑仿真,轨迹就歪了。所以,我建议你在建立 DH 参数模型后,先用一个已知的简单姿态验证一下。
避坑指南: DH 参数有两种主流约定——标准 DH 和改进 DH。它们的坐标系建立规则和变换顺序不同。我曾经在同一个项目里混用了两种,结果仿真和实际机器人对不上。务必在项目开始时统一约定,并在文档里写清楚。
2.3 正运动学:从关节空间到工作空间
正运动学,就是已知每个关节的角度(或位移),求末端执行器的位姿。说白了,就是“我告诉机器人关节怎么动,它告诉我手在哪儿”。
对于串联机器人,正运动学就是 DH 变换矩阵的连乘:
0_T_n = 0_T_1 * 1_T_2 * ... * n-1_T_n
其中,0_T_n 就是末端相对于基座标系的齐次变换矩阵。
这个过程是确定性的,没有歧义。给定一组关节角,末端位姿是唯一的。这也是为什么正运动学相对简单,计算量也小。
我习惯在代码里把正运动学封装成一个函数,输入是关节角向量,输出是 4x4 矩阵。这样在标定算法里调用起来非常方便。
代码示例(伪代码):
function forward_kinematics(joint_angles):
T = identity_matrix()
for i from 1 to n:
T_i = dh_transform(alpha[i-1], a[i-1], d[i], joint_angles[i])
T = T * T_i
return T
2.4 逆运动学:从工作空间到关节空间
逆运动学正好反过来:已知末端执行器想要达到的位姿,求各个关节的角度。这是机器人控制中最核心、也最头疼的问题。
为什么头疼?因为逆运动学通常有多解、甚至无解。你想想看,一个六轴机器人,末端停在同一个点,手肘可以朝上,也可以朝下,这就是两种不同的构型。
求解逆运动学的方法主要有两种:
- 解析法(封闭解): 通过代数或几何方法直接推导出公式。速度快,但只适用于满足 Pieper 准则的机器人(相邻三个关节轴交于一点)。
- 数值法(迭代法): 比如牛顿-拉夫森法、雅可比伪逆法。通用性强,但计算慢,且可能陷入局部最优。
在实际标定项目中,我更倾向于使用解析法。因为标定需要高精度和高实时性,数值法的迭代过程可能会引入额外的误差。当然,如果你的机器人构型不满足解析条件,那就只能用数值法了。
我的经验: 在标定过程中,我们通常不会直接使用逆运动学来求解标定参数。但理解逆运动学的多解特性,对于设计标定轨迹非常重要。我曾经因为没考虑逆解的多解性,导致标定算法收敛到了错误的构型上。后来我在标定轨迹里加入了关节角范围的约束,问题就解决了。
2.5 本章知识体系总览
为了让你更直观地理解这一章的知识结构,我画了一张图。它把齐次变换矩阵、DH参数、正逆运动学的关系串了起来。
从这张图你可以看到,齐次变换矩阵是底层工具,DH参数是建模方法,正逆运动学是应用。它们环环相扣,缺一不可。在后续的标定章节中,我们会反复用到这些知识。
好了,这一章的内容就到这里。运动学是标定的地基,地基不牢,地动山摇。希望你能花点时间,把齐次变换矩阵的乘法、DH参数的建立规则亲手推导一遍。相信我,这对你理解后面的标定算法会有很大帮助。