4. 运动学逆解(Inverse Kinematics):几何建模、杆长计算、雅可比矩阵推导、逆解的唯一性与奇异性

好,咱们进入正题。运动学逆解,说白了就是——我知道平台要摆什么姿态,你给我算出六个腿该伸多长。这是Stewart平台控制里最基础、也最绕不开的一步。

我个人习惯把逆解比作「搭积木」。你心里想好积木顶面要歪多少、转多少,然后手得去算每根支撑柱的高度。嗯,这里的关键是:几何关系要理清,坐标系要统一

4.1 几何建模:先搭好骨架

我们先定义两个坐标系:

  • 基座坐标系 {B}:固定在底座上,原点在底座中心,Z轴向上。
  • 动平台坐标系 {P}:固定在动平台上,原点在平台中心,跟着平台一起动。

每个铰链点,我都用向量表示。基座上的六个铰链点记作 B_i(i=1..6),平台上的铰链点记作 P_i。这些点在各自坐标系里的坐标,是设计时就定死的——你想想看,机械加工图纸上不都标得清清楚楚嘛。

那问题来了:平台动了之后,P_i 在基座坐标系里怎么表示?

很简单,一个旋转加一个平移:

P_i_in_B = R * P_i + T

其中 R 是旋转矩阵(由欧拉角或四元数算出),T 是平台中心的位置向量。

核心思路: 逆解的本质就是求每个腿的长度 ||P_i_in_B - B_i||。

我在项目中遇到过一种情况:有人把铰链点的编号顺序搞反了,结果算出来的杆长全是负的。嗯,这种低级错误,调试的时候能让人抓狂一整天。

4.2 杆长计算:从姿态到长度

有了几何模型,杆长计算就是纯代数的活了。对于第 i 条腿:

L_i = || P_i_in_B - B_i ||

展开写就是:

L_i = sqrt( (R*P_i + T - B_i) · (R*P_i + T - B_i) )

这里有个小坑——旋转矩阵 R 的表示方式。我建议用欧拉角(ZYX顺序)或者四元数。欧拉角直观,但小心万向锁;四元数计算稳定,但不够直观。

表示方式优点缺点
欧拉角(ZYX)物理意义明确有万向锁问题
四元数无奇异性,插值平滑不够直观
旋转矩阵计算直接参数多,需正交化

我个人习惯在仿真阶段用欧拉角,调试方便;实际嵌入式代码里用四元数,稳当。

避坑指南: 我曾经在STM32上直接用浮点算杆长,结果发现每次算出来的长度都有微小波动。后来排查发现是旋转矩阵没有做正交归一化。加一行 Gram-Schmidt 就解决了。

4.3 雅可比矩阵推导:连接速度与力

雅可比矩阵,说白了就是关节速度到末端速度的映射。对于Stewart平台,它把六个腿的伸缩速度映射到平台的线速度和角速度。

推导过程其实不复杂。对杆长公式求时间导数:

dL_i/dt = ( (P_i_in_B - B_i) / L_i ) · ( d(P_i_in_B)/dt )

d(P_i_in_B)/dt = v + ω × (R*P_i),其中 v 是平台线速度,ω 是角速度。

整理一下,就得到:

dL/dt = J * [v; ω]

其中 J 是 6×6 的雅可比矩阵,每一行对应一条腿的方向向量和力矩臂。

雅可比矩阵的物理意义: 它不仅是速度映射,也是力映射。你想让平台输出多大的力,反算到腿上就是 F_leg = J^T * F_platform。

我记得有一次做振动抑制实验,发现高频段控制效果很差。后来一查,是雅可比矩阵在某个姿态下接近奇异,导致力映射失真。嗯,这个后面会细说。

4.4 逆解的唯一性与奇异性

先说说唯一性。Stewart平台的逆解是唯一确定的——给定平台位姿,六个腿长是唯一的一组值。为什么?因为每个腿长就是两个铰链点之间的欧氏距离,几何上就是唯一的。

但正解就不一定了。正解可能有多个解,甚至无解。这也是为什么控制里我们通常用逆解,正解只用来做标定或验证。

再说奇异性。这是个大坑。

奇异性分两种:

  • 运动学奇异:雅可比矩阵的行列式为零,意味着某个方向上的运动无法通过腿的伸缩实现。说白了,平台在那个姿态下「卡住」了。
  • 边界奇异:某条腿伸到极限长度,或者铰链球头达到转角极限。
警告: 我曾经在调试一个六自由度振动台时,没注意奇异位形。结果平台在某个姿态下突然失控,电机疯狂抖动,差点把机械结构打坏。从那以后,我每次上电前都会做奇异检测。

怎么避免奇异?几个实用方法:

  1. 工作空间限制:在规划轨迹时,把姿态限制在远离奇异点的区域。
  2. 条件数监控:实时计算雅可比矩阵的条件数,超过阈值就报警或切换控制策略。
  3. 冗余驱动:如果条件允许,用7轴或8轴结构,通过冗余来避开奇异。

你想想看,如果平台在奇异点附近,你给控制器一个很小的速度指令,腿上可能就需要极大的伸缩速度——这在实际系统中根本做不到。

4.5 知识体系总览

下面这张图,是我自己总结的逆解知识结构。你可以把它当作一个检查清单:

运动学逆解知识体系 输入:平台位姿 几何建模:坐标系 & 铰链点 杆长计算:L_i = ||P_i - B_i|| 雅可比矩阵:速度/力映射 输出:杆长 & 奇异检测 唯一性:给定位姿,杆长唯一 奇异性:det(J)=0 时需规避

这张图把整个逆解流程串起来了。从输入位姿开始,经过几何建模、杆长计算、雅可比推导,最后输出杆长并做奇异检测。每一步都有坑,但每一步也都有对应的解决方法。

好了,逆解这部分就聊到这儿。记住一句话:逆解是Stewart平台的「翻译官」——把你想让平台做的动作,翻译成六个电机能听懂的语言。

专注资料整理