3. 运动学模型入门:刚体运动描述、旋转矩阵与欧拉角、齐次变换矩阵

好,我们正式开始运动学模型。这一章是整个模型辨识的地基。你想想看,人形机器人要走路、要抓东西,本质上就是在描述一个个刚体——大腿、小腿、躯干——它们之间怎么相对运动。说白了,就是搞清楚「谁相对于谁,在哪儿,朝哪儿」。我当年刚入行时,觉得这玩意儿就是纯数学,结果第一次调实际机器人,发现坐标系没对齐,直接让机器人来了个劈叉……嗯,从那以后我再也不敢小看这章了。

3.1 刚体运动描述:位置与姿态

一个刚体在三维空间里有几个自由度?六个。三个位置,三个姿态。位置好说,就是 (x, y, z)。姿态呢?就是它「朝哪边转」。我们得用数学工具把这六个量统一描述清楚。

核心概念:刚体运动 = 位置 + 姿态。位置用向量,姿态用旋转矩阵或欧拉角。

我个人习惯把位置和姿态分开处理。位置就是平移,姿态就是旋转。两者合在一起,就是刚体在空间中的完整位姿。

3.2 旋转矩阵:姿态的数学语言

旋转矩阵是个 3x3 的方阵。它描述了一个坐标系相对于另一个坐标系的朝向。为什么用矩阵?因为矩阵可以连续乘,方便我们做坐标变换。

举个例子,一个点 p 在坐标系 {A} 中的坐标是 ^A p,在坐标系 {B} 中的坐标是 ^B p。如果我知道 {B} 相对于 {A} 的旋转矩阵 ^A_B R,那么:

^A p = ^A_B R · ^B p

就这么简单。旋转矩阵的每一列,其实就是 {B} 坐标系的三个轴在 {A} 坐标系下的投影。我在项目中遇到过一个问题:有人把旋转矩阵写反了,结果坐标变换全错。记住,下标和上标要对应好,^A_B R 是把 {B} 中的向量转到 {A} 中。

小技巧:旋转矩阵是正交矩阵,行列式为 +1。你可以用这个性质快速检查你的矩阵对不对。

3.3 欧拉角:更直观的旋转表示

旋转矩阵虽然好用,但 9 个数字太冗余了。人脑很难直接看出「这个矩阵对应什么角度」。所以就有了欧拉角——用三个角度来描述旋转。

常见的欧拉角顺序有 ZYX、ZYZ、XYZ 等。人形机器人里最常用的是 ZYX 欧拉角,也叫 Roll-Pitch-Yaw(滚转-俯仰-偏航)。

名称 旋转轴 物理含义
Yaw(偏航) Z 轴 左右转头
Pitch(俯仰) Y 轴 点头/抬头
Roll(滚转) X 轴 歪头

欧拉角有个大坑——万向锁。当 Pitch 接近 ±90° 时,Yaw 和 Roll 会变得无法区分。我曾经在调试一个六轴机械臂时,遇到了万向锁,结果末端执行器突然乱转。后来我改用四元数才解决。不过在本课程中,我们先用欧拉角,因为它直观,适合模型辨识的初期阶段。

注意:欧拉角不唯一。同样的姿态可以用不同的角度组合表示。做辨识时,一定要约定好旋转顺序,否则数据会乱。

3.4 齐次变换矩阵:统一平移与旋转

旋转矩阵只处理旋转,平移还得单独加。能不能把两者统一成一个操作?能。齐次变换矩阵就是干这个的。

它是一个 4x4 的矩阵:

|  R   t  |
|  0   1  |

其中 R 是 3x3 旋转矩阵,t 是 3x1 平移向量。最后一行是 [0 0 0 1]。

用齐次变换矩阵,一个点的坐标变换就变成了矩阵乘法:

^A p̃ = ^A_B T · ^B p̃

这里的 p̃ 是齐次坐标,就是在普通坐标后面加个 1。比如 (x, y, z, 1)。

为什么加个 1?因为这样平移就能用矩阵乘法表示了。你想想看,如果没有齐次坐标,平移就是加法,旋转就是乘法,两者混在一起很麻烦。齐次变换矩阵把两者统一成乘法,方便我们做链式变换。

关键公式:齐次变换矩阵的逆矩阵:

|  R^T   -R^T·t  |
|   0       1     |

这个公式在模型辨识中经常用到,建议背下来。

3.5 知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以把它当作一个思维导图来用。

运动学模型知识体系 运动学模型入门:知识体系 刚体运动描述 位置 (x, y, z) 姿态 (旋转) 齐次变换矩阵 旋转矩阵 欧拉角 4x4 矩阵 [R t; 0 1] 核心逻辑 位置 + 姿态 = 完整位姿描述 齐次变换矩阵统一平移与旋转,方便链式运算 模型辨识中,90% 的错误来自坐标系混乱

3.6 实战中的坐标系约定

做模型辨识,第一件事就是定坐标系。我建议你遵循以下规则:

  1. 世界坐标系:固定在地面,Z 轴向上。
  2. 基坐标系:机器人底座,与世界坐标系对齐或偏移。
  3. 关节坐标系:每个关节一个,Z 轴沿关节旋转轴。
  4. 工具坐标系:末端执行器,比如手爪中心。

我曾经在项目里吃过亏:两个工程师用了不同的坐标系约定,结果数据合在一起完全对不上。后来我们统一用右手系,Z 轴向上,才解决问题。

建议:在代码里用结构体或类把旋转矩阵、平移向量、齐次变换矩阵封装好。别裸写数组,容易出错。

3.7 本章小结

这一章我们讲了三个核心工具:

  • 旋转矩阵:描述姿态,9 个数字,正交性可做校验。
  • 欧拉角:直观,但有万向锁问题,适合初期辨识。
  • 齐次变换矩阵:统一平移和旋转,4x4 矩阵,链式运算的利器。