正运动学建模:Denavit-Hartenberg参数法
好,咱们今天聊聊正运动学建模。说白了,就是给你一个机器人,你知道每个关节转了多少角度,然后算出末端执行器在空间里到底在哪儿、朝向如何。这件事,在机器人学里有个标准解法——Denavit-Hartenberg参数法,简称DH法。
我个人习惯把DH法看作一套「通用语言」。不管你是六轴工业臂,还是SCARA,甚至是个四足机器人腿,都能用这套规则来描述。我当年刚入行时,觉得这东西太抽象,后来在项目里被逼着用了一次,才发现——嗯,真香。
连杆坐标系的建立规则
先说说坐标系怎么建。DH法里,每个关节都对应一个坐标系。规则其实就四条,我总结成口诀:
- Z轴:沿着关节的旋转轴或移动轴方向
- X轴:沿着相邻两个Z轴的公垂线,方向从当前关节指向下一个
- Y轴:右手定则,Z叉乘X得到Y
- 原点:X轴与Z轴的交点
这里有个坑,我刚开始建坐标系时经常搞混。比如两个Z轴平行时,公垂线就不唯一了。这时候怎么办?我的经验是:选能让后续参数最简单的那个。说白了,就是让尽可能多的DH参数变成0。
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参数,接下来就是推导变换矩阵。每个连杆的变换矩阵长这样:
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参数、变换矩阵、矩阵连乘,最后得到末端位姿。每一步都有明确的数学定义,这也是为什么DH法能成为工业标准。
好了,正运动学建模就聊到这儿。记住:DH法不是唯一的方法,但它是最通用、最系统的方法。掌握了它,你就能看懂绝大多数机器人的运动学模型。下次遇到一个新机器人,第一件事就是建DH参数表——这是我的习惯,也推荐给你。
- DH法用四个参数描述每个连杆
- 坐标系建立遵循Z轴沿关节、X轴沿公垂线的规则
- 正运动学方程就是矩阵连乘
- 多动手算,比光看公式有效得多
可可精品资料库