第三章 空间刚体运动学:位置与姿态描述
各位工程师朋友,大家好。这一章我们聊聊空间刚体运动学。说白了,就是研究一个刚体在三维空间里怎么“待着”、怎么“转”、怎么“动”。
我在做并联机构项目时,最头疼的就是描述动平台的位置和姿态。你想想看,一个六自由度平台,六个电机一推,平台又平移又旋转,怎么精确描述它的状态?这就是本章要解决的问题。
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 知识体系总览
下面这张图总结了本章的核心逻辑:
3.6 实战要点总结
| 方法 | 优点 | 缺点 | 我的建议 |
|---|---|---|---|
| 旋转矩阵 | 数学严谨,无奇异性 | 9个参数,冗余 | 适合理论推导 |
| 欧拉角 | 直观,3个参数 | 万向锁问题 | 避免用于全姿态控制 |
| 齐次变换矩阵 | 统一平移旋转,便于串联 | 4×4矩阵,计算稍大 | 运动学建模首选 |
我的习惯:在实际编程中,我通常用齐次变换矩阵做运动学正解和逆解。内部计算用四元数避免奇异性,但最终输出给用户时,我会转成欧拉角——毕竟操作员更习惯看角度值。
好了,这一章就到这里。空间刚体运动学是并联机构分析的基石,后面的工作空间分析、奇异性判断都离不开它。希望你能动手写写代码,把旋转矩阵乘一乘,感受一下。