1. 运动学基础:机器人运动学概述、刚体在空间中的位姿描述、齐次变换矩阵

大家好,我是老张。今天咱们正式进入运动学仿真与离线编程的第一章。说实话,运动学是整个机器人技术的基石,就像盖房子打地基一样。你想想看,如果连机器人怎么动、位置怎么描述都搞不清楚,后面做轨迹规划、碰撞检测根本无从谈起。

我个人习惯把运动学分成两部分来看:正运动学逆运动学。正运动学就是已知关节角度,求末端位姿;逆运动学反过来,已知末端位姿,求关节角度。这一章我们先打好基础,把刚体位姿描述和齐次变换矩阵讲透。

核心要点:机器人运动学本质上就是研究「刚体在空间中的位置和姿态」如何用数学语言精确表达。齐次变换矩阵是贯穿整个课程的核心工具。

1.1 机器人运动学概述

什么叫运动学?说白了就是研究物体怎么动,但不考虑力和力矩。你推一下机器人手臂,它转了多少度、末端走了多远——这些是运动学关心的。至于你用了多大的力、电机扭矩够不够——那是动力学的事。

我记得刚入行那会儿,带我的老工程师跟我说过一句话:「运动学是机器人的语言,动力学是机器人的脾气。」这么多年下来,我觉得这话特别在理。你先把语言学会了,后面再慢慢摸脾气。

运动学在机器人领域主要解决三个问题:

  • 描述问题:如何用数学描述机器人各连杆的位置和姿态
  • 映射问题:关节空间到笛卡尔空间的映射关系
  • 求解问题:给定末端位姿,反推关节角度

嗯,这里要注意:我们说的「位姿」其实是两个概念——位置(Position)和姿态(Orientation)。位置好理解,就是三维空间里的坐标 (x, y, z)。姿态就稍微复杂一点,描述的是刚体「朝哪个方向」。

1.2 刚体在空间中的位姿描述

先说说位置。假设我们有一个坐标系 {A},空间里有一个点 P,那它的位置就可以用一个 3×1 的列向量来表示:

^A P = [p_x, p_y, p_z]^T

这个很简单,初中数学就学过。但机器人不是质点,它是一个有体积、有朝向的刚体。比如你抓一个工件,不光要知道工件中心在哪,还得知道它朝哪个方向,不然夹爪怎么对准?

姿态描述就有点意思了。常用的方法有三种:

  1. 旋转矩阵:3×3 的正交矩阵,列向量表示刚体坐标系各轴在参考坐标系中的投影
  2. 欧拉角:绕固定轴或动轴的三次旋转,比如 ZYX 欧拉角
  3. 四元数:用四个参数描述旋转,避免了万向锁问题

我在项目中遇到过一个问题:用欧拉角做插值时,机器人末端突然「翻了个跟头」。后来才发现是万向锁导致的。从那以后,只要涉及连续旋转插值,我优先用四元数。

实战小技巧:如果你只是做静态位姿描述,旋转矩阵最直观。如果你要做轨迹插值,建议用四元数。欧拉角适合人机交互界面显示,但不适合内部计算。

一个完整的位姿描述,就是把位置和姿态合在一起。通常写成 {^A_B R, ^A P_B},其中 ^A_B R 是旋转矩阵,^A P_B 是坐标系 {B} 原点在 {A} 中的位置。

1.3 齐次变换矩阵

好了,重点来了。齐次变换矩阵是机器人学里最常用的工具,没有之一。它把旋转和平移统一到一个 4×4 的矩阵里:

^A_B T = [ ^A_B R    ^A P_B ]
         [   0        1    ]

为什么叫「齐次」?因为引入了第四个维度——缩放因子 w。在三维空间中,我们用 (x, y, z, w) 表示一个点,w=1 时就是普通点,w=0 时表示方向向量。这个设计非常巧妙,让平移和旋转可以用矩阵乘法统一处理。

你想想看,如果没有齐次变换矩阵,你要先旋转再平移,得写两个式子:

^A P = ^A_B R * ^B P + ^A P_B

用齐次变换矩阵就简单了:

^A P̃ = ^A_B T * ^B P̃

其中 P̃ 是齐次坐标。一个矩阵乘法搞定所有变换,代码写起来也清爽多了。

避坑指南:我曾经在项目里犯过一个低级错误——把旋转矩阵和平移向量拼成齐次矩阵时,忘了检查旋转矩阵是否正交。结果算出来的末端位置完全不对。记住:旋转矩阵必须是正交矩阵,行列式为 +1。拼之前先验证一下。

齐次变换矩阵有几个重要性质:

  • 可逆性:^B_A T = (^A_B T)^(-1),逆矩阵表示反向变换
  • 链式法则:^A_C T = ^A_B T * ^B_C T,多个变换可以串联
  • 封闭性:齐次变换矩阵的乘积仍然是齐次变换矩阵

这些性质在实际编程中非常有用。比如你要计算机器人末端相对于基座的位置,只需要把每个关节的变换矩阵乘起来就行。这就是后面要讲的 DH 参数法的核心思想。

下面我用 SVG 画了一张本章的知识结构图,帮你理清思路:

运动学基础 · 知识体系 机器人运动学概述 刚体位姿描述 齐次变换矩阵 正运动学 vs 逆运动学 关节空间 → 笛卡尔空间 位置:三维坐标 (x, y, z) 姿态:旋转矩阵 / 欧拉角 / 四元数 4×4 矩阵:旋转 + 平移 链式法则:串联变换 核心工具:齐次变换矩阵 统一描述位置、姿态、坐标系变换

这张图把本章的三个核心模块串起来了。从左到右,从概述到具体描述方法,最后汇聚到齐次变换矩阵这个核心工具上。后面的章节我们会反复用到这个矩阵,所以现在一定要把它吃透。

最后说几句心里话。运动学基础看起来有点枯燥,但它是后面所有高级内容的前提。我见过不少初学者急着学轨迹规划、学动力学,结果连坐标系变换都搞不清楚,写出来的代码全是 bug。磨刀不误砍柴工,这一章的内容值得你花时间反复推敲。

好,今天就到这里。下一节我们开始讲 DH 参数法,那是建立机器人运动学模型的标准化方法,非常实用。


专注资料整理