运动学基础回顾:正运动学与逆运动学、DH参数模型、关节空间与笛卡尔空间
各位工程师朋友,咱们开始第二章。这一章是后面所有标定和调参工作的地基。说白了,如果你连机器人怎么动、怎么算位置都搞不清楚,那后面谈精度补偿、谈稳定性,都是空中楼阁。
我见过不少刚入行的同事,一上来就调PID、调摩擦补偿,结果机器人走个直线都歪歪扭扭。为什么?因为运动学模型就没建对。所以,咱们今天花点时间,把正逆运动学、DH参数、还有关节空间和笛卡尔空间这几个核心概念,彻底捋一遍。
2.1 正运动学:从关节角度到末端位姿
正运动学,说白了就是:我知道每个关节转了多少度,求机器人手在哪儿、朝哪个方向。
这其实是个很直观的问题。你想想看,一个六轴机器人,六个电机一转,末端执行器就跑到某个位置去了。正运动学就是建立从关节角度 → 末端位姿的映射关系。
数学上,我们通常用齐次变换矩阵来描述。每个关节的变换矩阵可以写成:
T_i = Rot(z, θ_i) * Trans(z, d_i) * Trans(x, a_i) * Rot(x, α_i)
其中:
- θ_i:关节角(绕z轴旋转)
- d_i:连杆偏距(沿z轴平移)
- a_i:连杆长度(沿x轴平移)
- α_i:连杆扭角(绕x轴旋转)
然后,把从基座到末端的所有变换矩阵乘起来:
T_0_n = T_1 * T_2 * ... * T_n
这个 T_0_n 就是末端在基坐标系下的位姿。嗯,这里要注意,矩阵乘法顺序不能乱,从基座往末端依次左乘。
2.2 逆运动学:从末端位姿到关节角度
逆运动学正好反过来:我知道机器人手要去哪个位置、什么姿态,求每个关节该转多少度。
这比正运动学难多了。为什么?因为逆运动学通常有多解,甚至无解。你想想看,一个六轴机器人,同一个末端位置,可能有8组不同的关节角度组合都能到达。这就是所谓的“多解问题”。
常见的逆运动学解法有两种:
- 解析法(封闭解):适用于满足Pieper准则的机器人(后三个关节轴线交于一点)。速度快,精度高,我强烈推荐。
- 数值法(迭代法):比如牛顿-拉夫森法。通用性强,但计算慢,而且可能不收敛。
避坑指南: 我曾经在一个协作机器人项目里,直接用数值法做逆解,结果在奇异点附近迭代发散,机器人直接“飞”了。后来我改成解析法+多解择优,才彻底解决这个问题。所以,能用解析法就别用数值法,除非你实在没办法。
逆运动学还有一个关键点:多解选择策略。比如,你希望机器人尽量少动关节,或者避开关节限位,或者避免碰撞。这些都需要在逆解之后加一个“择优”逻辑。
2.3 DH参数模型:运动学的“身份证”
DH参数,全称Denavit-Hartenberg参数。它是描述机器人连杆和关节几何关系的标准方法。每个关节用4个参数就能唯一确定:
| 参数 | 符号 | 物理含义 | 常见取值 |
|---|---|---|---|
| 关节角 | θ | 绕z轴的旋转角度 | 变量(旋转关节) |
| 连杆偏距 | d | 沿z轴的平移距离 | 常量(旋转关节) |
| 连杆长度 | a | 沿x轴的平移距离 | 常量 |
| 连杆扭角 | α | 绕x轴的旋转角度 | 常量 |
这里有个容易混淆的地方:标准DH和改进DH的区别。标准DH是把坐标系建在连杆末端,改进DH是建在连杆前端。我个人习惯用改进DH,因为它在树形结构和闭链机构中更直观。
下面这张图,是我自己总结的DH参数建模流程,你可以参考一下:
2.4 关节空间与笛卡尔空间:两种“语言”
这两个概念,我刚开始学的时候也绕了很久。简单来说:
- 关节空间:用每个关节的角度/位移来描述机器人的状态。比如
(q1, q2, q3, q4, q5, q6)。这是机器人“自己”的语言,控制器直接操作的就是关节。 - 笛卡尔空间:用末端在三维空间中的位置和姿态来描述。比如
(x, y, z, roll, pitch, yaw)。这是人类和编程者更容易理解的语言。
你想想看,你让机器人“把手伸到桌子右上角”,这是笛卡尔空间的指令。但机器人实际执行时,必须把这条指令转换成6个关节的转动角度,这就是逆运动学干的事。反过来,机器人反馈回来的关节角度,也要通过正运动学转成笛卡尔坐标,你才知道它到底到没到位置。
实际应用中的选择:
- 轨迹规划:通常在笛卡尔空间做直线、圆弧插补,更直观。
- 速度控制:在关节空间做速度规划更简单,因为每个关节独立。
- 力控/阻抗控制:通常在笛卡尔空间做,因为力和位置的关系更直接。
这里有个常见的坑:笛卡尔空间的直线运动,在关节空间里可能不是线性的。什么意思?就是末端走直线,每个关节的速度和加速度变化可能非常剧烈,尤其是在奇异点附近。所以,做笛卡尔空间轨迹规划时,一定要检查关节空间的可行性。
2.5 小结:运动学是标定的“尺子”
好了,这一章的内容就这些。正运动学、逆运动学、DH参数、关节空间和笛卡尔空间,这几个概念是贯穿整个课程的。后面讲标定,本质上就是修正DH参数里的误差;讲稳定性调参,本质上就是在关节空间和笛卡尔空间之间做权衡。