1. 运动学基础回顾:坐标系、DH参数与正逆解
各位同学,欢迎来到这门课。我是老周,搞了十几年机器人控制和嵌入式硬件。今天咱们先打好运动学的地基。别小看这些基础概念,我见过太多项目栽在坐标系没对齐、DH参数写反这种低级错误上。
说白了,运动学就是研究机器人“动起来”的数学关系。你给关节发个角度,末端执行器会跑到哪?反过来,你想让末端去抓个杯子,关节该转多少度?这两个问题,就是正运动学和逆运动学要解决的。
1.1 机器人坐标系建立
搞机器人,第一件事就是定坐标系。我习惯把坐标系想象成“尺子”——你得先统一度量衡,才能谈位置和姿态。
一个完整的机器人系统,通常涉及这么几把“尺子”:
- 世界坐标系(基坐标系):固定在机器人底座或工作空间地面,是所有运动的绝对参考。我一般把它放在机器人安装面的中心,Z轴朝上。
- 关节坐标系:每个关节都有自己的坐标系,原点在关节轴线上。描述的是关节自身的转动或移动。
- 工具坐标系(TCP):固定在末端执行器上,原点就是工具中心点(Tool Center Point)。你编程时控制的就是这个点。
- 用户坐标系:为了方便编程,在工作台上任意定义的坐标系。比如焊接时沿着焊缝走,定义一个用户坐标系就简单多了。
这些坐标系之间通过齐次变换矩阵(4x4矩阵)互相转换。矩阵里包含了旋转(3x3)和平移(3x1)信息。嗯,这里要记住:矩阵乘法不满足交换律,左乘右乘顺序搞反,末端位置能差出十万八千里。我曾经在调试一个六轴协作臂时,就是因为把变换顺序写反了,结果机器人差点撞到夹具——从那以后,我每次写变换都先在纸上画一遍坐标链。
FRAME_WORLD、FRAME_BASE、FRAME_TOOL。这样在矩阵运算时不容易搞混。
1.2 DH参数法详解
DH参数法,是Denavit和Hartenberg两位老前辈在1955年提出的。它的核心思想很巧妙:用4个参数就能完整描述相邻两个关节坐标系之间的变换关系。
这4个参数分别是:
| 参数 | 符号 | 物理含义 | 我的理解 |
|---|---|---|---|
| 连杆长度 | ai-1 | 沿Xi-1轴,从Zi-1到Zi的距离 | 两个关节轴线之间的公垂线长度 |
| 连杆扭角 | αi-1 | 绕Xi-1轴,从Zi-1到Zi的转角 | 两个关节轴线之间的夹角 |
| 连杆偏距 | di | 沿Zi轴,从Xi-1到Xi的距离 | 相邻连杆沿关节轴线的偏移 |
| 关节角 | θi | 绕Zi轴,从Xi-1到Xi的转角 | 关节变量(旋转关节) |
你想想看,为什么是4个参数?因为三维空间里两个坐标系之间的变换,理论上需要6个自由度(3平移+3旋转)。但DH法利用了关节轴线的几何约束——相邻关节的Z轴要么平行要么相交——把自由度降到了4个。这就是它的精妙之处。
建立DH坐标系的步骤,我总结了一个口诀:
- 定Z轴:Zi轴沿关节i的轴线方向。
- 定原点:Zi和Zi-1的公垂线与Zi的交点,就是原点Oi。
- 定X轴:Xi轴沿公垂线方向,从Zi-1指向Zi。
- 定Y轴:右手定则,Yi = Zi × Xi。
有了这4个参数,相邻坐标系之间的变换矩阵就是:
T = Rot(X, α) * Trans(X, a) * Rot(Z, θ) * Trans(Z, d)
展开成4x4矩阵就是:
| cosθ -sinθ 0 a |
| sinθ*cosα cosθ*cosα -sinα -d*sinα |
| sinθ*sinα cosθ*sinα cosα d*cosα |
| 0 0 0 1 |
1.3 正运动学与逆运动学概念
这两个概念,说白了就是“已知关节求末端”和“已知末端求关节”。
正运动学:给定所有关节变量(θ1, θ2, ..., θn),求末端执行器在基坐标系下的位姿(位置+姿态)。
方法很简单:把每个关节的DH变换矩阵连乘起来。
T_0_n = T_0_1 * T_1_2 * ... * T_{n-1}_n
这个计算是确定性的,给一组关节角,末端位姿是唯一确定的。我在STM32上实现时,会用浮点运算,注意矩阵乘法要写对循环顺序,别把行和列搞混了。
逆运动学:给定末端位姿,求所有关节变量。
这就复杂多了。逆解通常有多个解(比如六轴机器人可能有8组解),甚至可能无解(末端位置超出工作空间)。求解方法主要有:
- 解析法:通过代数或几何推导出封闭解。速度快,适合实时控制。但只适用于满足Pieper准则的机器人(相邻三个关节轴交于一点)。
- 数值法:比如牛顿-拉夫森迭代、雅可比伪逆法。通用性强,但计算量大,且需要初值。
我个人在实际项目中,优先用解析法。如果机器人构型不满足Pieper准则,再用数值法。但数值法有个坑:迭代可能不收敛,或者收敛到错误的解。我一般会结合关节限位和避障需求,从多组解里选最优的。
1.4 本章知识体系
下面这张图,把本章的核心逻辑串起来了。你从坐标系建立开始,到DH参数建模,再到正逆解计算,每一步都是环环相扣的。
这张图你看懂了吗?从坐标系到DH参数,再到变换矩阵,最后汇聚到正逆解。后面的章节,我们会在这个基础上,引入参数误差,然后讲怎么用最小二乘法把这些误差标定出来。