旋转矩阵:从二维到三维的几何变换

各位同学好,今天我们来聊聊旋转矩阵。说实话,这玩意儿在机器人领域太常用了。我刚开始做SLAM的时候,就被各种旋转表示搞得晕头转向。后来慢慢摸清了门道,发现旋转矩阵其实是最直观的一种表示方式。

二维旋转矩阵推导

先从一个简单的问题开始:平面上有一个点,我们想让它绕原点转个角度,该怎么算?

假设点P的坐标是(x, y),绕原点逆时针旋转θ角后变成P'(x', y')。用极坐标来看就清晰了:

原始点:x = r·cosα, y = r·sinα
旋转后:x' = r·cos(α+θ), y' = r·sin(α+θ)

展开一下:

x' = r·(cosα·cosθ - sinα·sinθ) = x·cosθ - y·sinθ
y' = r·(sinα·cosθ + cosα·sinθ) = x·sinθ + y·cosθ

写成矩阵形式就是:

[x']   [cosθ  -sinθ] [x]
[y'] = [sinθ   cosθ] [y]

嗯,这就是二维旋转矩阵。我习惯叫它R(θ)。

二维旋转矩阵标准形式:

R(θ) = [cosθ  -sinθ]
       [sinθ   cosθ]

逆时针旋转为正方向,θ单位为弧度。

三维旋转矩阵

到了三维空间,事情就复杂一些了。三维旋转可以分解成绕三个轴的旋转。我当年做机械臂标定时,就经常需要组合这些旋转。

绕X轴旋转α角:

Rx(α) = [1      0       0   ]
        [0   cosα   -sinα]
        [0   sinα    cosα]

绕Y轴旋转β角:

Ry(β) = [cosβ   0   sinβ]
        [0      1     0 ]
        [-sinβ  0   cosβ]

绕Z轴旋转γ角:

Rz(γ) = [cosγ  -sinγ   0]
        [sinγ   cosγ   0]
        [0      0      1]

你可能会问,为什么绕Y轴的矩阵里sinβ的符号是反的?其实是因为坐标系的右手定则。我刚开始也搞混过,后来记住一个窍门:把拇指指向旋转轴正方向,四指弯曲的方向就是正旋转方向。

我的小技巧:在代码里实现三维旋转时,我习惯先用欧拉角转成旋转矩阵,再去做向量变换。但要注意万向锁问题——这个坑我踩过不止一次。

旋转矩阵的性质与正交性

旋转矩阵有个非常重要的性质——它是正交矩阵。什么意思呢?

正交矩阵满足:

R^T · R = R · R^T = I
det(R) = +1

说白了,旋转矩阵的逆就是它的转置。这个性质在实际应用中太有用了。比如你要做反向旋转,直接取转置就行,不用重新算一遍三角函数。

我曾经在调试一个视觉SLAM系统时,发现坐标变换总是对不上。查了半天,原来是旋转矩阵不满足正交性——数值误差累积导致的。从那以后,我每次用旋转矩阵都会加一步正交化处理。

注意:数值计算中,多次矩阵乘法会导致旋转矩阵逐渐偏离正交性。建议定期做Gram-Schmidt正交化或使用四元数替代。

旋转矩阵的几何意义

旋转矩阵的每一列,其实代表了旋转后的坐标轴在原坐标系中的表示。举个例子:

R = [r11  r12  r13]
    [r21  r22  r23]
    [r31  r32  r33]

第一列(r11, r21, r31)就是旋转后的X轴在原坐标系下的方向向量。第二列是Y轴,第三列是Z轴。

这个理解方式,我在做手眼标定时帮了大忙。当时需要计算机器人末端执行器相对于相机的位姿,用这个思路很快就理清了坐标关系。

知识体系总览

下面这张图总结了旋转矩阵的核心知识点,我把它画成了结构图:

旋转矩阵 二维旋转矩阵 极坐标推导 [cosθ -sinθ; sinθ cosθ] 三维旋转矩阵 绕X轴旋转 Rx(α) 绕Y轴旋转 Ry(β) 绕Z轴旋转 Rz(γ) 正交性 R^T · R = I det(R) = +1 R^{-1} = R^T 实际应用场景 SLAM位姿估计 机械臂运动学 手眼标定

实际应用中的注意事项

最后分享几个我在项目中积累的经验:

  • 数值稳定性:旋转矩阵的乘法会累积误差,建议每隔一段时间做一次正交化。
  • 坐标系约定:不同库(如Eigen、ROS、OpenCV)的旋转约定可能不同,一定要确认清楚。
  • 旋转顺序:三维旋转的顺序很重要,ZYX和XYZ得到的结果完全不同。

调试建议:验证旋转矩阵是否正确,可以检查它的行列式是否接近1,以及R^T·R是否接近单位矩阵。我一般会在代码里加个assert,跑测试时能快速发现问题。

好了,旋转矩阵的内容就讲到这里。记住,它本质上就是一组正交基的变换。理解了这一点,后面学四元数、李代数都会轻松很多。

可可精品资料库