第二节:机器人运动学基础——齐次变换矩阵、DH参数法、正运动学建模

各位同学,大家好。今天我们聊点硬核的——机器人运动学基础。

说实话,我刚入行那会儿,觉得运动学就是一堆矩阵乘法,枯燥得很。直到有一次在现场调试六轴机器人,发现末端位置死活对不上,才意识到:运动学不是数学题,是工程命脉。你算不对,机器人就撞。

好,咱们开始。

2.1 齐次变换矩阵:机器人的“坐标翻译官”

先问一个问题:机器人怎么知道自己的手在哪儿?

答案是——它不知道。它只知道每个关节转了多少度。至于手在空间中的位置,全靠我们帮它算。这个计算工具,就是齐次变换矩阵。

齐次变换矩阵长这样:

| R(3x3)   T(3x1) |
| 0 0 0     1     |

左边3x3是旋转矩阵,描述姿态;右边3x1是平移向量,描述位置。最后一行固定是[0 0 0 1],这是齐次坐标的规矩。

我个人习惯把齐次变换矩阵理解为“坐标翻译官”。比如,从基座坐标系到末端坐标系,中间经过N个关节,每个关节都有一个变换矩阵。把这些矩阵乘起来,就得到了末端在基座下的位姿。

核心公式:

T_0_n = T_0_1 × T_1_2 × ... × T_{n-1}_n

注意:矩阵乘法不满足交换律,顺序错了,结果全错。

我的小技巧: 写代码时,我习惯把每个变换矩阵单独定义,然后按顺序相乘。千万别图省事写在一行里,调试时你会哭的。

2.2 DH参数法:标准化你的机器人

有了齐次变换矩阵,理论上我们可以描述任意两个坐标系的关系。但问题来了——每个关节的坐标系怎么建? 没有统一标准,你建一个样,我建一个样,代码根本没法复用。

这时候,DH参数法就登场了。

DH参数法说白了,就是给每个关节定了四个参数:

参数 符号 含义
连杆长度 a 相邻两关节轴线的公垂线长度
连杆扭角 α 相邻两关节轴线的夹角
关节距离 d 沿关节轴线的偏移量
关节角度 θ 绕关节轴线的旋转角度

有了这四个参数,任意两个相邻关节的变换矩阵就可以写成标准形式:

T_i = Rot(z, θ_i) × Trans(z, d_i) × Trans(x, a_i) × Rot(x, α_i)

你想想看,只要把每个关节的DH参数填进去,整个机器人的运动学模型就建好了。是不是很优雅?

避坑指南: 我曾经在项目里吃过DH参数符号的亏。不同教材对a、d、α的定义可能不同,有的用标准DH,有的用改进DH。一定要在项目开始前统一约定,不然后面全乱套。

2.3 正运动学建模:从关节空间到笛卡尔空间

正运动学,就是已知关节角度,求末端位姿。说白了,你告诉机器人“每个关节转多少度”,它告诉你“手在哪儿、朝哪个方向”。

建模步骤其实很简单:

  1. 建立坐标系:按照DH规则,在每个关节处建立坐标系
  2. 填写DH参数表:把a、α、d、θ填进去
  3. 计算变换矩阵:每个关节一个T矩阵
  4. 连乘得到末端位姿:T_0_n = T_0_1 × T_1_2 × ... × T_{n-1}_n

举个例子,一个简单的两关节平面机器人:

// 伪代码示例
// 关节1:θ1 = 30°,a1 = 1m
// 关节2:θ2 = 45°,a2 = 0.8m

T_0_1 = DH(θ1, d1=0, a1, α1=0)
T_1_2 = DH(θ2, d2=0, a2, α2=0)

T_0_2 = T_0_1 * T_1_2

// 结果:末端位置 (x, y) 和姿态角

嗯,这里要注意:正运动学是唯一的。给定一组关节角度,末端位姿是确定的。这也是为什么正运动学常用于轨迹规划和碰撞检测。

实战经验: 我在做六轴机器人标定时,第一步就是验证正运动学模型。把每个关节转到零位,看末端是不是在理论位置。如果对不上,先查DH参数,再查矩阵乘法顺序。90%的问题出在这两个地方。

2.4 知识体系总览

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

机器人运动学基础——知识体系 齐次变换矩阵 DH参数法 正运动学建模 旋转矩阵 + 平移向量 齐次坐标表示 矩阵连乘规则 a、α、d、θ 四个参数 标准DH vs 改进DH 坐标系建立规则 关节空间 → 笛卡尔空间 唯一映射关系 轨迹规划与碰撞检测 三者关系:齐次变换矩阵是工具,DH参数是标准,正运动学是应用

从这张图可以看得很清楚:齐次变换矩阵是底层工具,DH参数法提供了标准化建模方法,正运动学则是最终的应用。三者环环相扣,缺一不可。

我的建议: 初学者可以先从两关节机器人入手,手算一遍正运动学,再用代码验证。别一上来就搞六轴,容易懵。我当年就是这么过来的。

好,这一节的内容就到这儿。记住:运动学是机器人标定的地基。地基不稳,后面所有补偿都是空中楼阁。

可可精品资料库