2. 机构学基础:空间机构自由度计算与几何描述

好,咱们正式开始啃Stewart平台的硬骨头。

这一章,我打算把机构学里最基础、也最绕不开的两个问题讲清楚:自由度怎么算,以及上下平台的几何怎么描述。你别看这些是基础,我在项目里见过太多人栽在这上面。有一次,一个同事拿着一个六自由度平台的设计图,信誓旦旦说能实现全姿态控制,结果我一算自由度——嗯,只有5个自由度,少了一个。那问题出在哪?就是铰点布置不合理,导致某个运动方向被约束了。

2.1 空间机构自由度计算:Kutzbach-Grübler公式

自由度计算,说白了就是回答一个问题:这个机构能独立动几个方向?

对于空间机构,我们最常用的就是Kutzbach-Grübler公式。我个人习惯叫它“K-G公式”,简单好记。

Kutzbach-Grübler公式(空间机构):

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

其中:

  • M:机构自由度
  • n:构件总数(包括机架)
  • g:运动副总数
  • f_i:第i个运动副的自由度数

你可能会问,为什么是6?因为空间里一个刚体有6个自由度——3个平移,3个旋转。这个公式的本质,就是先假设所有构件都是自由的,然后减去运动副带来的约束。

举个例子,咱们的Stewart平台:

  • 构件总数 n = 8(1个上平台 + 1个下平台 + 6个支腿)
  • 运动副总数 g = 12(6个虎克铰 + 6个球铰)
  • 每个虎克铰自由度 f = 2,每个球铰自由度 f = 3

代入公式:

M = 6(8 - 12 - 1) + (6×2 + 6×3)
  = 6×(-5) + (12 + 18)
  = -30 + 30
  = 6

你看,算出来正好是6。这就是为什么Stewart平台能实现空间六自由度运动。

我的小经验:计算时别忘了机架也算一个构件。我刚开始做的时候,经常把机架漏掉,结果算出来自由度总是多1。你想想看,机架虽然不动,但它确实是一个构件。

2.2 上下平台几何描述

搞清楚了自由度,接下来咱们得把平台的几何形状说清楚。

Stewart平台的上下平台,通常是两个多边形。最常见的是六边形,也有三角形、四边形甚至圆形的。我个人偏爱六边形,因为对称性好,控制起来也方便。

描述一个平台,我们需要两个坐标系:

  • 基坐标系 {B}:固定在下平台中心
  • 动坐标系 {P}:固定在上平台中心

每个铰点,都需要在对应的坐标系里给出位置向量。

假设下平台的铰点分布在一个半径为 R_b 的圆上,角度间隔为 60°。那么第 i 个下铰点的位置向量可以写成:

B_i = [R_b * cos(θ_bi), R_b * sin(θ_bi), 0]^T

其中 θ_bi 是第 i 个铰点的角度位置。上平台类似,只是半径变成了 R_p,角度变成了 θ_pi。

注意:上下平台的铰点通常不是正对着的,而是错开一个角度。这个错开的角度,我们叫它“偏置角”。偏置角的存在,是为了避免机构出现奇异位形。

2.3 铰点位置向量定义

铰点位置向量,是后续所有动力学计算的基础。你想想看,如果铰点位置都搞错了,那后面的力控制、轨迹规划全是白搭。

我习惯用下面的方式定义:

  1. 下平台铰点(基坐标系下):
    • B_i = [x_bi, y_bi, 0]^T, i = 1, 2, ..., 6
    • 所有点都在 z=0 平面上
  2. 上平台铰点(动坐标系下):
    • P_i = [x_pi, y_pi, 0]^T, i = 1, 2, ..., 6
    • 所有点也在 z=0 平面上(相对于动坐标系)

当上平台运动时,上铰点在基坐标系下的位置会变化。这个变化由动坐标系的位姿决定:

B_P_i = R * P_i + T

其中 R 是旋转矩阵,T 是平移向量。

我曾经踩过的坑:有一次,我把上平台铰点的 z 坐标设成了非零值,结果算出来的支腿长度怎么都不对。后来才发现,铰点应该定义在平台平面上,z=0 才是对的。嗯,这里要注意,铰点位置一定要和平台平面共面。

2.4 知识体系结构图

下面这张图,我把本章的核心逻辑梳理了一下。你可以把它当作一个思维导图来看。

机构学基础 自由度计算 K-G公式 构件与运动副 几何描述 基坐标系{B} 动坐标系{P} 铰点位置向量 下铰点 B_i 上铰点 P_i 核心:自由度 + 几何 = 运动学基础

2.5 实际应用中的注意事项

讲完了理论,咱们聊聊实际中容易出问题的地方。

项目 常见问题 我的建议
自由度计算 漏算或重复计算运动副 画一个机构简图,逐个标注运动副
铰点位置 坐标定义不一致 统一使用右手坐标系,标注清楚
偏置角 角度设置不合理导致奇异 仿真验证后再加工,别偷懒

一个小技巧:在定义铰点位置时,我习惯用Excel或者Python脚本生成一个表格,然后直接导入到仿真模型里。这样既不容易出错,也方便后期调整。

好了,这一章的内容就到这里。自由度计算和几何描述,是后续所有工作的基石。你把这些搞扎实了,后面的运动学、动力学、力控制,学起来就会顺畅很多。

专注资料整理