# 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 参数可能不唯一,只要最终正运动学一致,就是有效的建模。

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

浙公网安备 33010602011771号