第二章 机器人运动学基础:齐次变换矩阵、DH参数法、正运动学与逆运动学

各位同学,大家好。我是你们这门课的主讲。今天咱们来啃一块硬骨头——机器人运动学基础。说实话,这部分内容看着公式多,但只要你把逻辑捋顺了,它其实就是个“搭积木”的游戏。

我个人习惯,在讲任何算法之前,先问自己一个问题:“我为什么要学这个?” 你想想看,做标定也好,做误差补偿也好,最终目的都是让机器人末端执行器(比如焊枪、抓手)精准地到达我们想要的位置和姿态。而运动学,就是描述“关节怎么动”和“末端怎么走”之间关系的数学工具。不懂这个,后面所有的标定都是空中楼阁。

核心概念速览: 运动学解决的是“几何关系”问题,不涉及力、力矩和速度。它只关心位置和姿态。

2.1 齐次变换矩阵:机器人的“通用语言”

我们先从最基础的讲起。在三维空间里,一个物体有6个自由度:3个位置(x, y, z)和3个姿态(通常用绕X、Y、Z轴的旋转角度表示,即RPY角或欧拉角)。

怎么把这6个信息打包成一个统一的数学形式?答案就是齐次变换矩阵。它是一个4x4的矩阵,长这样:

| R(3x3)   P(3x1) |
| 0 0 0     1     |

左上角的3x3矩阵 R 表示旋转(姿态),右上角的3x1向量 P 表示平移(位置)。最后一行是固定的 [0 0 0 1],这是齐次坐标的规矩,为了把旋转和平移统一成矩阵乘法。

为什么用4x4矩阵? 说白了,就是为了计算方便。如果你用3x3矩阵,平移得单独加,写起来麻烦,计算机算起来也慢。用齐次变换矩阵,一次矩阵乘法就能搞定坐标变换。

我的小技巧: 我在项目中经常把齐次变换矩阵想象成“坐标系之间的说明书”。比如,矩阵 ATB 就是告诉你:“从A坐标系看B坐标系,它在哪里,它是什么姿势。” 这个视角很重要,后面推导DH参数时你会感谢我的。

2.2 DH参数法:给机器人关节“上户口”

好,现在我们有了一种描述坐标变换的工具。但机器人有6个关节,每个关节之间怎么建立坐标系?总不能每个项目都手算吧?

这就引出了DH参数法(Denavit-Hartenberg)。它提供了一套标准流程,让你用4个参数就能唯一确定相邻两个关节坐标系之间的关系。

这4个参数分别是:

  • 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参数法:相邻关节坐标系变换逻辑 关节 i-1 连杆 i-1 关节 i ai-1, αi-1 di, θi 从关节 i-1 到关节 i,需要经过两次平移和两次旋转 先沿 Xi-1 走 ai-1 并转 αi-1 再沿 Zi 走 di 并转 θi 通用变换矩阵公式 i-1Ti = Rotxi-1) · Transx(ai-1) · Rotzi) · Transz(di)

你看,这个流程非常清晰。你只需要按照这个顺序,把每个关节的4个参数填进去,就能得到相邻关节的变换矩阵。我当年第一次用MATLAB写这个的时候,发现只要参数没填错,结果几乎不会出问题。

避坑指南: 我曾经在标定一个六轴机器人时,发现末端位置总是差几毫米。查了两天,最后发现是DH参数里的 αi-1 符号搞反了。记住,αi-1 的正负号取决于你的坐标系建立方式,一定要和实际机械结构对应起来。别光看图纸,最好去现场拿角度尺量一下。

2.3 正运动学:从关节到末端

有了DH参数,正运动学就很简单了。说白了,就是把所有相邻关节的变换矩阵乘起来。

对于一个有n个关节的机器人,从基座(坐标系0)到末端(坐标系n)的变换矩阵是:

0Tn = 0T1 · 1T2 · 2T3 · ... · n-1Tn

这个矩阵里,就包含了末端执行器在基座坐标系下的位置和姿态。你给机器人每个关节一个角度(θ1 到 θn),它就能告诉你末端在哪。

实际应用场景: 比如你写一个离线编程软件,在电脑上规划好路径,然后要验证这个路径会不会撞到工件。这时候你就需要正运动学,把每个路径点的关节角度换算成末端位置,再去做碰撞检测。

我的经验: 正运动学计算量不大,但容易出错的地方在于矩阵乘法的顺序。记住,左乘!从基座开始,依次左乘下一个关节的变换矩阵。我见过有人写成右乘,结果末端位置飞到天上去。

2.4 逆运动学:从末端到关节

逆运动学就比正运动学麻烦多了。它的任务是:已知末端执行器想要到达的位置和姿态,反算出每个关节应该转多少角度。

为什么麻烦?因为逆运动学通常有多解,甚至可能无解。比如一个六轴机器人,同一个末端位置,可能有8组不同的关节角度组合(肘部向上或向下、手腕翻转等)。

求解方法主要有两种:

  • 解析法(封闭解): 通过代数或几何方法直接推导出公式。速度快,但只适用于满足特定条件的机器人(比如后三个关节轴线交于一点,即存在腕部)。
  • 数值法(迭代法): 比如牛顿-拉夫森法。通用性强,任何机器人结构都能用,但计算慢,且需要给一个初始猜测值。

我个人在实际项目中,优先用解析法。为什么呢?因为数值法有时候会收敛到错误的解,或者干脆不收敛。而解析法只要推导正确,结果就是确定的。

一个常见的坑: 逆运动学解出来的角度,可能超出机器人的关节限位。比如你算出来关节2要转到-150度,但实际机器人只能转到-135度。这时候就需要做关节限位检查,并选择一组在限位内的解。我曾经在调试一个焊接机器人时,就是因为没做这个检查,导致机器人差点撞到夹具。

2.5 本章小结

好,我们来捋一下今天的内容:

  1. 齐次变换矩阵是描述位置和姿态的通用工具,4x4矩阵,左上角旋转,右上角平移。
  2. DH参数法是建立机器人连杆坐标系的标准化方法,4个参数(a, α, d, θ)搞定相邻关节变换。
  3. 正运动学就是矩阵连乘,从关节角度算末端位姿,简单直接。
  4. 逆运动学是从末端位姿反算关节角度,有多解,优先用解析法,别忘了检查关节限位。

这些内容,是后面所有标定和误差修正工作的基础。你想想看,如果你连机器人末端在哪都算不准,那标定还有什么意义?所以,这一章的内容,值得你多花点时间消化。

嗯,今天就到这里。记住,多动手算几个例子,比光看公式强一百倍。


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