2. 数学基础
机械臂机器人的动力学建模、控制算法设计与伺服关节运动轨迹规划,本质上都是建立在严谨的数学语言之上的。无论是描述末端执行器的位姿、计算雅可比矩阵,还是求解拉格朗日方程,都离不开向量与矩阵运算、刚体变换、旋转矩阵、齐次坐标以及Denavit-Hartenberg(DH)参数。本章作为课程的第二块基石,将系统梳理这些核心数学工具,并重点阐明它们如何在机械臂的关节空间与笛卡尔空间之间建立桥梁。理解这些概念,是后续掌握动力学方程推导与轨迹规划算法的前提。
2.1 向量与矩阵运算:机械臂分析的基本语言
核心原理:机械臂的每个连杆都可以抽象为刚体,其质心位置、速度、加速度以及受力状态均通过向量描述。在三维空间中,位置向量 p = [x, y, z]T 定义了空间中的一点,而姿态则通常由旋转矩阵或欧拉角描述。矩阵运算则用于将这些向量从一个坐标系映射到另一个坐标系。例如,雅可比矩阵 J(q) 将关节速度向量 q̇ 映射到末端笛卡尔速度向量 v = J(q)·q̇,这是速度级运动学与控制的基础。
关键运算规则:在机械臂工程中,最常用的矩阵运算包括:
- 矩阵乘法(非交换):变换矩阵的乘法顺序至关重要。T = T1·T2 表示先进行 T2 变换,再进行 T1 变换。在机械臂正运动学中,各关节的变换矩阵必须严格按照从基座到末端的顺序相乘。
- 矩阵转置与逆:旋转矩阵的逆等于其转置(R-1 = RT),这一性质用于坐标系间的反向变换。齐次变换矩阵的逆则用于将末端位姿映射回基座坐标系。
- 向量叉积:用于计算力矩(τ = r × F)以及构建雅可比矩阵的旋转部分。
实战场景:在六轴机器人(如典型的ER3A-C60)的逆解计算中,当给定末端目标位姿矩阵 Ttarget 时,我们通常通过左乘逆矩阵来分离关节变量。例如,为了求解第一个关节角 θ1,可将方程 Ttarget = A1(θ1)·A2(θ2)·...·A6(θ6) 两边同时左乘 A1-1,从而将 θ1 分离到等式左侧,便于解析求解。
| 运算类型 | 数学表达式 | 机械臂应用场景 |
|---|---|---|
| 点积 | a·b = |a||b|cosθ | 计算功 W = F·d,判断向量正交性 |
| 叉积 | a × b = |a||b|sinθ·n̂ | 计算力矩 τ = r × F,构建旋转雅可比 |
| 矩阵乘法 | C = A·B | 复合变换矩阵的连乘 |
| 矩阵逆 | A·A⁻¹ = I | 逆运动学求解、坐标系反变换 |
| 奇异值分解 | A = UΣVT | 分析雅可比矩阵的奇异性、可操作度 |
常见误区:初学者常混淆矩阵乘法的顺序。在计算 T = A1·A2 时,若先执行 A2 对应的关节运动,再执行 A1,则结果完全不同。在轨迹规划中,若需要末端沿笛卡尔直线运动,必须通过逆雅可比将笛卡尔速度映射为关节速度,而不能直接对关节角度做线性插值,否则末端轨迹将是一条曲线而非直线。
2.2 刚体变换与旋转矩阵:描述姿态的数学工具
核心原理:刚体变换包含旋转和平移两部分。旋转矩阵 R ∈ SO(3) 是一个 3×3 的正交矩阵,满足 RTR = I 且 det(R) = +1。它描述了刚体相对于参考坐标系的姿态。最基本的旋转矩阵是绕 X、Y、Z 轴的旋转,分别记为 Rx(θ)、Ry(θ)、Rz(θ)。任意姿态都可以通过这三个基本旋转的乘积组合表示。
旋转矩阵的构建与分解:在机械臂控制中,我们经常需要将末端执行器的姿态从旋转矩阵形式转换为欧拉角形式,以便于用户理解或进行插值。例如,使用 ZYX 欧拉角(偏航-俯仰-滚转),旋转矩阵可分解为 R = Rz(φ)·Ry(θ)·Rx(ψ)。但需要注意,欧拉角存在万向锁问题,即在特定角度下会丢失一个自由度。
经验提醒:在伺服关节的轨迹规划中,若使用欧拉角进行插值,必须确保路径不经过奇异点。更稳健的做法是使用四元数(Quaternion)进行姿态插值(Slerp),它避免了万向锁问题,且计算效率高。但在动力学方程中,旋转矩阵依然是表达惯性张量变换的首选形式。
案例拆解:假设一个六轴机器人末端需要从姿态 A(用旋转矩阵 RA 表示)运动到姿态 B(RB)。在笛卡尔空间规划时,我们首先计算相对旋转 ΔR = RAT·RB。然后,将 ΔR 转换为轴角表示(k, θ),其中 k 为旋转轴单位向量,θ 为旋转角度。接着,在轨迹规划周期内对 θ 进行插值(如梯形速度曲线),生成一系列中间旋转矩阵 R(t) = RA·Rot(k, θ(t))。这一过程避免了直接对矩阵元素线性插值导致的非正交化问题。
| 表示方法 | 参数数量 | 优点 | 缺点 |
|---|---|---|---|
| 旋转矩阵 | 9 | 无奇异,可直接用于矩阵运算 | 冗余,需正交化修正 |
| 欧拉角 | 3 | 直观,易于理解 | 万向锁问题,插值不平滑 |
| 轴角 | 4 | 紧凑,适合旋转插值 | 存在 0° 和 360° 的等价性 |
| 四元数 | 4 | 无奇异,插值平滑,计算快 | 不够直观,需转换 |
2.3 齐次坐标与齐次变换矩阵:统一平移与旋转
核心原理:为了将平移和旋转统一在一个矩阵运算中,我们引入齐次坐标。一个三维点 p = [x, y, z]T 的齐次坐标表示为 p̃ = [x, y, z, 1]T。相应地,齐次变换矩阵 T ∈ SE(3) 是一个 4×4 矩阵,其结构为:
T = [ R p ]
[ 0 1 ]
其中 R 是 3×3 旋转矩阵,p 是 3×1 平移向量。通过齐次变换矩阵,我们可以将旋转和平移复合为一次矩阵乘法。例如,将点 p 从坐标系 {B} 变换到坐标系 {A},只需计算 Ap = ATB · Bp。
链式变换规则:对于串联机械臂,从基座坐标系 {0} 到末端坐标系 {n} 的齐次变换矩阵为:
T_0n = T_01 · T_12 · T_23 · ... · T_(n-1)n
每一级 T_(i-1)i 描述了连杆 i 相对于连杆 i-1 的位姿。这正是 DH 参数法的核心思想。
操作流程:在伺服关节运动学解算中,我们通常将目标轨迹点表示为齐次变换矩阵序列。控制器在每个控制周期(如 1ms)内,读取当前关节角度 q,通过正运动学计算当前末端位姿 T_current,然后与期望位姿 T_desired 比较,计算位姿误差。该误差经过雅可比矩阵的逆映射为关节空间的位置修正量,最终输出为关节力矩指令。
风险说明:齐次变换矩阵的数值精度在长时间运行后可能因累积误差而下降。特别是在进行大量矩阵连乘时,浮点数的舍入误差会累积。因此,在实时控制系统中,建议定期对旋转矩阵进行正交化修正(如使用 Gram-Schmidt 过程),或直接使用四元数进行姿态状态估计,以避免矩阵退化。
2.4 DH参数:机械臂建模的标准方法
核心原理:Denavit-Hartenberg(DH)参数法是一种系统化描述相邻连杆之间相对位姿的方法。对于每个连杆 i,定义四个参数:
- θi(关节角):绕 Zi-1 轴从 Xi-1 旋转到 Xi 的角度(对于旋转关节是变量)。
- di(连杆偏距):沿 Zi-1 轴从 Xi-1 移动到 Xi 的距离。
- ai(连杆长度):沿 Xi 轴从 Zi-1 移动到 Zi 的距离。
- αi(连杆扭转角):绕 Xi 轴从 Zi-1 旋转到 Zi 的角度。
根据这四个参数,相邻坐标系的齐次变换矩阵为:
T_i = Rot(z, θ_i) · Trans(z, d_i) · Trans(x, a_i) · Rot(x, α_i)
展开后得到:
T_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 ]
标准DH vs 改进DH:标准DH(SDH)将坐标系固定在连杆的远端(i-1 系在关节 i-1 处),而改进DH(MDH)将坐标系固定在连杆的近端(i 系在关节 i 处)。MDH 在处理树状结构或闭链机构时更为方便,而 SDH 在串联开链中更常见。两者在参数定义上存在差异,使用时必须明确标注,否则会导致运动学计算错误。
| 对比维度 | 标准DH (SDH) | 改进DH (MDH) |
|---|---|---|
| 坐标系位置 | 连杆 i 的坐标系固定在关节 i 处 | 连杆 i 的坐标系固定在关节 i+1 处 |
| 变换顺序 | Rot(z,θ) → Trans(z,d) → Trans(x,a) → Rot(x,α) | Rot(x,α) → Trans(x,a) → Rot(z,θ) → Trans(z,d) |
| 适用场景 | 串联开链机器人(绝大多数工业机械臂) | 并联机器人、树状结构、闭链机构 |
| 参数含义 | ai 和 αi 描述连杆 i 自身的几何 | ai-1 和 αi-1 描述连杆 i-1 的几何 |
案例拆解:以典型的六轴关节机器人(如 KUKA KR6)为例,其前三个关节决定末端位置,后三个关节决定末端姿态。通过 DH 参数表,我们可以列出每个关节的 a、d、α 值(θ 为变量)。例如,关节 2 的 DH 参数可能为:a2 = 600mm(大臂长度),d2 = 0,α2 = 0°。将这些参数代入上述矩阵,连乘六个关节的 Ti 矩阵,即可得到末端位姿。在动力学建模中,这些 DH 参数同样用于计算每个连杆质心的位置和惯性张量,进而推导出惯性矩阵 M(q) 和科氏力矩阵 C(q, q̇)。
实战经验:在建立 DH 参数表时,务必先画出清晰的连杆坐标系图。一个常见的错误是 Z 轴方向选取不一致,导致 α 或 d 的符号错误。建议在完成 DH 表后,使用已知的零位姿态(所有关节角为 0)进行验证,检查末端位姿是否符合机械设计图纸。此外,对于带有偏心负载的关节,DH 参数中的 d 值可能需要根据实际质心位置进行修正,以保证动力学模型的准确性。
常见误区:许多初学者在计算正运动学时,容易将 DH 参数中的 θ 与实际的伺服电机编码器读数混淆。实际上,由于减速比的存在,电机转角 θ_m 与关节转角 θ 之间满足 θ = θ_m / N(N 为减速比)。在轨迹规划中,我们规划的是关节空间的角度 θ(t),而发送给伺服驱动器的指令是电机角度 θ_m(t) = N·θ(t)。忽略减速比会导致末端位置出现巨大偏差。