坐标系与运动学基础:关节坐标系与笛卡尔坐标系、正运动学与逆运动学、齐次变换矩阵、DH参数法

大家好,我是老张。在运动控制这个行当摸爬滚打了十几年,今天咱们来聊聊最基础、也最绕不开的一块内容——坐标系与运动学。

说实话,很多刚入行的朋友觉得这块太理论,上来就想调PID、跑轨迹。但我得说句实在话:坐标系搞不明白,后面全是坑。我自己就吃过这个亏,当年调试一个六轴协作机器人,正逆解算搞反了,结果末端执行器直接怼到工件上,差点把夹具干废。从那以后,我养成了一个习惯:写任何运动控制代码之前,先把坐标系和变换矩阵画清楚。

1. 关节坐标系 vs 笛卡尔坐标系

先说说这两个最基础的概念。

关节坐标系,说白了就是每个关节自己的“小世界”。对于旋转关节,它的坐标就是角度值;对于直线关节,就是位移值。你想想看,一个六轴机器人,它的关节坐标就是六个角度值:θ₁、θ₂、θ₃、θ₄、θ₅、θ₆。每个关节只关心自己转了多少度,不关心别的关节在干嘛。

笛卡尔坐标系,就是我们熟悉的XYZ直角坐标系。它描述的是机器人末端执行器在三维空间中的位置和姿态。比如“把焊枪移动到点(300, 200, 150),并且让焊枪垂直于工件表面”——这就是笛卡尔空间的描述。

我个人的习惯是:调试阶段多用关节坐标系,因为每个关节独立控制,出问题好排查;但实际作业时,操作员更关心笛卡尔坐标,毕竟没人愿意去记六个角度值。

核心区别一句话:

  • 关节坐标系 = 电机怎么转(驱动层)
  • 笛卡尔坐标系 = 工具怎么动(应用层)

2. 正运动学与逆运动学

这两个概念,是运动控制的“左右手”。

正运动学:已知关节角度,求末端位姿。说白了就是“我知道每个关节转了多少,你给我算算工具头在哪儿”。这个计算是唯一的,给定一组关节角,末端位姿是确定的。

逆运动学:已知末端位姿,求关节角度。这个就麻烦了——同一个末端位置,可能有多种关节角度组合(多解),甚至可能无解(超出工作空间)。

我记得有一次做焊接机器人项目,客户要求焊枪必须保持特定姿态进入一个狭窄空间。正运动学算出来没问题,但逆运动学怎么都解不出来。后来发现是腕关节的奇异点问题——嗯,这里要注意,逆运动学求解时一定要做奇异点检测和避让。

实战小技巧:

我建议在写逆运动学代码时,先判断目标点是否在工作空间内。可以用一个简单的距离判断:如果目标点到基座的距离大于所有连杆长度之和,直接报错,别浪费时间算了。

3. 齐次变换矩阵

齐次变换矩阵,是连接不同坐标系的“桥梁”。它长这样:

| R₃ₓ₃   T₃ₓ₁ |
| 0 0 0    1   |

左上角3×3是旋转矩阵,右上角3×1是平移向量。为什么用4×4矩阵?说白了就是为了把旋转和平移统一成一个矩阵运算,方便连续变换。

举个例子:从基座坐标系到末端坐标系的变换,可以写成:

T_base_to_end = T_base_to_j1 × T_j1_to_j2 × ... × T_jn_to_end

这就是正运动学的矩阵表达。每个T矩阵代表一个关节的变换,连乘起来就是末端位姿。

我个人习惯在代码里用4×4的数组或者结构体来存变换矩阵,别用3×3加一个平移向量分开存——容易搞混,而且矩阵乘法写起来也麻烦。

注意:

矩阵乘法不满足交换律!T₁×T₂ ≠ T₂×T₁。我曾经在调试SCARA机器人时,把两个相邻关节的变换矩阵乘反了,结果末端轨迹完全乱套。排查了整整一个下午才发现是乘法顺序的问题。

4. DH参数法

DH参数法,是描述机器人连杆和关节关系的标准方法。它用四个参数来定义相邻两个坐标系之间的变换:

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

有了这四个参数,相邻坐标系的变换矩阵就可以写成标准形式:

Tᵢ = Rot(z, θᵢ) × Trans(z, dᵢ) × Trans(x, aᵢ) × Rot(x, αᵢ)

展开后就是:

| cosθᵢ   -sinθᵢcosαᵢ    sinθᵢsinαᵢ    aᵢcosθᵢ |
| sinθᵢ    cosθᵢcosαᵢ   -cosθᵢsinαᵢ    aᵢsinθᵢ |
|   0        sinαᵢ         cosαᵢ         dᵢ     |
|   0          0             0            1     |

你想想看,只要把每个关节的DH参数填进去,就能得到整个机器人的运动学模型。这就是为什么DH参数法在工业机器人领域这么流行——标准化、通用化。

我的经验:

建立DH参数表时,一定要画图!把每个关节的坐标系画出来,标清楚z轴方向和x轴方向。我见过太多人对着空气列参数,结果α的正负号搞反了。画个草图,五分钟的事,能省你半天调试时间。

知识体系总览

下面这张图,是我自己总结的本章知识结构。你可以把它当成一个“地图”,学完这一章后,对照着检查自己是否都掌握了。

坐标系与运动学基础 - 知识体系 运动学基础 坐标系 关节坐标系(角度/位移) 笛卡尔坐标系(XYZ+姿态) 运动学 正运动学:关节→末端位姿 逆运动学:末端位姿→关节 齐次变换矩阵 4×4矩阵:旋转+平移 矩阵连乘实现坐标变换 DH参数法 a, α, d, θ 四个参数 标准化建模,通用性强 四个模块相互关联,共同构成运动学基础

好了,这一章的内容就到这里。坐标系、正逆运动学、齐次变换矩阵、DH参数法——这四个东西是运动控制的基石。你把它搞透了,后面学轨迹规划、动力学控制都会轻松很多。

记住我的一句话:画图、列参数、写矩阵、验证。这四个步骤走一遍,任何机器人的运动学模型都能拿下来。


专注资料整理