第二章:机器人运动学基础——坐标变换、DH参数、正逆运动学求解原理
各位同学,大家好。我是你们这门课的老朋友。今天咱们来啃一块硬骨头——机器人运动学基础。
说实话,很多刚入行的工程师觉得这玩意儿太理论,离实际焊接太远。但我告诉你,这恰恰是离线编程的灵魂。你想想看,没有坐标变换,你连焊枪往哪儿摆都不知道;不懂DH参数,你连机器人的胳膊都描述不清楚。我在现场调试时见过太多因为运动学没搞明白,导致机器人撞枪、焊偏的案例了。
好,咱们不废话,直接开整。
2.1 坐标变换:让机器人的“眼睛”和“手”对齐
焊接机器人本质上是个空间定位问题。你要让焊枪末端走到焊缝上的某个点,首先得知道这个点在哪。
这里涉及三个关键坐标系:
- 世界坐标系:固定在车间地面的绝对坐标系。所有东西都拿它当基准。
- 机器人基坐标系:固定在机器人底座上的坐标系。机器人自己认这个。
- 工具坐标系:固定在焊枪末端的坐标系。焊丝伸出多长、角度怎么摆,全看它。
我个人的习惯是,拿到一个焊接工装,第一件事就是把世界坐标系和机器人基坐标系的关系标定清楚。这一步做不好,后面全是白搭。
坐标变换说白了就是三个旋转加一个平移。用数学语言表达就是:
P_base = R * P_tool + T
其中R是旋转矩阵,T是平移向量。你可能会问,为什么要用矩阵?因为矩阵可以连续变换,方便计算机算。
核心要点: 坐标变换的本质是“换个角度看问题”。同一个空间点,在不同坐标系下有不同的坐标值。我们做的就是找到它们之间的映射关系。
2.2 DH参数:描述机器人关节的“身份证”
DH参数是Denavit和Hartenberg这两位大佬搞出来的。它用四个参数就能完整描述一个关节到下一个关节的变换关系。
这四个参数分别是:
| 参数 | 符号 | 含义 |
|---|---|---|
| 连杆长度 | a | 相邻两关节轴线之间的公垂线长度 |
| 连杆扭角 | α | 相邻两关节轴线之间的夹角 |
| 关节距离 | d | 沿关节轴线的偏移量 |
| 关节转角 | θ | 绕关节轴线的旋转角度 |
我记得第一次接触DH参数时,觉得这东西太抽象了。后来在项目里给一台六轴机器人建运动学模型,才真正体会到它的妙处——你只要把每个关节的四个参数填进去,整个机器人的运动关系就清清楚楚了。
这里有个避坑指南:我曾经在标定DH参数时,把a和d搞反了,结果仿真里机器人动作完全变形。后来花了整整一天才排查出来。所以大家一定要记住:a是垂直于关节轴线的长度,d是沿着关节轴线的长度。
小技巧: 实际项目中,机器人厂家一般会提供DH参数表。但如果你用的是二手设备或者自己改装的机器人,那就得自己动手标定了。我建议用三点法标定,精度能到0.1mm以内。
2.3 正运动学:已知关节角度,求末端位姿
正运动学很简单:你告诉机器人每个关节转了多少度,它告诉你焊枪末端在哪儿、朝哪个方向。
数学上就是一连串的矩阵乘法:
T_0n = T_01 * T_12 * T_23 * ... * T_(n-1)n
其中每个T都是4x4的齐次变换矩阵,由DH参数计算得到。
你可能会觉得这有什么难的?不就是乘乘矩阵吗?但实际编程时,矩阵乘法的顺序千万不能错。我见过有人把左乘和右乘搞混了,结果机器人末端位置差了十万八千里。
正运动学在焊接离线编程中的应用场景:
- 验证你设定的关节角度是否合理
- 计算焊枪姿态是否满足工艺要求
- 检测机器人是否处于奇异位形
2.4 逆运动学:已知末端位姿,求关节角度
这才是真正的难点。正运动学是“给因求果”,逆运动学是“给果求因”。
为什么难?因为逆运动学通常有多解。同一个焊枪位置和姿态,可能有多种关节角度组合能实现。比如六轴机器人,理论上最多有8组解。
我个人的经验是:不要试图手算逆运动学。对于六轴机器人,解析解极其复杂,而且容易出错。现在主流做法是用数值解法,比如牛顿-拉夫森法或者雅可比矩阵迭代法。
但理解原理还是有必要的。简单说,逆运动学求解就是解一组非线性方程组。对于常见的六轴机器人,可以通过“腕部分离法”把问题拆解:
- 先求前三个关节(决定位置)
- 再求后三个关节(决定姿态)
注意: 逆运动学求解时,一定要考虑关节限位。我曾经在项目里遇到一个情况:算法算出了一组解,但其中一个关节角度超过了机械限位,结果仿真时看着没问题,实际运行时直接撞了限位开关。所以,一定要在求解后加关节限位检查。
2.5 知识体系总览
为了让大家更直观地理解本章的知识结构,我画了一张图:
从这张图你可以看到,坐标变换和DH参数是基础,正逆运动学是核心算法,最终都服务于焊接离线编程和碰撞规避这个实际应用。
2.6 实战中的几点建议
最后,我结合自己的项目经验,给大家几点实在的建议:
- 坐标系标定一定要做精度验证。我习惯用四点法验证,误差超过0.5mm就重新标定。
- DH参数不要照搬理论值。实际机器人由于制造和装配误差,DH参数和理论值会有偏差。有条件的话,用激光跟踪仪实测一下。
- 逆运动学求解一定要考虑碰撞。多组解里,选那个不会撞到工件和夹具的。这个我们在后面碰撞规避章节会详细讲。
- 仿真和实机要反复对比。我每次做完离线编程,都会先在仿真里跑一遍,再到实机上慢速验证一遍。别嫌麻烦,这能省下大把的现场调试时间。
好了,运动学基础就讲到这里。这些内容虽然偏理论,但它是后面所有高级功能的地基。你把它吃透了,后面学碰撞检测、路径规划就会轻松很多。
公众号:蓝海资料掘金营,微信deep3321