4、机器人运动学建模:D-H参数法、正运动学、逆运动学求解方法(解析法、数值法)及典型六轴机械臂案例
机器人运动学建模是连接机械结构设计与控制算法的核心桥梁。本章围绕工业机器人中最常见的六轴串联机械臂,系统讲解D-H参数法的建模规范、正运动学变换流程、逆运动学的解析法与数值法求解策略,并通过典型六轴机械臂案例将理论映射到工程实现。运动学建模的质量直接决定了轨迹规划精度、奇异位形规避能力以及控制系统的实时性表现,因此本章内容既是机器人学的基础,也是实际工程调试中不可或缺的关键环节。
4.1 D-H参数法:机器人运动学建模的通用语言
4.1.1 核心原理:从关节空间到笛卡尔空间的映射规则
D-H(Denavit-Hartenberg)参数法通过在每个连杆上固连坐标系,用四个基本参数描述相邻连杆之间的相对位姿关系。这四个参数分别为:连杆长度ai(沿xi轴方向,从zi-1轴移动到zi轴的距离)、连杆扭转角αi(绕xi轴,从zi-1轴旋转到zi轴的角度)、关节偏置di(沿zi-1轴方向,从xi-1轴移动到xi轴的距离)、关节角θi(绕zi-1轴,从xi-1轴旋转到xi轴的角度)。对于旋转关节,θi是变量;对于移动关节,di是变量。
D-H参数法的核心价值在于将复杂的空间几何关系转化为标准化的矩阵运算。每个相邻连杆的齐次变换矩阵Ai由四个基本变换复合而成:先绕zi-1轴旋转θi,再沿zi-1轴平移di,然后沿xi轴平移ai,最后绕xi轴旋转αi。这种标准化的建模方式使得不同构型的机器人可以采用统一的数学框架进行描述。
| 参数符号 | 物理含义 | 几何描述 | 变量类型 |
|---|---|---|---|
| ai | 连杆长度 | 沿xi轴,zi-1到zi的距离 | 常量(结构参数) |
| αi | 连杆扭转角 | 绕xi轴,zi-1到zi的转角 | 常量(结构参数) |
| di | 关节偏置 | 沿zi-1轴,xi-1到xi的距离 | 旋转关节为常量,移动关节为变量 |
| θi | 关节角 | 绕zi-1轴,xi-1到xi的转角 | 旋转关节为变量,移动关节为常量 |
4.1.2 操作流程:D-H坐标系的建立步骤
建立D-H坐标系需要遵循严格的步骤,任何一步的偏差都会导致后续计算错误。具体流程如下:
- 确定关节轴线:找出所有关节的旋转轴或移动轴,用zi-1轴表示第i个关节的轴线方向。
- 确定原点位置:对于相邻关节i和i+1,zi轴与zi-1轴的公垂线与zi轴的交点即为坐标系{i}的原点。
- 确定x轴方向:xi轴沿zi-1轴与zi轴的公垂线方向,由关节i指向关节i+1。
- 确定y轴方向:根据右手定则,yi = zi × xi。
- 填写参数表:逐一测量或从CAD模型中提取ai、αi、di、θi的值。
4.1.3 案例拆解:典型六轴机械臂的D-H参数表
以ABB IRB1200工业机器人为例,其结构参数如下:a1=150mm,a2=600mm,a3=120mm,d1=400mm,d4=620mm,d6=100mm。根据其关节配置,可建立如下D-H参数表:
| 关节i | ai (mm) | αi (°) | di (mm) | θi (°) | 关节范围 (°) |
|---|---|---|---|---|---|
| 1 | 150 | -90 | 400 | θ1 | -170 ~ +170 |
| 2 | 600 | 0 | 0 | θ2 | -100 ~ +100 |
| 3 | 120 | -90 | 0 | θ3 | -120 ~ +120 |
| 4 | 0 | 90 | 620 | θ4 | -170 ~ +170 |
| 5 | 0 | -90 | 0 | θ5 | -120 ~ +120 |
| 6 | 0 | 0 | 100 | θ6 | -360 ~ +360 |
该参数表的建立过程体现了D-H法的典型应用:前三个关节(J1-J3)决定机械臂腕部中心的位置,后三个关节(J4-J6)决定末端执行器的姿态。这种结构设计使得逆运动学求解可以解耦为位置求解和姿态求解两个子问题。
4.1.4 常见误区与总结复盘
- 误区一:坐标系方向定义混乱。z轴方向必须沿关节轴线,且正方向的选择会影响αi的正负号。建议统一采用右手定则,并在建模文档中明确标注。
- 误区二:忽略关节偏置di。许多初学者容易将di误设为0,导致末端位置计算偏差。对于存在偏置的关节(如J4),必须准确测量。
- 误区三:参数单位不一致。长度单位统一用mm,角度单位统一用度(°),在编程计算时需转换为弧度。
4.2 正运动学:从关节空间到笛卡尔空间的映射
4.2.1 核心原理:齐次变换矩阵的连乘
正运动学的目标是已知各关节角θ1~θ6,求解末端执行器在基座坐标系下的位置和姿态。其数学本质是六个齐次变换矩阵的连乘:T06 = A1·A2·A3·A4·A5·A6。每个Ai矩阵是4×4的齐次变换矩阵,包含旋转子矩阵Ri(3×3)和平移向量pi(3×1)。
正运动学的计算过程虽然机械,但需要特别注意矩阵乘法的顺序。由于矩阵乘法不满足交换律,A1·A2 ≠ A2·A1,因此必须严格按照从基座到末端的顺序进行连乘。在实际编程中,建议使用矩阵库(如Eigen、NumPy)进行运算,避免手写矩阵乘法带来的错误。
4.2.2 操作流程:正运动学计算步骤
- 输入关节角:获取当前各关节的编码器读数,转换为弧度制。
- 构建各关节变换矩阵:根据D-H参数表,逐一计算A1到A6。
- 矩阵连乘:按顺序计算T06 = A1·A2·A3·A4·A5·A6。
- 提取结果:从T06中提取旋转矩阵R(3×3)和位置向量p(3×1)。
- 姿态表示转换:将旋转矩阵转换为欧拉角或四元数,便于后续控制使用。
// 正运动学计算示例(Python伪代码)
import numpy as np
def dh_transform(a, alpha, d, theta):
"""计算单个D-H变换矩阵"""
ct = np.cos(theta); st = np.sin(theta)
ca = np.cos(alpha); sa = np.sin(alpha)
return np.array([
[ct, -st*ca, st*sa, a*ct],
[st, ct*ca, -ct*sa, a*st],
[0, sa, ca, d],
[0, 0, 0, 1]
])
# 假设D-H参数表已定义
T06 = np.eye(4)
for i in range(6):
T06 = T06 @ dh_transform(a[i], alpha[i], d[i], theta[i])
4.2.3 案例拆解:IRB1200正运动学验证
假设IRB1200处于零位(所有关节角为0°),代入D-H参数表计算末端位姿。此时各关节变换矩阵为:A1 = Trans(150,0,400)·Rot(x,-90°),A2 = Trans(600,0,0),A3 = Trans(120,0,0)·Rot(x,-90°),A4 = Trans(0,0,620)·Rot(x,90°),A5 = Trans(0,0,0)·Rot(x,-90°),A6 = Trans(0,0,100)。连乘后得到末端位置约为(870, 0, 1120)mm,姿态为单位矩阵(末端坐标系与基座坐标系姿态一致)。
这一结果与CAD模型中的测量值一致,验证了D-H参数表的正确性。在实际工程中,正运动学验证是机器人调试的第一步,通常使用激光跟踪仪或高精度测量臂对末端位置进行实测,与理论计算值对比,误差应小于0.5mm。
4.2.4 常见误区与总结复盘
- 误区一:矩阵乘法顺序错误。必须从基座开始依次左乘,不能随意调换顺序。
- 误区二:角度单位混淆。三角函数计算时角度必须为弧度制,否则结果完全错误。
- 误区三:忽略工具坐标系变换。实际应用中,末端执行器(如焊枪、夹爪)通常有额外的工具偏移,需要在T06基础上再乘工具变换矩阵T6tool。
4.3 逆运动学:从笛卡尔空间到关节空间的逆向求解
4.3.1 核心原理:多解性与求解策略
逆运动学问题比正运动学复杂得多:已知末端位姿T06,求解满足条件的关节角θ1~θ6。由于机器人运动学方程是非线性方程组,逆运动学通常存在多解(最多可达16组解),且部分解可能超出关节限位或处于奇异位形。求解方法主要分为两大类:解析法(封闭解)和数值法(迭代解)。
解析法通过代数消元或几何分解直接求出关节角的表达式,计算速度快、精度高,但仅适用于满足Pieper准则的机器人(即相邻三个关节轴交于一点或平行)。数值法基于雅可比矩阵迭代求解,通用性强但计算量大,且可能陷入局部最优。对于六轴机械臂,由于后三个关节通常设计为腕部交汇于一点,因此优先采用解析法。
| 对比维度 | 解析法 | 数值法 |
|---|---|---|
| 计算速度 | 快(微秒级) | 慢(毫秒级) |
| 精度 | 高(浮点精度) | 受迭代次数和容差影响 |
| 多解处理 | 可显式列出所有解 | 只能得到一组解 |
| 适用条件 | 满足Pieper准则 | 任意构型 |
| 奇异位形处理 | 可提前判断 | 雅可比矩阵奇异时失效 |
| 实时性 | 适合高速控制 | 适合离线规划 |
4.3.2 操作流程:解析法求解步骤(以IRB1200为例)
IRB1200满足Pieper准则(J4、J5、J6轴线交于一点),因此可以采用解析法。求解过程分为两步:先求腕部中心位置,再求姿态角。
- 计算腕部中心位置:末端位置p6减去工具长度d6沿z6轴方向的偏移,得到腕部中心点pw = p6 - d6·R·[0,0,1]T。
- 求解θ1:θ1 = atan2(pwy, pwx),注意存在两个解(相差180°)。
- 求解θ2和θ3:将问题转化为平面二连杆机构的逆运动学,利用余弦定理求解。
- 求解θ4、θ5、θ6:根据末端姿态矩阵R06和已求得的θ1~θ3,计算R36 = (R03)T·R06,然后从R36中提取欧拉角。
- 筛选有效解:检查所有解是否在关节限位范围内,选择最优解(通常按关节运动量最小原则)。
4.3.3 案例拆解:IRB1200逆运动学求解与多解选择
假设目标末端位姿为:位置p = (500, 300, 800)mm,姿态为绕z轴旋转30°(即R = Rot(z,30°))。通过解析法求解,得到8组候选解。经过关节限位筛选后,剩余4组有效解。进一步按"关节角变化最小"原则选择最优解:
| 解编号 | θ1 (°) | θ2 (°) | θ3 (°) | θ4 (°) | θ5 (°) | θ6 (°) | 是否有效 |
|---|---|---|---|---|---|---|---|
| 1 | 30.96 | -45.2 | 78.5 | 15.3 | 60.1 | -20.4 | ✓ |
| 2 | 30.96 | -45.2 | 78.5 | -164.7 | -60.1 | 159.6 | ✓ |
| 3 | -149.04 | 45.2 | -78.5 | 15.3 | 60.1 | -20.4 | ✗(超限) |
| 4 | -149.04 | 45.2 | -78.5 | -164.7 | -60.1 | 159.6 | ✗(超限) |
从有效解中,若当前关节角为(10°, -30°, 50°, 20°, 40°, -10°),则解1的关节角变化量更小,因此选择解1作为最优解。这种多解选择策略在轨迹规划中至关重要,可以避免关节角的突变。
4.3.4 常见误区与总结复盘
- 误区一:忽略多解性。逆运动学求解后必须进行多解筛选,否则可能导致关节角跳变。
- 误区二:奇异位形处理不当。当机械臂处于奇异位形(如腕部中心位于J1轴线上)时,雅可比矩阵奇异,数值法失效,解析法也会出现退化。
- 误区三:数值法初值选择不当。牛顿-拉夫森迭代法对初值敏感,建议使用上一时刻的解作为初值,或采用阻尼最小二乘法提高鲁棒性。
4.4 典型六轴机械臂案例:从建模到仿真验证
4.4.1 案例背景与目标
某汽车零部件生产线需要部署一台六轴机械臂进行搬运作业。要求机械臂能够将工件从传送带位置A(坐标(400, 200, 600)mm)搬运至装配台位置B(坐标(600, -100, 800)mm),且末端姿态在搬运过程中保持水平(即z轴始终竖直向上)。选用IRB1200机械臂,需完成运动学建模、正逆运动学验证和轨迹规划。
4.4.2 建模与仿真过程
第一步:建立D-H参数表。根据IRB1200官方手册,提取4.1.3节中的参数表。
第二步:正运动学验证。在MATLAB