3、运动学基础:正运动学与逆运动学、DH参数法、雅可比矩阵

各位好,我是老张。今天咱们聊聊运动学基础。说实话,这章内容有点「硬」,但它是后续所有轨迹规划工作的地基。你想想看,如果连机器人末端在哪儿、关节怎么动都算不清楚,那抖动消除、轨迹平滑就全是空中楼阁。

我刚开始做机器人控制那会儿,也踩过不少坑。有一次在产线上调试六轴机器人,正运动学算出来位置总差几毫米,查了两天才发现是DH参数表里一个符号写反了。嗯,从那以后我对运动学就格外较真。

3.1 正运动学:从关节空间到笛卡尔空间

正运动学,说白了就是:已知每个关节的角度(或位移),求末端执行器的位置和姿态。

公式长这样:

T = f(θ₁, θ₂, θ₃, ..., θₙ)

其中 T 是一个 4×4 的齐次变换矩阵,包含了位置和姿态信息。θᵢ 是第 i 个关节的变量。

我个人习惯把正运动学理解成「从里往外推」——从基座开始,一个关节一个关节地乘变换矩阵,最后得到末端在基坐标系下的位姿。

核心要点:正运动学有唯一解。给定一组关节角度,末端位姿是确定的。这是它的「确定性」优势。

3.2 逆运动学:从笛卡尔空间回到关节空间

逆运动学正好反过来:已知末端的目标位姿,求各关节需要转到的角度。

公式:

θ = f⁻¹(T)

这里就有意思了——逆运动学通常有多个解,甚至可能无解。我在项目中遇到过这种情况:想让机器人末端走到某个点,结果逆解算出来关节角度超出了限位,只能重新规划路径。

避坑指南:逆运动学求解时,一定要做「多解筛选」。我曾经因为直接取了第一个解,导致机器人走了一条奇怪的路径,差点撞到工件。后来我养成了习惯:把所有可行解列出来,按「关节位移最小」或「避障优先」的原则选一个。

常见的逆解方法有两种:

  • 解析法:速度快,精度高,但只适用于特定构型(如PUMA 560)。
  • 数值法:通用性强,但迭代慢,可能不收敛。我一般用牛顿-拉夫森法,配合雅可比矩阵。

3.3 DH参数法:建立运动学模型的「标准语言」

DH参数法(Denavit-Hartenberg)是建立机器人运动学模型的通用方法。它用四个参数来描述相邻两个连杆之间的变换关系:

参数 符号 含义
连杆长度 aᵢ 沿 xᵢ 轴,从 zᵢ₋₁ 到 zᵢ 的距离
连杆扭角 αᵢ 绕 xᵢ 轴,从 zᵢ₋₁ 到 zᵢ 的转角
关节距离 dᵢ 沿 zᵢ₋₁ 轴,从 xᵢ₋₁ 到 xᵢ 的距离
关节转角 θᵢ 绕 zᵢ₋₁ 轴,从 xᵢ₋₁ 到 xᵢ 的转角

标准DH和修正DH的区别,我简单说一下:

  • 标准DH:变换顺序是 Rot(z,θ) → Trans(z,d) → Trans(x,a) → Rot(x,α)。我早期用的都是这个。
  • 修正DH:变换顺序是 Rot(x,α) → Trans(x,a) → Rot(z,θ) → Trans(z,d)。更适合树形结构机器人。

我个人建议:选一种就坚持用下去。混用两种DH,很容易搞混坐标系方向。我见过有人在一张图纸上混用,结果调试了三天才发现问题。

小技巧:建立DH参数表时,先把每个关节的坐标系画出来。我习惯用不同颜色标注 x、y、z 轴,这样不容易出错。画完之后再填参数表,效率高很多。

3.4 雅可比矩阵:速度与力的映射

雅可比矩阵 J 是运动学里的「桥梁」。它把关节空间的速度映射到笛卡尔空间的速度:

v = J · θ̇

其中 v 是末端速度(线速度+角速度),θ̇ 是关节速度。

反过来,它也能把笛卡尔空间的力映射到关节力矩:

τ = Jᵀ · F

这个关系在力控制里特别重要。我记得有一次做力控打磨,就是靠雅可比矩阵把末端的接触力映射回各个关节,然后做阻抗控制。

雅可比矩阵的求法有两种:

  1. 微分法:对正运动学方程求偏导。数学上严谨,但计算量大。
  2. 矢量法:利用运动学关系直接构造。我更喜欢这个,效率高,适合实时控制。

关键概念:雅可比矩阵的秩决定了机器人的「奇异位形」。当 J 不满秩时,机器人会失去某个方向的运动能力,或者某个关节速度会趋于无穷大。这是轨迹规划时必须避开的「雷区」。

奇异位形怎么判断?看雅可比矩阵的行列式。如果 det(J) = 0,那就是奇异点。我在项目中遇到过:机器人走到某个位置时,突然一个关节转速飙升,差点烧了电机。后来一查,就是进入了奇异位形。

3.5 知识体系总览

下面这张图,是我自己总结的运动学知识框架。你可以把它当作本章的「地图」:

运动学知识体系总览 运动学基础 正运动学 逆运动学 雅可比矩阵 齐次变换矩阵 DH参数法 解析法 vs 数值法 速度/力映射 应用:轨迹规划 → 奇异规避 → 抖动消除 → 力控制 说明:正运动学是基础,DH参数是建模工具 逆运动学和雅可比矩阵是轨迹规划与抖动消除的核心

3.6 实战中的几个关键点

讲完理论,我分享几个实战中容易忽略的地方:

  • DH参数表的验证:建好模型后,先做正运动学验证。让每个关节单独转动,观察末端轨迹是否合理。我习惯用仿真软件先跑一遍。
  • 逆解的多解处理:不要只取第一个解。我一般会算3-5个候选解,然后选一个「关节变化最小」的,这样运动更平滑。
  • 雅可比矩阵的实时性:在高速轨迹规划中,雅可比矩阵需要实时更新。我建议用矢量法,计算量小,适合嵌入式环境。

我的习惯:每次调试新机器人,我都会先打印一份DH参数表贴在控制柜上。这样排查问题时,不用每次都翻文档。嗯,这个小习惯帮我省了不少时间。

好了,运动学基础就讲到这里。这些内容虽然基础,但真的很重要。后面的轨迹规划、抖动消除,全都建立在今天讲的知识上。你把这些吃透了,后面会轻松很多。