二、机器人运动学基础:刚体变换、齐次坐标、正运动学(DH参数法)、逆运动学求解方法

各位同学,咱们今天聊聊机器人运动学。说实话,这玩意儿是机器人控制的“地基”。你想想看,要让机械臂去抓一个杯子,你总得知道它每个关节转多少度,末端执行器在哪儿吧?这就是运动学要解决的事。

我个人习惯把运动学分成两半:正运动学和逆运动学。正运动学是“已知关节角度,求末端位姿”;逆运动学是“已知末端位姿,求关节角度”。前者是唯一的,后者嘛……嘿嘿,往往有多个解,甚至无解。我在项目里就吃过这个亏,后面会细说。

2.1 刚体变换:位置与姿态的描述

首先,咱们得搞清楚一个概念:刚体。说白了,就是一个不会变形的物体。机械臂的每个连杆,我们都可以看作刚体。描述一个刚体在空间中的状态,需要两个东西:位置和姿态。

  • 位置:用三维坐标 (x, y, z) 表示。这个简单,初中就学过。
  • 姿态:描述刚体“朝哪边看”。这就有意思了,可以用旋转矩阵、欧拉角、四元数等表示。

我个人最常用的是旋转矩阵。它是一个 3x3 的矩阵,每一列代表刚体坐标系的一个轴在参考坐标系中的投影。嗯,这里要注意:旋转矩阵是正交矩阵,它的逆等于它的转置。这个性质在后续计算中非常有用。

核心公式:刚体变换 = 旋转 + 平移

一个刚体在空间中的完整位姿,可以用一个 4x4 的齐次变换矩阵 T 来表示:

T = [ R   p ]
    [ 0   1 ]

其中 R 是 3x3 旋转矩阵,p 是 3x1 位置向量。

2.2 齐次坐标:为什么是4x4?

你可能会问:为什么非要用 4x4 矩阵?3x3 加个向量不行吗?

行,但不好用。因为连续的旋转和平移,如果用 3x3 矩阵加向量,写出来是:p' = R * p + t。这玩意儿没法写成简单的矩阵乘法形式。而用齐次坐标,把三维点 (x, y, z) 扩展成 (x, y, z, 1),一切就变得优雅了:

p' = T * p

连续变换就是矩阵连乘:T_total = T1 * T2 * T3 * ...。我在做轨迹规划时,经常需要把工具坐标系、工件坐标系、基坐标系来回变换,齐次坐标让这些操作变得像搭积木一样简单。

小技巧:齐次坐标的最后一个分量 w,通常取 1 表示点,取 0 表示方向向量。方向向量只旋转,不平移。这个细节在计算雅可比矩阵时特别重要。

2.3 正运动学:DH参数法

好了,重头戏来了。DH参数法(Denavit-Hartenberg)是描述机器人连杆之间关系的标准方法。它用四个参数来定义相邻两个连杆的变换:

参数 符号 含义
连杆长度 ai-1 沿 xi-1 轴,从 zi-1 到 zi 的距离
连杆扭角 αi-1 绕 xi-1 轴,从 zi-1 到 zi 的角度
连杆偏距 di 沿 zi 轴,从 xi-1 到 xi 的距离
关节角 θi 绕 zi 轴,从 xi-1 到 xi 的角度

有了这四个参数,相邻连杆的变换矩阵就是:

T_i = Rot_x(α_{i-1}) * Trans_x(a_{i-1}) * Rot_z(θ_i) * Trans_z(d_i)

展开后是一个 4x4 矩阵。把所有连杆的 T_i 乘起来,就得到末端执行器相对于基座的位姿。

避坑指南:我曾经在搭建一个六轴机器人模型时,把 DH 参数的符号搞反了。结果仿真时机械臂像喝醉了酒一样乱晃。后来花了整整一个下午才排查出来——原来是 α 的正负号定义跟标准不一致。所以,一定要先确认你用的是标准 DH 还是改进 DH,两者在坐标系建立上略有差异。

2.4 逆运动学求解方法

正运动学是“给角度求位置”,逆运动学是“给位置求角度”。后者才是真正的难点。

为什么难?因为逆运动学通常有多个解,甚至无解。比如,你让机械臂去抓一个点,它可能“肘部朝上”或“肘部朝下”都能到达。这就是多解问题。

常用的求解方法有:

  • 解析法(封闭解):通过代数或几何方法直接求出关节角。速度快,但只适用于特定构型的机器人(如满足 Pieper 准则的机器人)。
  • 数值法(迭代法):如牛顿-拉夫森法、雅可比伪逆法。通用性强,但计算慢,且可能陷入局部最优。

我个人偏好解析法。只要机器人构型允许,解析法是最可靠的。我记得有一次做焊接机器人项目,要求实时性很高,数值法根本跑不动。后来改用解析法,计算时间从 5 毫秒降到了 0.1 毫秒。

实用建议:在实际项目中,我通常这样处理逆运动学:

  1. 先判断目标位姿是否在可达工作空间内。
  2. 如果在,用解析法求出所有可能解。
  3. 根据当前关节角度,选择“最近”的解(最小关节位移)。
  4. 检查是否与障碍物碰撞。

这一套流程下来,基本不会出大问题。

2.5 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张图:

机器人运动学基础 正运动学 逆运动学 刚体变换 齐次坐标 DH参数法 解析法 数值法 轨迹规划与控制 正运动学:关节角 → 末端位姿(唯一解) 逆运动学:末端位姿 → 关节角(多解/无解) 核心工具:齐次变换矩阵、DH参数

这张图把本章的核心逻辑串起来了。你从正运动学和逆运动学两个入口进去,中间经过刚体变换、齐次坐标、DH参数这些工具,最终都服务于轨迹规划。

个人经验:学运动学,千万别死记公式。我建议你找个开源机器人模型(比如 UR5 的 DH 参数表),自己动手推导一遍正运动学,再用 Python 或 MATLAB 验证。踩过坑,才能真正理解。

好了,运动学基础就聊到这儿。记住:正运动学是“已知关节,求位姿”,逆运动学是“已知位姿,求关节”。前者是后者的基础,后者是前者的逆过程。两者缺一不可。

可可精品资料库