有多少人工,就有多少智能

# D-H 坐标系的特征:从定义规则到参数物理意义

D-H 坐标系的特征:从定义规则到参数物理意义

D-H 法,也就是 Denavit-Hartenberg 法,是机器人运动学建模中最经典的方法之一。它的核心思想是:通过一套固定的坐标系建立规则,用 4 个参数描述相邻连杆坐标系之间的位姿关系。

理解 D-H 坐标系,关键不是死记矩阵公式,而是理解三个问题:

  • 为什么要这样建立坐标系?
  • 四个 D-H 参数分别表示什么?
  • 这套方法有什么优点和限制?

这篇文章从坐标系定义、参数含义、变换矩阵、几何特征和建模流程几个方面,系统梳理 D-H 坐标系的核心内容。


1. D-H 法的基本思想

串联机器人由多个连杆和关节依次连接而成。要描述末端执行器的位置和姿态,通常需要完成三件事:

  • 在每个连杆上建立一个坐标系;
  • 描述相邻坐标系之间的变换关系;
  • 把所有相邻变换矩阵连乘,得到末端相对于基座的位姿。

一般来说,三维空间中两个刚体坐标系之间的关系需要 6 个独立参数描述:

3 个平移参数 + 3 个旋转参数 = 6 个参数

但在串联机器人中,相邻连杆之间受到关节轴线的约束,并不是任意两个刚体之间的自由关系。

D-H 法利用这种几何约束,把相邻连杆之间的位姿关系压缩为 4 个参数:

θ_i, d_i, a_i, α_i

这 4 个参数分别描述绕关节轴的旋转、沿关节轴的平移、沿公垂线的距离,以及相邻关节轴之间的扭转角。


2. D-H 坐标系的核心定义

D-H 坐标系的核心规则可以概括为一句话:

z 轴沿关节轴线,x 轴沿相邻关节轴线的公垂线,y 轴由右手定则确定。

这里最重要的是 z 轴和 x 轴。

z 轴决定关节的运动方向。对于转动关节,z 轴就是旋转轴;对于移动关节,z 轴就是平移方向。

x 轴连接相邻两条关节轴线,通常沿两条 z 轴之间的公垂线方向。公垂线的长度就是 D-H 参数中的连杆长度 a。

y 轴不需要单独指定,它由右手坐标系确定:

x 叉乘 y = z

或者等价地说,确定了 x 轴和 z 轴之后,y 轴必须满足右手定则。


3. 标准 D-H 与改进 D-H

D-H 法有两种常见约定:

  • 标准 D-H,也叫 Classic D-H;
  • 改进 D-H,也叫 Modified D-H 或 Craig D-H。

两者的核心思想一致,区别主要在于坐标系固连位置、参数下标和变换顺序不同。

3.1 标准 D-H

标准 D-H 中,常见定义方式是:

  • z_i 轴沿第 i+1 个关节轴线;
  • x_i 轴沿 z_{i-1} 和 z_i 的公垂线;
  • 原点 O_i 位于公垂线与 z_i 轴的交点;
  • y_i 轴由右手定则确定。

标准 D-H 的相邻坐标系变换通常写成:

T(i-1 -> i) = Rz(θ_i) * Tz(d_i) * Tx(a_i) * Rx(α_i)

也就是:

先绕 z 轴旋转 θ_i
再沿 z 轴平移 d_i
再沿 x 轴平移 a_i
最后绕 x 轴旋转 α_i

3.2 改进 D-H

改进 D-H 中,常见定义方式是:

  • z_i 轴沿第 i 个关节轴线;
  • x_i 轴沿 z_i 和 z_{i+1} 的公垂线;
  • 原点 O_i 位于公垂线与 z_i 轴的交点;
  • y_i 轴由右手定则确定。

改进 D-H 的相邻坐标系变换通常写成:

T(i-1 -> i) = Rx(α_i-1) * Tx(a_i-1) * Rz(θ_i) * Tz(d_i)

也就是:

先绕 x 轴旋转 α_i-1
再沿 x 轴平移 a_i-1
再绕 z 轴旋转 θ_i
最后沿 z 轴平移 d_i

3.3 两种约定不要混用

标准 D-H 和改进 D-H 都可以用于正运动学建模,但不能在同一张参数表里混用。

如果前几行使用标准 D-H,后几行又使用改进 D-H,矩阵连乘结果就会错误。

比较稳妥的做法是:建模前先明确自己采用哪一种约定,然后整篇文档、参数表、代码实现都保持一致。


4. D-H 四个参数的物理意义

D-H 法最核心的内容,就是四个参数:

θ_i, d_i, a_i, α_i

它们分别对应两个绕轴旋转和两个沿轴平移。

参数 中文名 含义 基本变换
θ_i 关节角 绕 z_{i-1} 轴,从 x_{i-1} 转到 x_i 的角度 绕 z 旋转
d_i 连杆偏距 沿 z_{i-1} 轴,从 x_{i-1} 移到 x_i 的距离 沿 z 平移
a_i 连杆长度 沿 x_i 轴,从 z_{i-1} 移到 z_i 的距离 沿 x 平移
α_i 连杆扭角 绕 x_i 轴,从 z_{i-1} 转到 z_i 的角度 绕 x 旋转

可以用一句话记忆:

th:绕 z 转
d:沿 z 移
a:沿 x 移
al:绕 x 转

也可以理解为:

z 轴上有两个参数:th 和 d
x 轴上有两个参数:a 和 al

5. 关节变量与固定参数

对于单自由度关节,D-H 参数中通常只有一个参数是变量。

如果是转动关节:

θ_i 是关节变量
d_i 是固定常量
a_i 是固定常量
α_i 是固定常量

如果是移动关节:

d_i 是关节变量
θ_i 是固定常量
a_i 是固定常量
α_i 是固定常量

所以可以总结为:

关节类型 关节变量 固定参数
转动关节 Revolute θ_i d_i, a_i, α_i
移动关节 Prismatic d_i θ_i, a_i, α_i

a_i 和 α_i 通常由机械结构决定,一般不会随关节运动变化。


6. 标准 D-H 变换矩阵

标准 D-H 的相邻坐标系变换为:

T(i-1 -> i) = Rz(θ_i) * Tz(d_i) * Tx(a_i) * Rx(α_i)

展开后的齐次变换矩阵为:

T(i-1 -> i) =

[ cos(θ_i)   -sin(θ_i)cos(α_i)    sin(θ_i)sin(α_i)    a_i cos(θ_i)
  sin(θ_i)    cos(θ_i)cos(α_i)   -cos(θ_i)sin(α_i)    a_i sin(θ_i)
  0               sin(α_i)                cos(α_i)                d_i
  0               0                           0                           1 ]

从这个矩阵中可以看出:

位置部分由 a_i, d_i, θ_i 决定
姿态部分由 θ_i, α_i 决定
θ_i 同时影响位置和姿态

如果是多关节串联机器人,正运动学就是把每一段相邻变换连乘:

T(0 -> n) = T(0 -> 1) * T(1 -> 2) * ... * T(n-1 -> n)

其中:

T(0 -> n)

表示末端坐标系 {n} 相对于基座坐标系 {0} 的位姿。


7. D-H 坐标系的几何特征

D-H 坐标系的几何基础,是相邻两条关节轴线之间的关系。

两条空间直线可能出现三种典型情况:

轴线关系 几何特征 D-H 中的处理
异面 不平行也不相交,存在唯一公垂线 公垂线定义 x_i 轴,长度为 a_i
相交 两条轴线交于一点 交点可作为原点,a_i = 0
平行 有无穷多条公垂线 需要人为选择原点位置

7.1 异面轴线

当两条关节轴线异面时,它们之间存在唯一的最短连线,这条线就是公垂线。

在 D-H 建模中:

公垂线方向 -> x_i 轴方向
公垂线长度 -> a_i
公垂线与 z_i 的交点 -> 原点 O_i

这是最典型、最标准的情况。

7.2 相交轴线

当两条关节轴线相交时,它们之间的最短距离为 0。

因此:

a_i = 0

但这并不表示扭转角一定为 0。两条轴线可以相交但不平行,此时:

a_i = 0
α_i != 0

这点很重要:连杆长度和连杆扭角描述的是两件不同的事。

7.3 平行轴线

当两条关节轴线平行时,公垂线有无穷多条,因此原点位置不唯一。

这时通常需要人为选择一个方便的位置,使参数表尽量简单。

建模时要特别注意:平行轴线的 D-H 参数可能不唯一,只要最终正运动学一致,就是有效的建模。


image

8. D-H 坐标系的优点

D-H 法之所以被广泛使用,是因为它有几个明显优点。

8.1 参数数量少

一般三维刚体变换需要 6 个独立参数,而 D-H 法利用关节轴线之间的几何关系,把相邻连杆变换压缩为 4 个参数。

这让串联机械臂的运动学建模更加简洁。

8.2 物理意义明确

四个参数都有清楚的几何意义:

th:关节角
d:连杆偏距
a:连杆长度
al:连杆扭角

这比直接写一个任意的 4x4 齐次矩阵更容易检查和解释。

8.3 建模流程标准化

只要按规则建立坐标系,就可以机械地填写 D-H 参数表,再套用固定矩阵公式。

这使得不同机器人之间的建模过程可以保持统一。

8.4 适合串联机器人

串联机器人天然是一节一节连接的结构。

D-H 法正好按照相邻连杆建立变换,然后逐级连乘:

base -> link1 -> link2 -> ... -> end effector

因此它非常适合机械臂正运动学分析。


9. D-H 坐标系的局限性

D-H 法虽然经典,但不是万能方法。

9.1 主要适用于串联结构

D-H 法是为串联机器人设计的。对于并联机构、闭链机构、树形结构,它不能直接套用,通常需要额外约束方程或其他建模方法。

9.2 退化情况会导致参数不唯一

当相邻关节轴线平行、相交或重合时,D-H 坐标系会出现一些退化情况。

例如:

两轴相交:a_i = 0
两轴平行:公垂线不唯一
两轴重合:x_i 和原点位置都需要人为约定

这些情况下,D-H 参数表可能不唯一。

9.3 初学者容易混淆标准 D-H 和改进 D-H

最常见的错误包括:

  • 不清楚 z_i 到底沿哪个关节轴;
  • 不清楚 x_i 应该指向哪里;
  • 把标准 D-H 的参数表套进改进 D-H 的矩阵;
  • 把改进 D-H 的下标规则套进标准 D-H。

解决方法很简单:建模前明确约定,整套推导只使用一种规则。

9.4 不直接适合动力学建模

D-H 坐标系的原点通常放在关节轴线或公垂线交点上,而动力学建模还需要连杆质心、惯量矩阵和质量分布。

所以做动力学时,通常还需要额外建立质心坐标系,或者给出 D-H 坐标系到质心坐标系的固定变换。

9.5 与现代工程工具链不完全一致

ROS 常用 URDF 描述机器人结构,而 URDF 并不直接使用 D-H 参数。

在工程中,经常需要把 D-H 模型转换成 URDF 中的 link 和 joint 结构。转换时要特别注意坐标系方向、固定偏移和关节轴定义。


10. D-H 坐标系与其他坐标系的关系

实际机器人系统中,除了 D-H 坐标系,还会出现基坐标系、工具坐标系、传感器坐标系和质心坐标系。

10.1 与基坐标系的关系

D-H 的 {0} 坐标系通常固定在机器人基座上。

在 ROS 中,它可能对应 base_link,但不一定完全重合。

如果 base_link 和 D-H 的 {0} 坐标系之间存在固定偏移,就需要额外乘一个固定变换:

T(base_link -> end) = T(base_link -> 0) * T(0 -> n)

10.2 与工具坐标系的关系

D-H 正运动学通常求到最后一个连杆坐标系 {n}。

但实际控制中,机器人真正关心的往往是工具中心点 TCP,例如夹爪中心、焊枪端点、吸盘中心或针头出口。

如果工具坐标系 {tool} 相对于最后一个 D-H 坐标系 {n} 有固定偏移,则末端工具位姿为:

T(0 -> tool) = T(0 -> n) * T(n -> tool)

10.3 与质心坐标系的关系

D-H 坐标系主要服务于运动学,质心坐标系主要服务于动力学。

两者之间通常是固定变换:

T(link_i -> com_i)

其中 com_i 表示第 i 个连杆的质心坐标系。

做动力学建模时,需要结合连杆质量、质心位置和惯量参数,而不能只依赖 D-H 参数。


11. D-H 建模的完整流程

实际使用 D-H 法建模时,可以按下面步骤进行。

第一步:确定关节类型

先判断每个关节是转动关节还是移动关节。

转动关节:th 是变量
移动关节:d 是变量

第二步:画出所有关节轴线

对每一个关节,先确定它的运动轴。

这一步非常关键,因为 D-H 坐标系的 z 轴就是关节轴线。

第三步:建立每个连杆坐标系

按选定的 D-H 约定建立坐标系:

确定 z 轴
寻找相邻 z 轴之间的公垂线
确定 x 轴
确定原点
用右手定则确定 y 轴

第四步:填写 D-H 参数表

逐行填写:

θ_i, d_i, a_i, α_i

每一行对应一个关节或一段相邻坐标系变换。

第五步:写出相邻变换矩阵

将每一行参数代入标准 D-H 或改进 D-H 的矩阵公式。

例如标准 D-H:

T(i-1 -> i) = Rz(θ_i) * Tz(d_i) * Tx(a_i) * Rx(α_i)

第六步:连乘得到正运动学

从基座一路乘到末端:

T(0 -> n) = T(0 -> 1) * T(1 -> 2) * ... * T(n-1 -> n)

如果还有工具坐标系,再继续乘固定工具变换:

T(0 -> tool) = T(0 -> n) * T(n -> tool)

12. 建模时的常见检查项

完成 D-H 参数表后,建议检查以下内容:

  • 是否全程使用同一种 D-H 约定;
  • 每个 z 轴是否确实沿对应关节轴线;
  • 每个 x 轴是否沿相邻关节轴线的公垂线;
  • 坐标系是否满足右手定则;
  • 转动关节是否把 th 作为变量;
  • 移动关节是否把 d 作为变量;
  • 相交轴线处是否正确处理了 a = 0;
  • 平行轴线处是否清楚说明了原点选择;
  • 最终末端坐标系是否等于实际工具坐标系,如果不是,是否补充了工具变换。

13. 核心特征总结

特征 内容
参数数量 4 个:th, d, a, al
z 轴 沿关节轴线
x 轴 沿相邻关节轴线的公垂线
原点 通常在公垂线与关节轴线的交点
关节变量 转动关节为 th,移动关节为 d
固定参数 其余参数通常为固定机械结构参数
适用对象 串联机器人
标准 D-H 顺序 Rz(θ) * Tz(d) * Tx(a) * Rx(α)
改进 D-H 顺序 Rx(α) * Tx(a) * Rz(θ) * Tz(d)

14. 一句话总结

D-H 坐标系是一套用于串联机器人运动学建模的标准坐标系定义规则。它通过让 z 轴沿关节轴线、x 轴沿相邻关节轴线的公垂线,把相邻连杆之间原本复杂的空间位姿关系压缩成 4 个具有明确几何意义的参数。

学习 D-H 法时,最重要的不是先背矩阵,而是先理解坐标轴怎么放、原点怎么选、每个参数到底在描述哪一段旋转或平移。只要几何关系清楚,公式自然就变得容易理解。

posted @ 2026-09-19 18:30  lvdongjie-avatarx  阅读(44)  评论(0)    收藏  举报