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 知识体系总览
下面这张图是我自己总结的运动学分析流程,你可以把它当作一个检查清单:
3.5 实践建议
最后,我给大家几点实践中的建议:
- 先做逆解,再做正解。逆解简单,可以用来验证正解代码的正确性。
- 雅可比矩阵一定要做奇异性分析。我习惯在仿真阶段就把所有奇异位形标出来,轨迹规划时直接避开。
- 加速度分析可以偷懒。如果只是做位置控制,用数值微分就够了。但要做力控制或高速运动,必须用解析式。
- 多画图。每次分析完,把末端轨迹、关节速度、加速度都画出来。肉眼一看就知道有没有问题。
重要提醒:运动学分析是并联机器人控制的基石。我见过太多人一上来就调PID,结果机构乱跳,最后发现是运动学算错了。嗯,先把运动学搞扎实,后面的控制才能水到渠成。