4、机械臂结构参数:D-H 参数法(标准与改进),建立连杆坐标系,推导正运动学模型
机械臂的正运动学建模是运动规划与控制的基础,其核心任务是根据各关节角度求解末端执行器在基坐标系中的位姿。在众多建模方法中,Denavit-Hartenberg(D-H)参数法以其系统性和规范性成为工业与学术领域最通用的工具。本章将深入剖析标准D-H法(SDH)与改进D-H法(MDH)的数学本质、坐标系建立规则、参数定义差异,并给出完整的正运动学推导流程。理解这两种方法的区别与适用场景,对于后续的雅可比矩阵计算、奇异性分析以及轨迹规划至关重要。
上图清晰地展示了标准D-H法与改进D-H法在坐标系附着位置和参数定义上的核心差异。标准D-H法将坐标系{i}固连在连杆的远端(即关节i+1处),而改进D-H法则将坐标系{i}固连在连杆的近端(即关节i处)。这一差异直接导致了两者在变换矩阵乘法顺序上的不同。下面我们将从核心原理、操作流程、案例拆解和常见误区四个维度展开详细论述。
4.1 核心原理:D-H参数法的数学本质与几何意义
D-H参数法的本质是用四个独立参数(a、α、d、θ)来描述相邻两个连杆坐标系之间的空间变换关系。这四个参数分别对应一次沿X轴的平移、一次绕X轴的旋转、一次沿Z轴的平移和一次绕Z轴的旋转。通过这四个参数的组合,可以唯一确定相邻坐标系间的齐次变换矩阵,从而将复杂的空间几何关系转化为代数运算。
在标准D-H法中,变换矩阵的构建顺序为:先绕Zi-1轴旋转θi,再沿Zi-1轴平移di,然后沿Xi轴平移ai,最后绕Xi轴旋转αi。其数学表达式为:
T_i = RotZ(θ_i) · TransZ(d_i) · TransX(a_i) · RotX(α_i)
而改进D-H法则采用不同的顺序:先绕Xi-1轴旋转αi-1,再沿Xi-1轴平移ai-1,然后绕Zi轴旋转θi,最后沿Zi轴平移di。其表达式为:
T_i = RotX(α_{i-1}) · TransX(a_{i-1}) · RotZ(θ_i) · TransZ(d_i)
从几何角度看,标准D-H法的参数ai和αi描述的是连杆i自身的几何属性(长度和扭转角),而di和θi描述的是相邻连杆间的相对位置关系。改进D-H法则将ai-1和αi-1定义为连杆i-1的属性,di和θi描述关节i的运动。这种差异在树形结构或闭链机构中尤为明显,改进D-H法因其坐标系附着在近端,更容易处理分支机构的建模。
知识结构对比表:标准D-H法与改进D-H法
| 对比维度 | 标准D-H法 (SDH) | 改进D-H法 (MDH) |
|---|---|---|
| 坐标系附着位置 | 连杆远端(关节i+1处) | 连杆近端(关节i处) |
| Z轴方向 | 沿关节轴i+1 | 沿关节轴i |
| 参数下标 | ai, αi, di, θi | ai-1, αi-1, di, θi |
| 变换顺序 | RotZ→TransZ→TransX→RotX | RotX→TransX→RotZ→TransZ |
| 适用场景 | 串联开链机器人(如6轴工业机械臂) | 树形结构、闭链机构、移动机器人 |
| 参数辨识难度 | 相对简单,参数物理意义直观 | 对并联机构更友好,但参数下标易混淆 |
4.2 判断方法与操作流程:从机械结构到D-H参数表的完整步骤
建立D-H坐标系并推导正运动学模型,需要遵循一套严谨的操作流程。首先,需要根据机械臂的实际结构确定关节轴线和连杆编号。通常,基座为连杆0,末端执行器为连杆n,关节i连接连杆i-1和连杆i。然后,按照以下步骤建立坐标系:
- 确定Z轴方向:对于旋转关节,Zi-1轴沿关节轴i的旋转方向(右手定则);对于移动关节,Zi-1轴沿移动方向。
- 确定原点位置:对于标准D-H法,原点Oi位于Zi-1轴与Zi轴的公垂线与Zi轴的交点处;若Zi-1与Zi相交,则原点取在交点处。
- 确定X轴方向:Xi轴沿Zi-1与Zi的公垂线方向,由关节i指向关节i+1。
- 确定Y轴方向:根据右手定则,Yi = Zi × Xi。
- 填写参数表:根据坐标系间的几何关系,逐一确定ai、αi、di、θi的值。
在填写参数表时,需要注意几个关键判断点:当两相邻关节轴平行时,公垂线不唯一,此时可任意选择使di为零的位置;当两轴相交时,ai为零;当两轴垂直时,αi为±90°。这些特殊情况在工业机器人中非常常见,例如大多数6轴机器人的关节2和关节3轴线平行,关节4和关节5轴线垂直。
实战经验:在MATLAB中建立D-H参数表时,建议使用结构体数组或表格(table)数据类型,将每个连杆的四个参数作为一行存储。这样便于后续批量计算变换矩阵,也方便参数修改和调试。例如:dh_params = [a1 alpha1 d1 theta1; a2 alpha2 d2 theta2; ...]。
4.3 案例拆解:六自由度关节型机械臂的正运动学建模
以典型的六自由度关节型工业机械臂(如ABB IRB 120或KUKA KR6)为例,其结构特点为:前三个关节决定末端位置,后三个关节决定末端姿态(腕部)。我们采用标准D-H法建立其运动学模型。该机械臂的D-H参数表如下:
| 连杆i | ai (mm) | αi (°) | di (mm) | θi (°) |
|---|---|---|---|---|
| 1 | 0 | -90 | 290 | θ1 |
| 2 | 270 | 0 | 0 | θ2-90 |
| 3 | 70 | -90 | 0 | θ3 |
| 4 | 0 | 90 | 302 | θ4 |
| 5 | 0 | 90 | 0 | θ5 |
| 6 | 0 | 0 | 72 | θ6 |
注意,连杆2的θ2参数中包含了-90°的偏置,这是为了确保当机械臂处于零位(所有关节角为0)时,末端执行器指向正上方。在MATLAB中,我们可以编写如下代码计算正运动学:
% 定义D-H参数
a = [0, 270, 70, 0, 0, 0];
alpha = [-pi/2, 0, -pi/2, pi/2, pi/2, 0];
d = [290, 0, 0, 302, 0, 72];
theta = [0, -pi/2, 0, 0, 0, 0]; % 零位角度
% 计算变换矩阵
T = eye(4);
for i = 1:6
Ti = [cos(theta(i)), -sin(theta(i))*cos(alpha(i)), sin(theta(i))*sin(alpha(i)), a(i)*cos(theta(i));
sin(theta(i)), cos(theta(i))*cos(alpha(i)), -cos(theta(i))*sin(alpha(i)), a(i)*sin(theta(i));
0, sin(alpha(i)), cos(alpha(i)), d(i);
0, 0, 0, 1];
T = T * Ti;
end
disp('末端位姿矩阵 T_06 =');
disp(T);
运行上述代码后,得到的T矩阵即为末端执行器在基坐标系中的位姿。通过提取T矩阵的前三行前三列得到旋转矩阵R,前三行第四列得到位置向量p。例如,在零位时,末端位置应为[270+70, 0, 290+302+72] = [340, 0, 664](单位mm),旋转矩阵应为单位阵。这个结果可以用于验证建模的正确性。
风险提示:在推导过程中,最常见的错误是混淆标准D-H和改进D-H的参数下标。例如,在改进D-H法中,ai-1和αi-1属于连杆i-1,而θi和di属于关节i。如果混用,会导致变换矩阵完全错误。建议在编写代码时,将参数表与坐标系定义图对照检查。
4.4 常见误区与总结复盘
在D-H参数法的学习与应用中,初学者常陷入以下几个误区:
- 坐标系方向判断错误:Z轴方向必须严格沿关节轴方向,且旋转正方向遵循右手定则。若Z轴方向取反,会导致θ角符号错误。
- 公垂线选择不当:当两相邻Z轴平行时,公垂线有无数条,此时应选择使di=0的简化方案,但需注意这会影响后续连杆的坐标系原点位置。
- 参数单位混淆:a和d的单位是长度(mm或m),α和θ的单位是角度(°或rad)。在MATLAB中,三角函数默认使用弧度,需统一转换。
- 忽略关节偏置:许多工业机器人在D-H参数表中包含固定的角度偏置(如案例中的θ2-90°),这是为了定义零位姿态。若忽略偏置,正运动学结果将整体旋转。
总结复盘时,建议采用以下验证策略:首先,将全部关节角设为零,检查末端位姿是否与机械臂的实际零位一致;其次,逐一单独转动某个关节,观察末端位置的变化轨迹是否合理(如旋转关节应产生圆弧轨迹);最后,使用MATLAB Robotics Toolbox中的SerialLink对象进行交叉验证,对比手动推导与工具箱计算的结果。
复盘清单:
- □ 所有Z轴是否沿关节轴方向?
- □ 所有X轴是否沿公垂线方向?
- □ 参数表中的a、α、d、θ是否与坐标系图一一对应?
- □ 变换矩阵的乘法顺序是否正确(SDH: RZ·TZ·TX·RX)?
- □ 零位验证是否通过?
- □ 单关节运动验证是否通过?
通过本章的学习,读者应能够独立完成任意串联机械臂的D-H建模与正运动学推导。在下一阶段的课程中,我们将基于此模型进一步讨论逆运动学求解与轨迹规划算法。掌握D-H参数法的精髓,不仅在于记住公式,更在于理解其几何意义和适用边界,这样才能在实际工程中灵活运用,避免因建模错误导致的控制事故。