第四节:Stewart平台运动学——坐标系建立与支链矢量关系

各位工程师朋友,今天我们来聊聊Stewart平台运动学里最基础、也最关键的一步——坐标系建立和支链长度计算。说实话,我当年刚接触并联机构时,觉得这东西不就是六个油缸撑个平台嘛,有什么难的?结果第一次做运动学反解,算出来的支链长度全是负数,折腾了两天才发现是坐标系方向搞反了。嗯,这种坑咱们今天必须避开。

4.1 上平台与下平台的坐标系建立

Stewart平台由两个刚体组成:固定的下平台(基座)和运动的上平台(动平台)。中间通过六条支链(通常是电动缸或液压缸)连接。要描述它们之间的相对运动,我们得先定义两个坐标系。

下平台坐标系 {B}:我习惯把它固连在下平台的几何中心。原点OB在下平台中心点,ZB轴垂直向上,XB和YB轴按右手定则确定。这个坐标系是惯性系,也就是绝对参考系。

上平台坐标系 {P}:固连在上平台的几何中心。原点OP在上平台中心,ZP轴垂直于上平台平面向上。这个坐标系是动系,随着平台运动而运动。

你想想看,上平台相对于下平台的位姿,其实就是{P}系在{B}系中的描述。我们用位置矢量 p = [x, y, z]T 表示原点OP在{B}系中的坐标,用旋转矩阵 R 表示{P}系相对于{B}系的姿态。

关键点:旋转矩阵R是一个3×3的正交矩阵,满足RTR = I,det(R) = 1。它可以用欧拉角、四元数或方向余弦矩阵来表示。我个人偏爱用ZYX欧拉角(先绕Z转γ,再绕Y转β,最后绕X转α),因为物理意义直观。

4.2 铰点位置描述

每条支链两端各有一个铰链:下铰链(连接下平台)和上铰链(连接上平台)。这些铰链的位置是设计好的,通常呈圆周对称分布。

记第i条支链的下铰链在{B}系中的位置矢量为 bi,上铰链在{P}系中的位置矢量为 pi。这两个矢量是已知的设计参数,在各自的坐标系中保持不变。

举个例子,如果下平台有6个铰链均匀分布在半径为rb的圆周上,那么:

b_i = [r_b * cos(θ_bi), r_b * sin(θ_bi), 0]^T   (i = 1,2,...,6)

其中θ_bi是第i个下铰链的方位角。上平台类似,只是半径不同(rp),且铰链的方位角分布可能与下平台错开一定角度——这叫“错位布置”,目的是避免奇异位形。我在设计六自由度运动模拟器时,就吃过这个亏:上下铰链完全对齐,结果平台运动到某个位置时突然卡死,后来才知道那是奇异点。

4.3 支链长度与平台位姿的矢量关系

好了,现在我们来建立核心关系。第i条支链的矢量,就是从下铰链指向对应上铰链的矢量。在{B}系中表达:

li = R · pi + p - bi

这个公式什么意思?说白了就是:上铰链在{B}系中的位置(R·pi + p)减去下铰链的位置(bi),就得到了支链矢量。

那么支链的长度就是该矢量的模:

Li = ||li|| = sqrt( lix² + liy² + liz² )

这就是Stewart平台运动学反解的核心公式。给定上平台的位姿(p和R),就能算出每条支链的长度。反过来,给定六条支链的长度,求解平台位姿——那是正解问题,比反解难得多,咱们后面再聊。

我的小技巧:在实际编程中,我习惯把六个支链矢量写成一个6×3的矩阵,然后用向量化运算一次性算完,比for循环快得多。在MATLAB里就是一行代码:L = sqrt(sum((R*p + p0 - b).^2, 2));

4.4 一个完整的计算示例

咱们来走一遍数值例子。假设:

  • 下平台半径rb = 1.0 m,上平台半径rp = 0.8 m
  • 上下铰链均匀分布,且错位30°
  • 平台处于零位:p = [0, 0, 1.2]T m,R = I(单位矩阵)

计算第一条支链(i=1):

下铰链角度 θ_b1 = 0°
b_1 = [1.0, 0, 0]^T

上铰链角度 θ_p1 = 30°(因为错位)
p_1 = [0.8*cos30°, 0.8*sin30°, 0]^T = [0.6928, 0.4, 0]^T

支链矢量 l_1 = R·p_1 + p - b_1
            = [0.6928, 0.4, 0] + [0, 0, 1.2] - [1.0, 0, 0]
            = [-0.3072, 0.4, 1.2]^T

支链长度 L_1 = sqrt(0.3072² + 0.4² + 1.2²) = 1.297 m

你看,零位时六条支链长度并不相等,因为上下铰链错位了。这是正常现象。

4.5 避坑指南

我曾经踩过的坑:
  1. 坐标系方向搞反——有一次我把上平台的Z轴朝下了,结果算出来的支链长度全是负的。检查了半天才发现是定义问题。
  2. 铰链顺序匹配错误——下铰链1号必须对应上铰链1号,不能乱配。我在项目里见过同事把顺序搞混,平台动起来像抽风一样。
  3. 旋转矩阵的正交性检查——数值计算中,累积误差可能导致R不再是正交矩阵。我建议每步都做一次RTR ≈ I的检查,误差超过1e-6就重新正交化。

4.6 知识体系结构图

下面这张SVG图,把本节的核心逻辑串起来了。你可以把它当作一个思维导图来用。

Stewart平台运动学 坐标系建立 下平台{B}系 上平台{P}系 铰点位置描述 下铰链 b_i 上铰链 p_i 支链矢量关系 l_i = R·p_i + p - b_i L_i = ||l_i|| 运动学反解:已知位姿→求支链长度 ⚠ 注意:正解(已知长度求位姿)需要求解非线性方程组 图4-1 Stewart平台运动学知识结构图

4.7 小结

这一节我们干了三件事:

  1. 建立了上下平台的坐标系,明确了位姿的描述方式
  2. 定义了铰点位置矢量,这是机构的几何参数
  3. 推导了支链长度与平台位姿的矢量关系——运动学反解的核心

说实话,这些内容看起来简单,但它是整个并联机构分析的基石。我见过太多人一上来就搞动力学、搞控制,结果连反解都算不对,最后平台动起来完全不是那么回事。所以,别嫌基础,把这一步走扎实了,后面才能走得远。

一句话记住本节:支链矢量 = 旋转后的上铰点 + 平移 - 下铰点。就这么简单,但别搞错坐标系。

公众号:蓝海资料掘金营,微信deep3321