3. 运动学基础:位置分析、速度分析(雅可比矩阵)、加速度分析

各位同学,大家好。今天我们进入并联机器人最核心的章节——运动学基础。说实话,这部分内容我当年啃了很久才真正吃透。你想想看,串联机器人运动学大家都很熟悉,但并联一上来就是闭环约束,很多人就懵了。别急,我们一步步来。

核心思想:并联机器人的运动学,本质上就是解一组非线性约束方程。位置分析是解方程,速度分析是对方程求导,加速度分析是求二阶导。就这么简单。

3.1 位置分析:正解与逆解

位置分析是所有运动学的基础。说白了,就是回答两个问题:

  • 逆解(IK):给定末端位姿,求各驱动关节的角度或位移。
  • 正解(FK):给定各驱动关节的数值,求末端位姿。

我在做六自由度Stewart平台项目时,逆解几乎实时就能算出来,但正解却让我折腾了整整两周。为什么会这样?因为并联机构的正解通常没有解析表达式,必须用数值迭代。

3.1.1 逆解:相对简单

以平面3-RRR并联机构为例。每个支链都是一个开链,末端位置已知,我们只需要解每个支链的三角形几何关系。

// 伪代码:3-RRR逆解
function inverseKinematics(x, y, phi):
    for each leg i:
        // 已知末端点P,求主动关节角θ1
        // 利用余弦定理求解三角形
        L1 = sqrt((x - xi)^2 + (y - yi)^2)
        θ1 = atan2(y - yi, x - xi) ± acos((L1^2 + a1^2 - a2^2) / (2*L1*a1))
    return [θ1_1, θ1_2, θ1_3]

我的习惯:写逆解代码时,一定要处理多解情况。并联机构通常有2-4组逆解,我一般选关节运动量最小的那组,这样电机能耗最低。

3.1.2 正解:数值迭代是王道

正解就麻烦多了。我记得第一次写正解程序,直接用牛顿-拉夫森法迭代,结果发散得一塌糊涂。后来才意识到,初值选择太关键了。

// 牛顿-拉夫森法求解正解
function forwardKinematics(q1, q2, q3):
    // 初始猜测(通常用上一时刻的位姿)
    X = [x0, y0, phi0]
    while ||F(X)|| > epsilon:
        // F(X)是约束方程残差
        // J是雅可比矩阵
        delta_X = -J \ F(X)  // 解线性方程组
        X = X + delta_X
    return X

避坑指南:我曾经在迭代时忘记检查雅可比矩阵是否奇异。结果程序卡死,电机乱跳,差点把样机拆了。一定要在每次迭代前计算雅可比的条件数,条件数太大就换个初值。

3.2 速度分析:雅可比矩阵

速度分析的核心就是雅可比矩阵。它建立了驱动关节速度与末端速度之间的映射关系。对于并联机器人,这个映射是双向的。

你想想看,串联机器人的雅可比是从关节空间到操作空间,而并联机器人正好反过来——从操作空间到关节空间。这也是为什么并联机器人的刚度更高。

3.2.1 雅可比矩阵的推导

以Delta并联机器人为例,每个支链的约束方程可以写成:

// 约束方程的一般形式
F_i(X, q_i) = 0

// 对时间求导
∂F_i/∂X * dX/dt + ∂F_i/∂q_i * dq_i/dt = 0

// 整理成矩阵形式
J_x * v = J_q * q_dot

// 最终雅可比
v = J_x^(-1) * J_q * q_dot
// 或者
q_dot = J_q^(-1) * J_x * v

关键点:并联机器人的雅可比矩阵通常分为两部分——正向雅可比(J_x)和逆向雅可比(J_q)。实际控制中,我们更常用逆向雅可比,因为它直接给出各关节的速度指令。

3.2.2 雅可比矩阵的奇异性

雅可比矩阵的行列式为零时,机构处于奇异位形。这时候,要么末端失去某个方向的自由度,要么关节速度会趋于无穷大。

我在调试一台五杆并联机构时,遇到过一种边界奇异。当时末端在某个位置突然卡死,电机再怎么转都没用。后来一查,雅可比矩阵的行列式刚好为零。解决办法很简单——在轨迹规划时避开这些点。

3.3 加速度分析

加速度分析是动力学的基础。说白了,就是对速度方程再求一次导。但这里有个坑——并联机构的加速度分析会引入科里奥利加速度和向心加速度项。

3.3.1 加速度方程

从速度方程出发:

J_x * v = J_q * q_dot

// 对时间求导
J_x * a + dJ_x/dt * v = J_q * q_ddot + dJ_q/dt * q_dot

// 整理
a = J_x^(-1) * (J_q * q_ddot + dJ_q/dt * q_dot - dJ_x/dt * v)

我的经验:实际工程中,很少有人手动推导加速度项。我一般用数值微分代替解析求导,虽然精度稍差,但开发速度快很多。当然,如果你要做高速高精度控制,还是老老实实推导解析式吧。

3.3.2 加速度分析的应用

加速度分析主要用于:

  • 动力学建模:牛顿-欧拉法或拉格朗日法都需要加速度信息。
  • 轨迹规划:S型速度曲线规划时,需要知道最大加速度限制。
  • 振动分析:加速度突变会引起机构振动,需要平滑处理。

3.4 知识体系总览

下面这张图是我自己总结的运动学分析流程,你可以把它当作一个检查清单:

并联机器人运动学分析流程 机构参数 + 驱动输入 位置分析 逆解(解析)→ 正解(数值迭代) 速度分析(雅可比矩阵) J_x * v = J_q * q_dot → 奇异性检查 加速度分析 J_x * a + dJ_x/dt * v = J_q * q_ddot + ... 动力学分析 / 控制 注意:正解无解析式 注意:检查奇异位形 注意:科里奥利项

3.5 实践建议

最后,我给大家几点实践中的建议:

  1. 先做逆解,再做正解。逆解简单,可以用来验证正解代码的正确性。
  2. 雅可比矩阵一定要做奇异性分析。我习惯在仿真阶段就把所有奇异位形标出来,轨迹规划时直接避开。
  3. 加速度分析可以偷懒。如果只是做位置控制,用数值微分就够了。但要做力控制或高速运动,必须用解析式。
  4. 多画图。每次分析完,把末端轨迹、关节速度、加速度都画出来。肉眼一看就知道有没有问题。

重要提醒:运动学分析是并联机器人控制的基石。我见过太多人一上来就调PID,结果机构乱跳,最后发现是运动学算错了。嗯,先把运动学搞扎实,后面的控制才能水到渠成。

专注资料整理