2. 机器人运动学基础(上):齐次变换矩阵、DH参数法与正运动学建模
各位同学,欢迎来到第二章。这一章是机器人学的“地基”——运动学基础。说白了,就是搞清楚机器人每个关节动一下,末端到底会跑到哪里去。
我个人习惯把运动学分成两块:正运动学和逆运动学。正运动学是已知关节角度,求末端位姿;逆运动学反过来。本章我们先啃正运动学这块硬骨头。
2.1 齐次变换矩阵:描述位姿的“瑞士军刀”
在机器人学里,我们不光要知道一个点在哪(位置),还得知道它朝哪个方向(姿态)。齐次变换矩阵就是同时干这两件事的。
一个4×4的齐次变换矩阵长这样:
| R(3×3) P(3×1) |
| 0 0 0 1 |
左上角3×3是旋转矩阵,描述姿态;右上角3×1是平移向量,描述位置。最后一行是固定的[0 0 0 1],用来保证矩阵乘法能串联变换。
为什么叫“齐次”? 因为我们在三维坐标(x,y,z)后面加了个1,变成(x,y,z,1)。这样旋转和平移就能用一个矩阵乘法搞定,不用分开算。
2.2 DH参数法:标准DH vs 改进DH
DH参数法(Denavit-Hartenberg)是机器人运动学建模的经典方法。它用4个参数来描述相邻两个连杆之间的变换关系。
这4个参数分别是:
- θ (关节角):绕Z轴的旋转角
- d (连杆偏距):沿Z轴的平移距离
- a (连杆长度):沿X轴的平移距离
- α (连杆扭角):绕X轴的旋转角
但这里有个坑——DH参数有两种主流版本:标准DH (Standard DH) 和 改进DH (Modified DH)。很多初学者在这里栽跟头。
| 对比项 | 标准DH (SDH) | 改进DH (MDH) |
|---|---|---|
| 坐标系附着位置 | 附着在连杆i的输出端 | 附着在连杆i的输入端 |
| 变换顺序 | 先绕Z轴旋转θ,再沿Z轴平移d,再沿X轴平移a,最后绕X轴旋转α | 先绕X轴旋转α,再沿X轴平移a,再绕Z轴旋转θ,最后沿Z轴平移d |
| 常见应用 | 传统工业机器人(如PUMA 560) | 现代机器人、移动机器人、树形结构 |
| 参数定义 | θ和d是关节变量,a和α是连杆常数 | θ和d是关节变量,a和α是连杆常数(但坐标系定义不同) |
2.2.1 标准DH的变换矩阵
标准DH从连杆i-1到连杆i的变换矩阵为:
T_i = Rot(z, θ_i) · Trans(z, d_i) · Trans(x, a_i) · Rot(x, α_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 |
T_i = | 0 sinα_i cosα_i d_i |
| 0 0 0 1 |
2.2.2 改进DH的变换矩阵
改进DH从连杆i-1到连杆i的变换矩阵为:
T_i = Rot(x, α_{i-1}) · Trans(x, a_{i-1}) · Rot(z, θ_i) · Trans(z, d_i)
| cosθ_i -sinθ_i 0 a_{i-1} |
| sinθ_i·cosα_{i-1} cosθ_i·cosα_{i-1} -sinα_{i-1} -d_i·sinα_{i-1} |
T_i = | sinθ_i·sinα_{i-1} cosθ_i·sinα_{i-1} cosα_{i-1} d_i·cosα_{i-1} |
| 0 0 0 1 |
2.3 正运动学建模:从关节角到末端位姿
正运动学建模的流程其实很简单:
- 建立连杆坐标系:按照DH规则,在每个关节处建立坐标系
- 填写DH参数表:把每个连杆的θ、d、a、α填进去
- 计算单个变换矩阵:用DH公式算出每个相邻连杆的变换矩阵T_i
- 链式相乘:T_0n = T_1 · T_2 · ... · T_n,得到从基座到末端的总变换
嗯,这里要注意——第4步的链式相乘,顺序不能乱。矩阵乘法不满足交换律,你调换顺序,末端位置就飞到天上去了。
2.3.1 一个简单的2自由度机械臂例子
假设我们有一个2自由度平面机械臂:
- 连杆1长度L1,关节角θ1
- 连杆2长度L2,关节角θ2
用标准DH建模,参数表如下:
| 连杆i | θ_i | d_i | a_i | α_i |
|---|---|---|---|---|
| 1 | θ1 | 0 | L1 | 0 |
| 2 | θ2 | 0 | L2 | 0 |
代入标准DH公式,得到两个变换矩阵:
T_1 = | cosθ1 -sinθ1 0 L1·cosθ1 |
| sinθ1 cosθ1 0 L1·sinθ1 |
| 0 0 1 0 |
| 0 0 0 1 |
T_2 = | cosθ2 -sinθ2 0 L2·cosθ2 |
| sinθ2 cosθ2 0 L2·sinθ2 |
| 0 0 1 0 |
| 0 0 0 1 |
总变换矩阵 T_02 = T_1 · T_2,末端位置就在T_02的右上角:
x = L1·cosθ1 + L2·cos(θ1+θ2)
y = L1·sinθ1 + L2·sin(θ1+θ2)
你看,这就是正运动学——输入θ1和θ2,输出(x,y)。
2.4 本章知识体系总览
为了让你对本章内容有个整体把握,我画了一张结构图:
2.5 本章小结
这一章我们干了三件事:
- 齐次变换矩阵:用4×4矩阵统一描述旋转和平移,是运动学计算的“基本单元”
- DH参数法:标准DH和改进DH的区别与选择,4个参数的物理含义
- 正运动学建模:从关节角到末端位姿的完整计算流程
嗯,今天就到这里。记住:运动学是机器人学的“语法”,不掌握它,后面的标定、控制、轨迹规划都无从谈起。动手把2自由度机械臂的例子在纸上算一遍,比看十遍公式都管用。