3. 坐标系与运动学基础
说实话,坐标系这个东西,刚入行时我觉得挺简单的。不就是几个箭头嘛?直到我第一次调试龙门机器人,发现抓取位置总是偏那么几毫米……嗯,那才叫一个头大。后来我才明白,坐标系不是死的,它是你跟机器人沟通的语言。
今天咱们就把坐标系和运动学这块彻底捋清楚。我尽量用大白话讲,但该有的公式和代码一个都不会少。
3.1 世界坐标系
世界坐标系,说白了就是整个工作空间的“绝对参考系”。它通常固定在机器人底座或者地面上,所有其他坐标系都基于它来定义。
我个人习惯把世界坐标系的原点设在龙门机器人的几何中心,X轴指向长边方向,Y轴指向短边方向,Z轴垂直向上。这样后续计算会方便很多。
举个例子,我在一个3米×2米的龙门机器人项目中,世界坐标系原点就设在龙门架左下角的地面上。所有工位的位置都是相对于这个原点来测量的。
3.2 工具坐标系
工具坐标系,就是定义在机器人末端执行器上的坐标系。比如你装了一个气动夹爪,或者一个焊枪,工具坐标系的原点就在工具的中心点(TCP,Tool Center Point)。
为什么要单独搞个工具坐标系?你想想看,你换了一个夹爪,难道要把所有点位重新标一遍吗?当然不用。你只需要重新标定工具坐标系,机器人会自动补偿。
3.3 工件坐标系
工件坐标系,是定义在工件上的。比如你要在一个电路板上贴片,或者在一个汽车零件上钻孔,工件坐标系就帮你把程序里的点位跟实际工件对齐。
这里有个坑,我踩过。有一次客户换了一批工件,尺寸有微小偏差,结果所有点位都偏了。后来我学乖了,每次换工件前先做一次“三点标定”——在工件上选三个特征点,告诉机器人新的工件坐标系在哪。
3.4 龙门机器人正逆运动学简介
正运动学,就是已知各个关节的角度(或者位置),求末端执行器的位姿。逆运动学则反过来,已知末端位姿,求各个关节的角度。
龙门机器人的运动学其实比六轴机器人简单得多。为什么?因为龙门机器人的三个轴(X、Y、Z)是正交的,互相独立。说白了,正运动学就是三个坐标直接相加:
// 正运动学:已知关节位置,求末端位置
Px = Jx + tool_offset_x
Py = Jy + tool_offset_y
Pz = Jz + tool_offset_z
// 逆运动学:已知末端位置,求关节位置
Jx = Px - tool_offset_x
Jy = Py - tool_offset_y
Jz = Pz - tool_offset_z
你看,就这么简单。但实际项目中,往往还要考虑旋转轴(比如A轴、C轴),那就稍微复杂一点了。我记得有一次调试一个带旋转头的龙门机器人,逆运动学里多了个三角函数,我愣是调了一下午才把姿态算对。
3.5 运动范围与奇点
运动范围,就是机器人各个轴能走到的极限位置。这个很好理解,X轴行程3米,Y轴行程2米,Z轴行程1米,那工作空间就是一个3×2×1的长方体。
但奇点就有点意思了。奇点是指机器人在某个位姿下,自由度丢失,或者运动学方程无解。对于龙门机器人,奇点通常出现在旋转轴上。
举个例子,如果你的龙门机器人末端有一个旋转轴(比如A轴),当A轴转到某个角度时,你发现无论怎么调,末端姿态就是不对。嗯,那就是奇点。
怎么规避奇点?我一般用两种方法:
- 路径规划时避开:在离线编程阶段,检查路径上是否有奇点,如果有,重新规划路径。
- 运行时检测:在运动控制中实时计算雅可比矩阵的行列式,如果接近0,说明接近奇点,立即减速或调整。
3.6 知识体系总览
下面这张图,是我自己画的坐标系与运动学的关系图。你看一眼,就能明白它们之间是怎么配合的。
这张图里,世界坐标系是根,工具坐标系和工件坐标系都基于它。正逆运动学负责在关节空间和笛卡尔空间之间来回切换。而奇点,就是运动学里的“地雷”,你得时刻提防。
好了,坐标系与运动学这块就讲到这里。记住一句话:坐标系定天下,运动学通乾坤,奇点要避开。下次咱们聊点更实战的内容。