运动学基础:正运动学与逆运动学、D-H参数法、关节空间与任务空间

各位同学,今天我们来聊聊运动学。说实话,这是人形机器人步态控制里最绕不开的一块硬骨头。我当年刚入行时,觉得运动学就是一堆矩阵乘法,背下来就行。结果第一次调机器人走路,发现腿怎么都伸不直,一查——哦,坐标系建反了。

所以今天咱们把这几个概念彻底捋清楚。你想想看,机器人要走路,首先得知道「腿该往哪伸」和「关节该转多少」——这就是运动学要解决的核心问题。

1. 正运动学:从关节到末端

正运动学,说白了就是:已知每个关节的角度,求脚掌(或手)的位置和姿态。

举个例子。你让机器人髋关节转30度,膝关节转60度,踝关节转10度。那么脚掌到底在空间哪个点?朝哪个方向?这就是正运动学要算的。

我在项目中遇到过一件事:有一次调试双足行走,机器人站着不动时脚的位置算得挺准,一走起来就偏。后来发现是正运动学里忘了加基座偏移——嗯,这种低级错误,犯过一次就记住了。

正运动学的数学本质,就是一连串的齐次变换矩阵相乘:

T_0_n = T_0_1 * T_1_2 * ... * T_{n-1}_n

其中每个 T 代表相邻两个关节之间的变换关系。最终得到的就是末端执行器在基坐标系下的位姿。

关键点:正运动学是唯一的、确定的。给定一组关节角度,末端位姿只有一种可能。这就像你伸直手臂,肘关节角度固定了,手的位置就固定了。

2. 逆运动学:从末端到关节

逆运动学正好反过来:已知脚掌要踩到某个位置,求各个关节该转多少度。

这才是真正头疼的地方。为什么?因为逆运动学通常有多个解,甚至无解。

你想想看,人形机器人的腿有6个自由度(髋3、膝1、踝2)。要让脚掌到达某个位置,可能有几十种关节角度的组合。哪个才是对的?

我个人习惯的做法是:先判断是否存在解。比如脚要踩到头顶上去——那肯定无解,因为腿没那么长。然后从多个解里选一个「最舒服」的,比如关节角度变化最小的那个。

避坑指南:我曾经在逆运动学里直接用数值迭代法(比如牛顿法),结果迭代不收敛,机器人直接劈叉了。后来我加了阻尼因子(Levenberg-Marquardt),才稳定下来。所以,数值法一定要加阻尼。

逆运动学的求解方法主要有两种:

  • 解析法:适合自由度较少的机器人,速度快,但推导复杂。我一般只在6自由度以下用。
  • 数值法:通用性强,但计算量大,且可能陷入局部最优。适合自由度多的机器人。

3. D-H参数法:建立坐标系的「标准动作」

D-H参数法,全称是Denavit-Hartenberg参数法。说白了,就是一套给机器人每个关节建立坐标系的标准化流程。

为什么要标准化?因为如果没有统一规则,每个人建的坐标系都不一样,代码根本没法复用。D-H参数法用四个参数就能描述相邻两个关节的关系:

参数 符号 含义
连杆长度 a 相邻两关节轴线的公垂线长度
连杆扭角 α 相邻两关节轴线的夹角
关节距离 d 沿关节轴线的偏移量
关节角度 θ 绕关节轴线的旋转角度

我记得第一次用D-H参数建人形机器人的腿模型时,花了整整一下午。因为髋关节有3个自由度,怎么分配a、α、d、θ这四个参数,很容易搞混。后来我画了个草图,把每个关节的轴线标出来,才理清楚。

注意:D-H参数有两种约定——标准D-H和改进D-H。区别在于坐标系建在关节的前面还是后面。我建议你选一种,从头到尾保持一致。否则,正运动学算出来的结果会差一个旋转。

4. 关节空间与任务空间:两个世界的切换

这两个概念,我刚开始学的时候觉得挺玄乎。其实很简单:

  • 关节空间:用关节角度来描述机器人的状态。比如「髋关节30°,膝关节60°」。
  • 任务空间:用末端执行器的位置和姿态来描述。比如「脚掌在(0.5, 0.2, 0.8)米处,朝向正前方」。

你想想看,我们规划步态时,肯定是在任务空间里想——「下一步脚要踩到前面30厘米的地方」。但实际控制电机时,必须转换成关节空间的角度值。这就是正/逆运动学在做的事:在两个空间之间来回切换。

我在调试步态时,经常遇到一个问题:任务空间里规划的轨迹很平滑,但映射到关节空间后,某个关节的角度变化特别剧烈。这说明什么呢?说明机器人快要到奇异点了。嗯,奇异点是个大话题,后面我们会专门讲。

核心关系:
  • 正运动学:关节空间 → 任务空间
  • 逆运动学:任务空间 → 关节空间
  • D-H参数:建立关节空间到任务空间的数学桥梁

5. 知识体系总览

下面这张图,是我自己总结的运动学知识框架。你看一眼,就能明白今天讲的这些内容是怎么串起来的:

运动学基础:知识体系 运动学 正运动学 逆运动学 D-H参数法 关节角度 → 末端位姿 唯一解,矩阵连乘 末端位姿 → 关节角度 多解/无解,需选最优 a, α, d, θ 四个参数 标准化坐标系建立 关节空间 ↔ 任务空间 的桥梁

这张图里,正运动学和逆运动学是「双向箭头」的关系,D-H参数法是它们共同的数学基础。而关节空间和任务空间,就是这两个运动学来回穿梭的两个世界。

6. 实战中的一点体会

最后说点实际的。你在调人形机器人步态时,运动学这块最容易出问题的不是公式推导,而是坐标系的一致性。

我见过太多人,正运动学用的标准D-H,逆运动学用的改进D-H,结果算出来的关节角度差了180度。还有的人,关节空间和任务空间混着用,规划轨迹时在任务空间里画了个圆,结果映射到关节空间后,电机直接过载保护了。

所以我的建议是:

  • 先把D-H参数表写清楚,每个关节的a、α、d、θ都标出来
  • 正运动学验证通过后,再写逆运动学
  • 关节空间和任务空间,脑子里要时刻分清楚

嗯,今天就先聊到这儿。运动学是步态控制的地基,地基打不牢,后面走路肯定歪。你先把这些概念消化一下,下次我们聊速度运动学和雅可比矩阵——那又是另一个有意思的话题了。

可可精品资料库