第三章:机器人运动学基础
各位同学,今天我们来聊聊机器人运动学。说实话,这可能是整个力控打磨课程里最「数学」的一章。但别怕,我会用我这些年踩过的坑,帮你把这些概念串起来。
3.1 机器人坐标系:世界、基座、工具、工件
机器人有四个核心坐标系。我刚开始接触时,总觉得它们很抽象。后来在调试一个打磨工作站时,因为坐标系搞混,机器人直接撞上了工件——嗯,从那以后我再也不敢轻视坐标系了。
| 坐标系 | 作用 | 典型场景 |
|---|---|---|
| 世界坐标系 | 固定于地面的全局参考 | 多机器人协同、外部轴联动 |
| 基座坐标系 | 机器人底座原点 | 机器人自身运动规划 |
| 工具坐标系 | 安装在法兰上的工具末端 | 力控打磨时,力传感器数据转换 |
| 工件坐标系 | 固定在工件上的局部参考 | 离线编程、工件位置补偿 |
核心原则:所有运动最终都要统一到基座坐标系下执行。工具坐标系和工件坐标系只是中间桥梁。
3.2 正运动学:从关节角到末端位姿
正运动学,说白了就是「已知六个关节的角度,求出手腕在哪儿」。这就像你看着机器人的关节角度,就能算出它末端在空间中的位置和姿态。
我记得在调试一个去毛刺程序时,发现机器人末端位置总差2mm。查了半天,原来是正运动学模型里的连杆参数写错了。所以,DH参数一定要反复核对。
// 正运动学计算示例(伪代码)
function forwardKinematics(jointAngles) {
// 1. 根据DH参数构建各连杆变换矩阵
T1 = dhTransform(alpha1, a1, d1, theta1)
T2 = dhTransform(alpha2, a2, d2, theta2)
// ... 直到 T6
// 2. 连乘得到末端位姿
T_end = T1 * T2 * T3 * T4 * T5 * T6
// 3. 提取位置和姿态
position = [T_end[0][3], T_end[1][3], T_end[2][3]]
orientation = extractRotationMatrix(T_end)
return {position, orientation}
}
我的习惯:每次换新机器人型号,我都会先用正运动学算几个已知点,验证DH参数是否正确。这能省下后面调试的大量时间。
3.3 逆运动学:从末端位姿到关节角
逆运动学正好反过来——你告诉机器人「我要去这个位置」,它自己算出每个关节该转多少度。这比正运动学复杂得多,因为解不唯一。
为什么会这样?你想想看,一个六轴机器人到达同一个点,可能有8种不同的关节姿态。比如肘部可以朝上也可以朝下,手腕可以翻转也可以不翻转。
我在做打磨路径规划时,就遇到过这个问题。同一个打磨点,机器人选了肘部朝下的姿态,结果和工件干涉了。后来我强制指定了「肘部朝上」的配置,问题才解决。
避坑指南:我曾经因为逆运动学求解失败,导致机器人突然急停。原因是目标点超出了工作空间。所以,一定要在运动前做可达性检查。
3.4 工具坐标系标定
工具坐标系标定,就是告诉机器人「你的工具末端到底在哪儿」。力控打磨对工具坐标系精度要求很高,因为力传感器数据要转换到工具末端。
常用的标定方法是「四点法」或「六点法」。我个人习惯用六点法,精度更高。
// 六点法标定步骤
1. 固定一个尖点(如锥形工具)
2. 移动机器人,使工具尖端接触固定点(姿态1)
3. 记录当前位姿
4. 改变工具姿态,再次接触同一点(姿态2)
5. 重复4次,共6个不同姿态
6. 通过最小二乘法求解工具中心点位置
关键点:标定精度直接影响力控效果。如果工具坐标系偏差1mm,力控方向就会偏,打磨效果会大打折扣。
3.5 工件坐标系标定
工件坐标系标定,就是告诉机器人「工件放在哪儿」。这在实际生产中特别重要,因为工件位置总会有偏差。
我记得有一次,客户说打磨效果不稳定。我过去一看,原来是每次装夹工件位置都不一样,但程序里用的还是第一次标定的工件坐标系。后来我加了一个自动寻位功能,每次装夹后自动重新标定,问题就解决了。
| 标定方法 | 精度 | 适用场景 |
|---|---|---|
| 三点法 | 中等 | 快速标定、粗定位 |
| 四点法 | 较高 | 一般打磨应用 |
| 六点法 | 高 | 精密力控打磨 |
我的建议:如果工件有明确的特征点(如孔、边角),优先用这些特征点做标定。如果没有,可以在工件上贴标定块。
3.6 知识体系总览
下面这张图,是我自己整理的机器人运动学知识框架。你可以把它当作本章的「地图」。
这张图把本章的核心内容串起来了。你从「坐标系」出发,经过「正/逆运动学」计算,最后通过「标定」来补偿实际偏差。这就是机器人运动学的完整闭环。
总结一下:运动学是机器人控制的基础。坐标系是「语言」,正逆运动学是「翻译器」,标定是「校准仪」。三者缺一不可。