空间机构学基础:刚体运动描述、旋转矩阵与齐次变换、欧拉角与四元数、自由度与约束分析

各位同学好,我是你们的课程讲师。今天我们来啃一块硬骨头——空间机构学基础。说实话,很多做并联机器人的朋友,最后都栽在了这上面。不是电机选型不对,也不是结构强度不够,而是空间运动学没搞明白。

我个人习惯把空间机构学比作「机器人的语言」。你想想看,你要让机器人动起来,总得有个方法描述它怎么动吧?这就是我们今天要讲的内容。

刚体运动的描述

刚体,说白了就是一个不会变形的物体。在空间里,它有6个自由度——3个平移,3个旋转。描述刚体运动,我们通常用两种方式:

  • 位置描述:用三维坐标 (x, y, z) 表示刚体上某点的位置
  • 姿态描述:用旋转矩阵、欧拉角或四元数表示刚体的朝向

我在做六自由度并联平台时,遇到过一个问题:用位置和欧拉角描述末端姿态,结果在某个特殊位置出现了「万向锁」。嗯,这里要注意,后面我们会详细讲。

核心概念:刚体的完整位姿 = 位置 + 姿态,共6个独立参数。

旋转矩阵

旋转矩阵是描述刚体旋转最直观的方式。它是一个3×3的正交矩阵,行列式为+1。

绕X轴旋转θ角的旋转矩阵:

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

绕Y轴旋转θ角:

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

绕Z轴旋转θ角:

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

我记得第一次做SCARA机器人的运动学,就是用这三个基本旋转矩阵组合出末端姿态。当时调试了整整两天,最后发现是旋转顺序搞反了。所以大家一定要记住:旋转矩阵的乘法不满足交换律,顺序很重要。

齐次变换

齐次变换矩阵把旋转和平移统一到一个4×4的矩阵里。为什么这么做?因为方便啊!

T = [R    p]
    [0    1]

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

用齐次变换,我们可以把多个坐标变换串联起来:

T_03 = T_01 × T_12 × T_23

这就像搭积木一样,每个关节的变换矩阵乘起来,就得到了末端相对于基座的位姿。我在做Delta并联机器人的正运动学时,就是用这个方法一步步推导出来的。

实用技巧:写代码时,建议把齐次变换封装成一个类,包含乘法和求逆运算。我自己的工具箱里就有这么一套,用了好多年了。

欧拉角与四元数

欧拉角大家应该都听说过,就是用三个角度来描述旋转。常用的有ZYX欧拉角和ZYZ欧拉角。

但是欧拉角有个大问题——万向锁。当第二个旋转角为±90°时,第一个和第三个旋转轴会重合,丢失一个自由度。

我曾经在做一款医疗机器人时,就踩过这个坑。末端执行器在某个姿态下突然「卡住」了,怎么调都不对。查了两天,最后发现是欧拉角导致的万向锁。

从那以后,我强烈建议:做并联机器人,能用四元数就别用欧拉角

四元数是什么?它用四个参数表示旋转:

q = w + xi + yj + zk

其中w是实部,x、y、z是虚部,满足w² + x² + y² + z² = 1。

四元数的好处:

  • 没有万向锁问题
  • 插值平滑(球面线性插值)
  • 计算效率高

避坑指南:我曾经在STM32上跑四元数运算,发现浮点运算太慢了。后来改用定点数近似,才把控制周期压到1ms以内。如果你也用MCU做控制,记得考虑计算资源。

自由度与约束分析

自由度分析是并联机器人设计的核心。一个空间刚体有6个自由度,每条支链会引入约束。

Grübler公式:

F = 6(n - g - 1) + Σf_i

其中n是构件数,g是运动副数,f_i是第i个运动副的自由度。

举个栗子,Stewart平台:

  • 6条支链,每条支链有6个运动副(球铰-移动副-球铰)
  • 每个球铰3个自由度,移动副1个自由度
  • 代入公式:F = 6(14 - 18 - 1) + (3+1+3)×6 = 6

所以Stewart平台是6自由度的。

我刚开始做并联机器人时,总以为自由度越多越好。后来发现,约束才是设计的精髓。适当的约束可以提高刚度、降低控制难度。

经验之谈:做并联机器人,先做自由度分析,再做运动学分析,最后才是动力学和控制。顺序搞反了,后面全是坑。

知识体系总览

下面这张图是我自己整理的,把今天讲的内容串起来了:

空间机构学基础 刚体运动描述 位置描述 姿态描述 旋转矩阵 绕X轴 绕Y轴 绕Z轴 齐次变换 串联变换 坐标变换 欧拉角与四元数 欧拉角 四元数 自由度与约束 Grübler公式 约束分析 核心:用数学语言描述机器人的空间运动 应用:运动学建模 → 轨迹规划 → 控制算法

这张图把今天的内容分成了五个模块。刚体运动描述是基础,旋转矩阵和齐次变换是工具,欧拉角与四元数是具体实现方法,自由度与约束分析是设计准则。它们环环相扣,缺一不可。

学习建议:别急着写代码,先把这些概念在纸上推演几遍。我当年学的时候,光旋转矩阵就手算了不下50遍。熟能生巧,真的。

好了,今天的内容就到这里。空间机构学是并联机器人的数学基础,后面讲运动学、动力学、控制算法,都离不开今天这些内容。希望大家好好消化,有问题随时交流。