3. 运动学与动力学基础:正逆运动学、雅可比矩阵、拉格朗日动力学建模

各位同学,欢迎来到第三章。说实话,这一章是后面所有力控算法的“地基”。你想想看,模仿学习要控制机器人去柔顺地接触环境,你总得知道机器人当前在哪儿、关节怎么动、力怎么传吧?

我个人习惯把运动学和动力学比作“骨架”和“肌肉”。运动学管的是位置、速度、加速度这些几何关系;动力学管的是力、力矩、质量、惯量这些物理量。两者缺一不可。

3.1 正运动学:从关节空间到任务空间

正运动学,说白了就是:给定每个关节的角度,求末端执行器在笛卡尔空间的位置和姿态。

我记得刚入行时,带我的老工程师丢给我一本《机器人学导论》,说:“你把DH参数搞明白,就算入门了。” 我当时还不太理解,后来做项目才发现,DH参数确实是正运动学的核心。

3.1.1 DH参数法

Denavit-Hartenberg参数法,用四个参数来描述相邻连杆之间的坐标变换:

  • ai-1:连杆长度,沿Xi-1轴从Zi-1到Zi的距离
  • αi-1:连杆扭转角,绕Xi-1轴从Zi-1到Zi的角度
  • di:连杆偏距,沿Zi轴从Xi-1到Xi的距离
  • θi:关节角,绕Zi轴从Xi-1到Xi的角度

有了这四个参数,相邻连杆的齐次变换矩阵就是:

i-1T_i = Rot(X, αi-1) · Trans(X, ai-1) · Rot(Z, θi) · Trans(Z, di)

把每个关节的变换矩阵连乘起来,就得到末端相对于基座的位姿:

0T_n = 0T_1 · 1T_2 · ... · n-1T_n
我的小技巧: 写代码时,我习惯把DH参数表定义成一个结构体数组,然后用循环连乘。这样不管是6轴还是7轴机器人,改个参数表就行,不用重写算法。

3.2 逆运动学:从任务空间回到关节空间

逆运动学正好反过来:已知末端位姿,求各关节角度。这比正运动学难多了,因为解不唯一,甚至可能无解。

为什么会这样?你想想看,一个6轴机器人到达同一个位置,可能有8组不同的关节角度(肘上/肘下、腕翻转等)。

3.2.1 解析法与数值法

方法 优点 缺点 适用场景
解析法(封闭解) 速度快、精度高、所有解都能找到 只适用于满足Pieper准则的机器人 工业6轴机器人(后三轴交于一点)
数值法(迭代法) 通用性强,任意构型都能用 速度慢、可能陷入局部最优、需要初值 冗余机器人、非球形腕机器人

我在项目中遇到过一个问题:用数值法做逆解时,初值给得不好,迭代半天不收敛。后来我改成先用解析法算一个近似解,再用数值法微调,效果好了很多。

避坑指南: 我曾经在调试一个协作机器人时,逆解算出来的关节角度跳变特别大。查了半天,原来是角度范围没做归一化处理。记住:逆解输出一定要做角度连续性处理,否则控制信号会抖得像筛糠一样。

3.3 雅可比矩阵:速度与力的“翻译官”

雅可比矩阵,是连接关节空间和任务空间的桥梁。它把关节速度映射到末端速度,也把末端力映射到关节力矩。

3.3.1 几何雅可比

对于旋转关节,雅可比矩阵的每一列可以这样计算:

Ji = [ zi-1 × (pn - pi-1) ]
      [        zi-1        ]

其中zi-1是关节轴方向,pn是末端位置,pi-1是关节原点位置。

有了雅可比矩阵,速度映射就是:

ẋ = J · q̇

力映射就是(利用虚功原理):

τ = JT · F
核心理解: 雅可比矩阵的转置,就是把笛卡尔空间的力/力矩,映射到关节空间的力矩。这是后面做阻抗控制、力位混合控制的基础。

3.3.2 奇异性分析

当雅可比矩阵不满秩时,机器人处于奇异位形。这时候,某些方向的运动能力会丧失,关节速度会趋于无穷大。

我记得有一次调试焊接机器人,在某个姿态下末端突然剧烈抖动。一查,原来是腕部接近奇异点,雅可比矩阵的条件数太大了。

我的做法: 在控制循环里实时计算雅可比矩阵的条件数。当条件数超过阈值(比如1000),就切换到阻尼最小二乘法(DLS)来求逆解,避免关节速度爆炸。

3.4 拉格朗日动力学建模

动力学,就是研究力和运动的关系。拉格朗日法从能量角度出发,比牛顿-欧拉法更系统化,尤其适合复杂机器人系统。

3.4.1 拉格朗日方程

拉格朗日函数定义为系统动能减去势能:

L = K - P

拉格朗日方程:

d/dt (∂L/∂q̇) - ∂L/∂q = τ

展开后,得到标准形式:

M(q)q̈ + C(q, q̇)q̇ + G(q) = τ

其中:

  • M(q):惯性矩阵,对称正定
  • C(q, q̇):科里奥利力和离心力矩阵
  • G(q):重力向量
  • τ:关节力矩向量

3.4.2 建模步骤

  1. 定义广义坐标:通常选关节角度q
  2. 计算各连杆的动能和势能:需要知道质心位置、质量、惯性张量
  3. 构造拉格朗日函数:L = K - P
  4. 代入拉格朗日方程:求偏导,整理成标准形式
注意: 手动推导6轴机器人的动力学模型,那工作量可不是开玩笑的。我建议你用符号计算工具(比如SymPy、Matlab Symbolic Toolbox)来辅助推导。我曾经手算过一个3轴机器人的动力学,花了整整两天,还错了好几处。

3.5 知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作一个“导航图”,随时回来对照。

运动学与动力学知识体系 机器人系统 运动学 动力学 正运动学 逆运动学 拉格朗日法 牛顿-欧拉法 雅可比矩阵 速度映射 力映射 奇异性分析 柔顺力控 / 阻抗控制 💡 核心逻辑 运动学提供“位置关系” 雅可比提供“速度/力映射” 动力学提供“力与运动的关系”

3.6 本章小结

这一章的内容,说实话有点“硬”。但这些都是后面做模仿学习和柔顺力控绕不开的基础。

  • 正运动学:让你知道机器人“在哪儿”
  • 逆运动学:让你知道机器人“怎么去”
  • 雅可比矩阵:让你知道“速度怎么映射、力怎么传递”
  • 拉格朗日动力学:让你知道“力怎么产生运动”

我个人建议,学完这一章后,找一台真实的机器人(或者仿真环境),把DH参数标出来,写代码算一遍正逆解,再算一遍雅可比矩阵。只有亲手写过代码,这些公式才能真正变成你自己的东西。

记住: 后面讲阻抗控制时,你会频繁用到雅可比矩阵的转置来做力映射;讲轨迹规划时,你会用到逆运动学;讲前馈补偿时,你会用到动力学模型。这一章的基础打得越扎实,后面学起来就越轻松。