坐标系与运动学基础:关节坐标系与笛卡尔坐标系、正运动学与逆运动学、齐次变换矩阵、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轴方向。我见过太多人对着空气列参数,结果α的正负号搞反了。画个草图,五分钟的事,能省你半天调试时间。
知识体系总览
下面这张图,是我自己总结的本章知识结构。你可以把它当成一个“地图”,学完这一章后,对照着检查自己是否都掌握了。
好了,这一章的内容就到这里。坐标系、正逆运动学、齐次变换矩阵、DH参数法——这四个东西是运动控制的基石。你把它搞透了,后面学轨迹规划、动力学控制都会轻松很多。
记住我的一句话:画图、列参数、写矩阵、验证。这四个步骤走一遍,任何机器人的运动学模型都能拿下来。