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 铰点位置向量定义
铰点位置向量,是后续所有动力学计算的基础。你想想看,如果铰点位置都搞错了,那后面的力控制、轨迹规划全是白搭。
我习惯用下面的方式定义:
- 下平台铰点(基坐标系下):
- B_i = [x_bi, y_bi, 0]^T, i = 1, 2, ..., 6
- 所有点都在 z=0 平面上
- 上平台铰点(动坐标系下):
- 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 知识体系结构图
下面这张图,我把本章的核心逻辑梳理了一下。你可以把它当作一个思维导图来看。
2.5 实际应用中的注意事项
讲完了理论,咱们聊聊实际中容易出问题的地方。
| 项目 | 常见问题 | 我的建议 |
|---|---|---|
| 自由度计算 | 漏算或重复计算运动副 | 画一个机构简图,逐个标注运动副 |
| 铰点位置 | 坐标定义不一致 | 统一使用右手坐标系,标注清楚 |
| 偏置角 | 角度设置不合理导致奇异 | 仿真验证后再加工,别偷懒 |
一个小技巧:在定义铰点位置时,我习惯用Excel或者Python脚本生成一个表格,然后直接导入到仿真模型里。这样既不容易出错,也方便后期调整。
好了,这一章的内容就到这里。自由度计算和几何描述,是后续所有工作的基石。你把这些搞扎实了,后面的运动学、动力学、力控制,学起来就会顺畅很多。