第二章:机器人运动学基础——刚体变换、齐次坐标、正运动学与逆运动学

各位同学,大家好。今天我们进入机器人学最核心的地基部分——运动学。说实话,这部分内容看起来有点数学味,但你别被吓到。我在做第一个机械臂项目时,就是因为没搞懂齐次坐标,结果调试了整整三天,最后发现是坐标系搞反了。嗯,从那以后,我对这部分内容就格外上心。

你想想看,人形机器人要抓东西,首先得知道自己的手在哪儿,目标在哪儿。这中间涉及的就是刚体变换和坐标系的转换。说白了,就是给机器人装上一套“GPS导航系统”。

2.1 刚体变换:让机器人知道自己在哪

刚体变换,我习惯叫它“不拆零件的搬家”。一个刚体在空间中运动,它的形状和大小不会变,只是位置和朝向变了。比如你的手掌,从桌面移到胸前,这就是一次刚体变换。

刚体变换包含两部分:

  • 旋转——物体在空间中的朝向变化
  • 平移——物体在空间中的位置变化

我在项目中遇到过一个问题:两个传感器装在机器人不同位置,它们各自测量到的数据,必须通过刚体变换统一到同一个坐标系下,才能融合使用。否则,数据就是乱的。

核心公式:

一个点P在坐标系{A}中的位置,变换到坐标系{B}中:

P_B = R_AB * P_A + t_AB

其中R_AB是旋转矩阵,t_AB是平移向量。

2.2 齐次坐标:把旋转和平移打包处理

为什么要引入齐次坐标?我刚开始学的时候也觉得多此一举。后来发现,如果不这么做,每次变换都要写一个旋转加一个平移,代码又长又容易出错。齐次坐标的精髓,就是把旋转和平移合并成一个4x4的矩阵。

怎么做的?很简单:

  • 把一个三维点(x, y, z)变成四维(x, y, z, 1)
  • 把旋转矩阵R和平移向量t拼成一个4x4矩阵
齐次变换矩阵 T = [ R   t ]
                  [ 0   1 ]

这样一来,连续多次变换就变成了矩阵乘法。你想想看,本来要写好几行代码,现在一行搞定。我个人习惯在代码里把所有变换都写成齐次形式,调试起来特别方便。

我的小技巧:在写代码时,把齐次变换矩阵的最后一列单独拿出来检查。如果平移量突然变得很大,八成是旋转矩阵算错了。我曾经因为这个bug排查了一下午。

2.3 正运动学:给定关节角度,求末端位置

正运动学,说白了就是“已知关节怎么动,求手在哪儿”。比如你让人形机器人的肩关节转30度,肘关节转45度,那么手掌最终会在什么位置?这就是正运动学要解决的问题。

对于串联机器人,正运动学的标准方法是DH参数法。我建议你记住这个流程:

  1. 给每个关节建立坐标系
  2. 确定DH参数(a, α, d, θ)
  3. 写出每个关节的齐次变换矩阵
  4. 把所有矩阵乘起来
T_0n = T_01 * T_12 * T_23 * ... * T_(n-1)n

这个T_0n就是末端在基坐标系下的位姿。我在做六轴机械臂时,就是用这个方法,一行一行矩阵乘下来,最后验证结果跟实际测量一致,那种感觉真的很爽。

注意:DH参数有两种约定——标准DH和改进DH。它们的坐标系建立方式不同,千万别混用。我见过有人把两种混在一起,结果算出来的位置差了十万八千里。

2.4 逆运动学:给定末端位置,求关节角度

逆运动学比正运动学难得多。正运动学是“唯一解”,逆运动学是“多解甚至无解”。比如你要让手碰到桌面上一个点,肩关节和肘关节可以有多种组合方式——这就是多解。

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

  • 解析法——通过几何关系直接推导出公式,速度快,但只适用于特定构型
  • 数值法——用迭代逼近的方式求解,通用性强,但计算量大

我个人习惯:如果机器人构型比较规整(比如有相邻关节轴线平行或垂直),优先用解析法。如果构型复杂,再用数值法。数值法我常用的是牛顿-拉夫森迭代。

避坑指南:

我曾经在一个人形机器人项目中,逆运动学算出来的角度让机器人摆出了“反关节”姿势——就是人类做不到的那种。后来发现是忽略了关节限位。所以,算完逆运动学一定要检查每个关节角度是否在物理允许范围内。

2.5 知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你顺着箭头看,就能明白运动学到底在讲什么。

机器人运动学知识体系 刚体变换 齐次坐标 正运动学 逆运动学 抓取动作设计 轨迹规划 · 避障 旋转 + 平移 4x4矩阵统一表示 关节角 → 末端位姿 末端位姿 → 关节角

2.6 本章小结

运动学是机器人抓取的“语言”。没有它,你连机器人的手在哪儿都不知道,更别提抓东西了。我个人建议你:

  • 先把齐次坐标的矩阵乘法练熟,这是基本功
  • 正运动学用DH参数法,多算几个例子找感觉
  • 逆运动学先掌握解析法,再学数值法
  • 每次算完,一定要做物理验证——让机器人实际动一动

好了,这一章就到这里。记住,运动学不难,难的是细心。我在项目里踩过的坑,希望你们都能绕过去。

可可精品资料库