2. 坐标系与运动学:世界坐标系与关节坐标系、正运动学与逆运动学、齐次变换矩阵、DH参数法
各位同学,欢迎来到第二章。
上一章我们聊了运动控制的基本概念。今天要讲的,是机器人学里最基础、也最绕不开的一块——坐标系与运动学。
说白了,就是回答两个问题:“机器人的手在哪儿?” 和 “怎么让它到那儿去?”
我刚开始做机器人项目时,觉得坐标系这东西太简单了,不就是XYZ嘛。结果第一次调试六轴机械臂,发现末端位置怎么算都不对,折腾了两天才发现是某个关节的坐标系方向搞反了。嗯,从那以后,我再也不敢小看坐标系了。
2.1 世界坐标系 vs 关节坐标系
先搞清楚两个最常用的坐标系。
- 世界坐标系(World Frame):固定在机器人底座或工作空间里的一个参考系。你告诉机器人“去抓桌子上的杯子”,这个“桌子上”就是世界坐标系下的描述。
- 关节坐标系(Joint Frame):每个关节都有自己的坐标系。关节1转了多少度,关节2抬了多少度——这些值只在关节空间里才有意义。
我个人的习惯是:规划路径时用世界坐标系,控制电机时用关节坐标系。你想想看,你不可能直接对电机说“往X方向走10厘米”,电机只认角度或圈数。所以,这两个坐标系之间必须能互相转换。
核心概念:世界坐标系是“任务空间”,关节坐标系是“电机空间”。所有运动控制,本质上都是在这两个空间之间来回穿梭。
2.2 正运动学与逆运动学
这两个词听起来高大上,其实道理很简单。
正运动学(Forward Kinematics)
已知每个关节的角度(或位移),求末端执行器的位置和姿态。
举个例子:你告诉机器人“关节1转30°,关节2转45°,关节3转60°”,然后问“末端在哪儿?”——这就是正运动学。
正运动学是唯一解的。给定一组关节值,末端位姿是确定的。我在项目中经常用正运动学做仿真验证——先给一组关节值,算出末端位置,再跟实际传感器读数对比,检查有没有机械偏差。
逆运动学(Inverse Kinematics)
反过来:已知末端执行器想要的位置和姿态,求每个关节的角度。
比如你告诉机器人“把手伸到坐标(0.5, 0.3, 0.2)处,并且让末端朝下”,然后问“每个关节该转多少度?”——这就是逆运动学。
逆运动学就麻烦多了。它可能有多个解,也可能无解。我记得有一次做焊接机器人,末端要沿着一条焊缝走,结果逆运动学算出来的关节角度突然跳变,导致机器人剧烈抖动。后来发现是选了错误的解分支。
避坑指南:逆运动学求解时,一定要考虑关节限位和奇异点。我曾经遇到过逆解算出来的角度在数学上完全正确,但某个关节需要转到200°——而实际电机只能转到180°,直接报错停机。
| 特性 | 正运动学 | 逆运动学 |
|---|---|---|
| 输入 | 关节角度/位移 | 末端位姿 |
| 输出 | 末端位姿 | 关节角度/位移 |
| 解的数量 | 唯一解 | 多解或无解 |
| 计算复杂度 | 低(直接代入公式) | 高(需要解方程组) |
| 典型应用 | 仿真、验证、离线编程 | 实时控制、轨迹规划 |
2.3 齐次变换矩阵
怎么在坐标系之间做转换?靠的就是齐次变换矩阵。
一个4×4的矩阵,长这样:
| R(3×3) t(3×1) |
| 0 0 0 1 |
左上角3×3是旋转矩阵,右上角3×1是平移向量。最后一行固定是[0 0 0 1]。
为什么用4×4?因为这样可以把旋转和平移统一成一个矩阵乘法,方便连续变换。你想想看,如果分别做旋转矩阵乘法再加平移向量,代码写起来多麻烦。
我个人的习惯是:把所有变换都写成齐次矩阵形式。哪怕只是一个简单的平移,我也写成4×4矩阵。这样后续串联多个变换时,直接矩阵相乘就行,不容易出错。
小技巧:齐次变换矩阵的逆矩阵有快速求法——旋转部分取转置,平移部分取负的旋转转置乘以平移向量。不用每次都做4×4矩阵求逆,省计算量。
2.4 DH参数法
DH参数法(Denavit-Hartenberg)是建立机器人运动学模型的标准方法。它用四个参数来描述相邻两个关节坐标系之间的变换关系:
- ai:连杆长度(沿Xi轴,从Zi-1到Zi的距离)
- αi:连杆扭转角(绕Xi轴,从Zi-1到Zi的角度)
- di:连杆偏距(沿Zi-1轴,从Xi-1到Xi的距离)
- θi:关节角(绕Zi-1轴,从Xi-1到Xi的角度)
对于旋转关节,θi是变量;对于移动关节,di是变量。
我记得第一次用DH参数建模时,被坐标系放置规则搞晕了。后来总结了一个口诀:“Z轴是关节轴,X轴是公垂线”。每个关节的Z轴沿着旋转或移动方向,X轴沿着从当前Z轴到下一个Z轴的公垂线方向。
有了DH参数,相邻关节的变换矩阵就可以直接写出来:
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 |
把每个关节的T矩阵连乘起来,就得到了从基座到末端的完整变换矩阵。这就是正运动学的数学基础。
实战建议:做DH参数建模时,先在纸上画出机器人的连杆坐标系图。标清楚每个Z轴和X轴的方向。这一步做扎实了,后面写代码就是套公式的事。我见过太多人直接跳进代码,结果坐标系方向搞反,调试到崩溃。
2.5 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以把它当作一个思维导图来理解。
从这张图可以看得很清楚:坐标系是基础,DH参数是建模工具,齐次变换矩阵是数学表达,正/逆运动学是最终应用。这四个部分环环相扣,缺一不可。