2. 运动学基础(上):空间描述与变换、齐次变换矩阵、标准DH参数建模
各位工程师朋友,大家好。欢迎来到《从仿真到实物的机械臂部署全解》的第二讲。
今天我们要啃的这块骨头,是机器人学的基石——运动学基础。说白了,就是回答三个问题:「我的机械臂末端在哪儿?」「它怎么动过去的?」「我怎么描述它每个关节的姿态?」
我个人习惯把这一章叫做「机械臂的坐标系世界观」。你想想看,一个六轴机械臂,六个电机转来转去,你凭什么知道它末端的螺丝刀对准了哪个孔?凭的就是一套严谨的空间描述语言。这套语言,就是今天我们要讲的齐次变换矩阵和DH参数。
核心观点: 机械臂运动学,本质上就是坐标系之间的「串门」游戏。你从基座坐标系出发,经过一个个关节坐标系,最终到达末端执行器。每一步怎么走,都由齐次变换矩阵说了算。
2.1 空间描述:位置与姿态
先聊点基础的。在三维空间里描述一个物体,你需要两样东西:位置和姿态。位置好办,一个3x1的向量就搞定了,比如 [x, y, z]^T。但姿态就有点讲究了。
我记得刚入行那会儿,总以为知道坐标就够了。直到有一次调试一个焊接机器人,明明坐标算对了,焊枪却歪了30度,把工件烧了个洞。嗯,从那以后我再也不敢轻视姿态描述了。
描述姿态,常用的有三种方式:
- 旋转矩阵:3x3的正交矩阵,直观但参数冗余(9个元素,实际自由度只有3)。
- 欧拉角:绕固定轴转三次,比如Z-Y-X顺序。简单易懂,但有万向锁问题。
- 四元数:四个参数,无奇点,插值平滑。做仿真和轨迹规划时我特别喜欢用。
但在我们今天的课程里,我建议大家先死磕旋转矩阵。为什么?因为它是齐次变换矩阵的骨架,也是DH参数法的底层逻辑。
我的小技巧: 如果你刚开始学,别急着背公式。拿一支笔,在桌上摆三个互相垂直的坐标系。用手比划绕X轴转、绕Y轴转、绕Z轴转。转上十遍,旋转矩阵的每个元素对应什么物理意义,你自然就懂了。
2.2 齐次变换矩阵:把旋转和平移打包
有了位置和姿态,我们怎么把它们组合成一个统一的数学工具?答案就是齐次变换矩阵。
它是一个4x4的矩阵,长这样:
| R P |
| 0 1 |
其中,R是3x3的旋转矩阵,P是3x1的位置向量。最后一行是 [0, 0, 0, 1],这是齐次坐标的固定格式。
你可能会问:「为什么非要多加一行?3x4不行吗?」
其实,加这一行的目的,是为了让连续变换可以用矩阵乘法串联起来。你想想看,从基座到关节1,乘一个矩阵;从关节1到关节2,再乘一个矩阵……最终,末端位姿就是一连串矩阵的乘积。如果没有齐次坐标,这个串联过程会变得非常麻烦。
注意: 矩阵乘法不满足交换律!也就是说,先旋转再平移,和先平移再旋转,结果完全不同。我在项目中见过太多新手搞混这个顺序,导致仿真里看着对,实物一跑就撞机。切记,左乘是相对于固定坐标系,右乘是相对于当前坐标系。
2.3 标准DH参数建模:机械臂的「身份证」
好了,现在我们有工具了。但怎么把一台具体的机械臂,比如你桌上那台六轴协作机器人,抽象成数学模型?这就轮到DH参数法登场了。
DH参数法,说白了就是给每个关节建立坐标系,然后用四个参数来描述相邻坐标系之间的关系。这四个参数是:
| 参数 | 符号 | 物理含义 |
|---|---|---|
| 连杆长度 | ai-1 | 沿Xi-1轴,从Zi-1到Zi的距离 |
| 连杆扭角 | αi-1 | 绕Xi-1轴,从Zi-1到Zi的转角 |
| 连杆偏距 | di | 沿Zi轴,从Xi-1到Xi的距离 |
| 关节角 | θi | 绕Zi轴,从Xi-1到Xi的转角 |
我个人习惯把DH参数看作机械臂的「身份证」。每台机械臂,无论品牌型号,只要你能测出或者从图纸上读出这四个参数,你就能在仿真软件里把它重建出来。
标准DH的建模步骤,我总结为四步走:
- 找关节轴:画出每个关节的旋转轴(Z轴)。
- 定坐标系原点:相邻两轴的交点,或者公垂线与轴的交点。
- 定X轴方向:沿公垂线,从当前Z轴指向下一个Z轴。
- 填参数表:按照上面的表格,把a、α、d、θ填进去。
避坑指南: 我曾经在做一个六轴码垛机器人项目时,因为搞混了「标准DH」和「改进DH」的坐标系定义,导致正运动学算出来的位置差了10厘米。后来花了整整两天才排查出来。所以,建模前一定要确认你用的是哪种DH约定。标准DH的坐标系建在连杆的末端,改进DH建在连杆的起始端。别搞反了!
2.4 知识体系总览
为了让你更直观地理解今天的内容,我画了一张图。它展示了从空间描述到DH建模的完整逻辑链条。
从这张图你可以看到,整个知识体系是层层递进的。先有空间描述的基础,然后有了齐次变换这个工具,最后用DH参数把工具应用到具体的机械臂上。最终,我们就能算出正运动学——也就是给定关节角度,求末端位姿。
2.5 一个简单的例子
光说不练假把式。我们拿一个两连杆机械臂来试试手。
假设:
- 连杆1长度 a1 = 1m,关节角 θ1
- 连杆2长度 a2 = 0.8m,关节角 θ2
- 所有扭角 α = 0,偏距 d = 0
那么,从基座到连杆1末端的变换矩阵 T1,和从连杆1到连杆2末端的变换矩阵 T2,相乘之后,就能得到末端在基座坐标系下的位置:
x = a₁·cos(θ₁) + a₂·cos(θ₁+θ₂)
y = a₁·sin(θ₁) + a₂·sin(θ₁+θ₂)
你看,是不是很简洁?这就是DH参数法的魅力——它把复杂的空间几何,变成了几个参数的代数运算。
我的建议: 学完这一章,你可以找一台真实的机械臂(哪怕是玩具级别的),用尺子量出它的连杆长度和偏距,然后自己动手建一个DH参数表。再写几行代码,算一算正运动学。当你在屏幕上看到计算出的末端位置和实际机械臂的位姿对上时,那种成就感,嗯,很爽。
好了,今天的内容就到这里。空间描述、齐次变换矩阵、标准DH参数建模,这三板斧是后续所有运动学、动力学、轨迹规划的基础。把它们啃透了,后面的路就好走了。
课后思考: 如果机械臂的关节不是旋转关节,而是平移关节(比如直角坐标机器人),DH参数中的哪个参数会变成变量?想明白这个问题,你对DH参数的理解就更深一层了。