3. 刚体变换与齐次矩阵

在3D点云配准与手眼标定中,核心数学工具是刚体变换。刚体变换描述了一个物体在三维空间中只发生旋转和平移,而不发生形变(即保持点间距离和手性)。本章将系统推导旋转矩阵、平移向量、齐次坐标以及4x4变换矩阵的数学形式与关键性质。

3.1 旋转矩阵:三维旋转的代数表示

旋转矩阵是一个3x3的正交矩阵,满足 RTR = I 且 det(R) = +1。它描述了坐标系或点绕原点的旋转。

核心性质: 旋转矩阵的每一列(或行)都是单位向量,且两两正交。逆矩阵等于转置矩阵:R-1 = RT。

绕三个坐标轴的基本旋转矩阵(右手法则):

旋转轴 旋转矩阵(角度 θ) 说明
X 轴 Rx(θ) = [[1, 0, 0], [0, cosθ, -sinθ], [0, sinθ, cosθ]] y 和 z 分量旋转
Y 轴 Ry(θ) = [[cosθ, 0, sinθ], [0, 1, 0], [-sinθ, 0, cosθ]] x 和 z 分量旋转
Z 轴 Rz(θ) = [[cosθ, -sinθ, 0], [sinθ, cosθ, 0], [0, 0, 1]] x 和 y 分量旋转
手眼标定提示: 实际应用中,旋转矩阵常由欧拉角或四元数转换而来。注意万向锁问题,优先使用四元数进行插值,但最终标定方程仍以旋转矩阵形式参与计算。

3.2 平移向量:三维空间中的位移

平移向量 t = [tx, ty, tz]T 表示坐标系原点之间的位移。在刚体变换中,平移与旋转是解耦的:先旋转,再平移。

点 p 经过旋转 R 和平移 t 后的坐标 p' 为:

p' = R * p + t

这种形式在连续变换时不够紧凑,因为每次变换都需要分别处理旋转和平移,无法通过矩阵乘法串联。

3.3 齐次坐标:统一旋转与平移

齐次坐标通过在三维向量末尾添加一个额外的维度(通常为1),将三维点表示为四维向量:

p_h = [x, y, z, 1]<sup>T</sup>

引入齐次坐标的核心优势:

  • 统一变换形式: 旋转和平移可以合并为一个4x4矩阵,通过一次矩阵乘法完成变换。
  • 支持变换串联: 多个刚体变换可以通过矩阵乘法合并为一个等效变换。
  • 表示无穷远点: 当齐次坐标的最后一个分量为0时,表示方向向量(不受平移影响)。
常见误区: 齐次坐标的缩放因子不是任意的。对于表示点的齐次坐标,最后一个分量必须归一化为1;对于表示方向的向量,最后一个分量为0。混淆两者会导致变换结果错误。

3.4 4x4变换矩阵的推导与性质

将旋转矩阵 R 和平移向量 t 组合成4x4齐次变换矩阵 T:

T = [[R, t],
     [0, 1]]

其中:
R: 3x3 旋转矩阵
t: 3x1 平移向量
0: 1x3 零向量
1: 标量 1

展开形式:

T = [[r11, r12, r13, tx],
     [r21, r22, r23, ty],
     [r31, r32, r33, tz],
     [0,   0,   0,   1]]

点 p 的齐次坐标 p_h 经过变换 T 后:

p'_h = T * p_h

变换矩阵的逆矩阵:

T<sup>-1</sup> = [[R<sup>T</sup>, -R<sup>T</sup> * t],
          [0,     1]]

这个性质非常实用:已知从坐标系A到B的变换 TAB,则从B到A的变换 TBA = TAB-1,无需重新计算旋转和平移。

变换串联: 若依次进行变换 T1、T2、T3,则等效变换为 T = T3 * T2 * T1。注意乘法顺序:先应用的变换在右侧。

3.5 刚体变换的几何意义与性质总结

性质 数学表达 几何含义
保距性 ||p' - q'|| = ||p - q|| 变换前后点间距离不变
保角性 向量夹角不变 变换前后角度不变
保手性 det(R) = +1 不产生镜像(区别于反射变换)
可逆性 T-1 存在且唯一 变换可逆,无信息损失
封闭性 两个刚体变换的乘积仍是刚体变换 变换集合构成群(SE(3))
刚体变换与齐次矩阵结构图 三维点 p (x, y, z) 升维 齐次坐标 p_h (x, y, z, 1) 左乘 4x4 变换矩阵 T [R 3x3 | t 3x1] [0 1x3 | 1 ] R: 旋转, t: 平移 矩阵乘法 变换后点 p'_h (x', y', z', 1) 逆变换 T⁻¹ [Rᵀ | -Rᵀ·t] [0 | 1 ] 可逆性 关键性质:保距、保角、保手性、可逆、封闭(构成 SE(3) 群) 变换串联:T = T₃ · T₂ · T₁(先应用的变换在右侧)

3.6 手眼标定中的刚体变换链

在手眼标定中,刚体变换构成一个闭环链。以“眼在手外”(Eye-to-Hand)为例:

  • 机器人基座 → 机器人末端: 由机器人正运动学提供,记为 Tbase_to_ee
  • 机器人末端 → 标定板: 未知的固定变换,记为 Tee_to_calib
  • 标定板 → 相机: 由3D点云配准(如ICP)计算得到,记为 Tcalib_to_cam
  • 相机 → 机器人基座: 待求的手眼变换,记为 Tcam_to_base

闭环约束:

T<sub>cam_to_base</sub> = T<sub>base_to_ee</sub> * T<sub>ee_to_calib</sub> * T<sub>calib_to_cam</sub>

通过多组位姿数据,可以构建形如 AX = XB 的方程求解手眼变换矩阵 X。

实战建议: 在代码实现中,建议使用成熟的线性代数库(如 Eigen、NumPy)处理4x4矩阵运算。手动实现时注意矩阵乘法顺序和齐次坐标归一化,避免因数值误差导致变换矩阵失去正交性。