正运动学建模:Denavit-Hartenberg参数法

好,咱们今天聊聊正运动学建模。说白了,就是给你一个机器人,你知道每个关节转了多少角度,然后算出末端执行器在空间里到底在哪儿、朝向如何。这件事,在机器人学里有个标准解法——Denavit-Hartenberg参数法,简称DH法。

我个人习惯把DH法看作一套「通用语言」。不管你是六轴工业臂,还是SCARA,甚至是个四足机器人腿,都能用这套规则来描述。我当年刚入行时,觉得这东西太抽象,后来在项目里被逼着用了一次,才发现——嗯,真香。

连杆坐标系的建立规则

先说说坐标系怎么建。DH法里,每个关节都对应一个坐标系。规则其实就四条,我总结成口诀:

  • Z轴:沿着关节的旋转轴或移动轴方向
  • X轴:沿着相邻两个Z轴的公垂线,方向从当前关节指向下一个
  • Y轴:右手定则,Z叉乘X得到Y
  • 原点:X轴与Z轴的交点

这里有个坑,我刚开始建坐标系时经常搞混。比如两个Z轴平行时,公垂线就不唯一了。这时候怎么办?我的经验是:选能让后续参数最简单的那个。说白了,就是让尽可能多的DH参数变成0。

⚠️ 我曾经踩过的坑: 坐标系建反了方向,导致后面算出来的末端位置差了180度。检查了三天才发现是Z轴方向选反了。所以建系时,一定先明确关节的正方向。

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的角度 这就是我们控制的关节变量

你想想看,这四个参数其实就描述了两件事:连杆本身的几何形状(a和α),以及连杆之间的连接关系(d和θ)。对于旋转关节,θ是变量;对于移动关节,d是变量。

💡 小技巧: 我习惯在表格里把每个关节的DH参数列出来,然后逐行检查。特别是α的正负号,最容易出错。记住:绕X轴逆时针为正。

正运动学方程推导

有了DH参数,接下来就是推导变换矩阵。每个连杆的变换矩阵长这样:

i-1T_i = Rot_x(α_{i-1}) · Trans_x(a_{i-1}) · Rot_z(θ_i) · Trans_z(d_i)

展开成4x4矩阵就是:

| cosθ_i   -sinθ_i·cosα_{i-1}   sinθ_i·sinα_{i-1}   a_{i-1}·cosθ_i |
| sinθ_i    cosθ_i·cosα_{i-1}   -cosθ_i·sinα_{i-1}   a_{i-1}·sinθ_i |
| 0         sinα_{i-1}          cosα_{i-1}           d_i            |
| 0         0                   0                    1               |

这个矩阵,说白了就是把上一个坐标系里的点,变换到当前坐标系里。我刚开始学的时候,觉得这个公式好复杂。后来发现,其实你只需要记住它是「旋转-平移-旋转-平移」的组合,剩下的交给代码就行。

正运动学方程就是把这些矩阵连乘起来:

0T_n = 0T_1 · 1T_2 · 2T_3 · ... · n-1T_n

结果矩阵的左上角3x3是末端姿态,右上角3x1是末端位置。就这么简单。

🔑 核心要点: 正运动学就是「关节空间 → 笛卡尔空间」的映射。你给一组关节角,我就能算出末端位姿。这是机器人控制的基础。

一个简单的例子

咱们拿一个两连杆平面臂来练练手。假设两个连杆长度都是1米,关节角分别是θ₁和θ₂。

DH参数表:

连杆 a α d θ
1 1 0 0 θ₁
2 1 0 0 θ₂

代入公式,连乘后得到末端位置:

x = cos(θ₁) + cos(θ₁+θ₂)
y = sin(θ₁) + sin(θ₁+θ₂)

你看,结果和我们用几何法算出来的一模一样。这就是DH法的魅力——它把复杂的空间几何问题,变成了机械的矩阵乘法。

💡 我的建议: 刚开始学的时候,别急着写代码。先拿纸笔算一个简单的两连杆或三连杆,把每一步的矩阵都写出来。我当年就是这么干的,算完三遍之后,再也没忘过。

知识体系总览

下面这张图,是我自己总结的正运动学建模流程。你可以把它当作一个检查清单:

正运动学建模知识体系 关节变量 θ₁, θ₂, ..., θₙ DH参数表 (a, α, d, θ) 单个连杆变换矩阵 ⁰T₁, ¹T₂, ..., ⁿ⁻¹Tₙ 矩阵连乘 ⁰Tₙ = ⁰T₁ · ¹T₂ · ... · ⁿ⁻¹Tₙ 末端位姿 (位置 + 姿态)

这张图把整个流程串起来了。从关节变量出发,经过DH参数、变换矩阵、矩阵连乘,最后得到末端位姿。每一步都有明确的数学定义,这也是为什么DH法能成为工业标准。

⚠️ 注意: 不同教材对DH参数的定义略有差异。有的用「标准DH」,有的用「改进DH」。我个人习惯用改进DH(即Craig的版本),因为它在处理树形结构时更自然。选一个版本用到底,别混着来。

好了,正运动学建模就聊到这儿。记住:DH法不是唯一的方法,但它是最通用、最系统的方法。掌握了它,你就能看懂绝大多数机器人的运动学模型。下次遇到一个新机器人,第一件事就是建DH参数表——这是我的习惯,也推荐给你。

📌 本章总结:
  • DH法用四个参数描述每个连杆
  • 坐标系建立遵循Z轴沿关节、X轴沿公垂线的规则
  • 正运动学方程就是矩阵连乘
  • 多动手算,比光看公式有效得多

可可精品资料库