第三章 空间刚体运动学:位置与姿态描述

各位工程师朋友,大家好。这一章我们聊聊空间刚体运动学。说白了,就是研究一个刚体在三维空间里怎么“待着”、怎么“转”、怎么“动”。

我在做并联机构项目时,最头疼的就是描述动平台的位置和姿态。你想想看,一个六自由度平台,六个电机一推,平台又平移又旋转,怎么精确描述它的状态?这就是本章要解决的问题。

3.1 位置与姿态描述——刚体的“身份证”

一个刚体在空间中的状态,需要两个信息:位置姿态

  • 位置:刚体上某点(通常选质心或参考点)在参考坐标系中的坐标。用3×1向量表示:p = [x, y, z]^T
  • 姿态:刚体相对于参考坐标系的朝向。用3×3旋转矩阵表示:R

合起来,一个刚体的完整状态就是 (p, R)。嗯,这就是它的“身份证”。

关键点:位置和姿态是独立的。平移不影响姿态,旋转不影响位置。但在后续的齐次变换中,我们会把它们统一处理。

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

旋转矩阵 R 是一个3×3的正交矩阵,满足 R^T R = I,行列式为+1。它描述了刚体坐标系相对于参考坐标系的旋转。

举个例子,绕Z轴旋转θ角:

R_z(θ) = [cosθ  -sinθ  0]
         [sinθ   cosθ  0]
         [0      0     1]

绕X轴和Y轴类似。我在项目中经常用这三个基本旋转矩阵组合出任意姿态。

个人经验:我建议你手算一遍旋转矩阵的乘法。很多初学者以为旋转矩阵乘法可交换,其实不然。顺序很重要!

3.3 欧拉角——直观但“有坑”

旋转矩阵虽然数学上完美,但9个参数太冗余。欧拉角用三个角度描述姿态,更直观。

常用的欧拉角序列有:

  • ZYX顺序(偏航-俯仰-横滚):先绕Z轴转ψ,再绕Y轴转θ,最后绕X轴转φ。
  • ZYZ顺序:常用于机器人学。

对应的旋转矩阵:

R = R_z(ψ) * R_y(θ) * R_x(φ)

避坑指南:我曾经在调一个并联机构的逆解时,用了欧拉角,结果在某个姿态下突然“跳变”。后来才发现是万向锁问题——当俯仰角接近±90°时,偏航和横滚变得不可区分。所以,如果你需要全姿态工作,建议用四元数。

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

齐次变换矩阵 T 是一个4×4矩阵,把旋转和平移统一起来:

T = [R   p]
    [0   1]

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

使用齐次坐标,一个点 P 在坐标系 {A} 和 {B} 之间的变换可以写成:

^A P = ^A T_B * ^B P

这里 ^A T_B 表示从 {B} 到 {A} 的变换矩阵。

为什么用齐次变换? 因为你可以把多个变换串联起来:^A T_C = ^A T_B * ^B T_C。这在并联机构的运动学链中非常有用——从基座到动平台,一路乘过去就行。

3.5 知识体系总览

下面这张图总结了本章的核心逻辑:

空间刚体运动学知识体系 刚体状态 (p, R) 位置向量 p = [x,y,z]^T 姿态描述 旋转矩阵 R (3×3) 欧拉角 (ψ, θ, φ) 四元数 (q0,q1,q2,q3) 齐次变换矩阵 T (4×4) 运动学建模 · 坐标变换 · 轨迹规划

3.6 实战要点总结

方法 优点 缺点 我的建议
旋转矩阵 数学严谨,无奇异性 9个参数,冗余 适合理论推导
欧拉角 直观,3个参数 万向锁问题 避免用于全姿态控制
齐次变换矩阵 统一平移旋转,便于串联 4×4矩阵,计算稍大 运动学建模首选

我的习惯:在实际编程中,我通常用齐次变换矩阵做运动学正解和逆解。内部计算用四元数避免奇异性,但最终输出给用户时,我会转成欧拉角——毕竟操作员更习惯看角度值。

好了,这一章就到这里。空间刚体运动学是并联机构分析的基石,后面的工作空间分析、奇异性判断都离不开它。希望你能动手写写代码,把旋转矩阵乘一乘,感受一下。


专注资料整理