2、机器人基础:坐标系、运动学与通信协议
各位同学,欢迎来到第二章。
做机器人手眼标定,你得先懂机器人本身。这就像你要给一个人配眼镜,总得先知道他的头怎么转、脖子怎么扭吧?
这一章,我们就来聊聊机器人的“骨架”和“神经”。我会把坐标系、正逆运动学、还有那些通信协议,掰开揉碎了讲清楚。
2.1 机器人坐标系:世界、基座、工具与用户
坐标系是机器人定位的“尺子”。没有它,机器人就是个瞎子。
我刚开始接触机器人时,最头疼的就是坐标系变换。一个点,在不同坐标系下,坐标值完全不同。你得搞清楚,你手里的数据,到底是在哪个“尺子”下量的。
核心概念:机器人坐标系本质上是“参考系”。你描述一个物体的位置和姿态,必须指明是相对于哪个坐标系。
常见的坐标系有四种,我列个表,你一看就明白:
| 坐标系名称 | 定义 | 典型用途 | 我的经验 |
|---|---|---|---|
| 世界坐标系 | 固定在地面上的参考系 | 多机器人协同、全局定位 | 做AGV对接时,世界坐标系原点通常设在产线地标上 |
| 基座坐标系 | 固定在机器人安装底座上 | 机器人自身运动学计算 | 所有关节角度最终都换算到基座坐标系 |
| 工具坐标系 | 固定在机器人末端执行器上 | 控制焊枪、夹爪、相机等工具 | TCP标定不准,你示教再精确也没用 |
| 用户坐标系 | 用户自定义的工作台或工件坐标系 | 简化编程,方便平移旋转 | 在流水线上,用户坐标系原点设在工件托盘角上 |
说白了,坐标系就是一层套一层的“俄罗斯套娃”。
举个例子:你让机器人去抓一个螺丝。螺丝的位置是在用户坐标系下测量的。但机器人电机只认基座坐标系下的角度。这中间,就需要通过工具坐标系和用户坐标系,一层层变换过去。
避坑指南:我曾经在调试时,直接把相机给的坐标当成基座坐标用了。结果机器人抓了个空。后来才发现,相机坐标是在工具坐标系下测量的。记住:数据在哪,坐标系就在哪。
2.2 正运动学与逆运动学
这两个概念,是机器人控制的“灵魂”。
你想想看,机器人怎么知道自己手在哪?又怎么让手去到你想要的位置?
这就是正逆运动学要解决的问题。
2.2.1 正运动学:已知关节角度,求末端位姿
正运动学很简单。你给机器人每个关节一个角度,它就能算出末端执行器在空间中的位置和姿态。
这就像你抬起胳膊,你知道肩膀和肘弯的角度,自然就知道手在哪。
数学上,正运动学就是一连串的矩阵乘法。每个关节对应一个变换矩阵,乘起来就是末端位姿。
// 伪代码示例:正运动学计算
// 已知:关节角度 q1, q2, q3, q4, q5, q6
// 求:末端位姿矩阵 T
T = A1(q1) * A2(q2) * A3(q3) * A4(q4) * A5(q5) * A6(q6);
// 其中 A1~A6 是每个关节的齐次变换矩阵
正运动学是唯一的。给定一组关节角,末端位姿是确定的。这没什么好说的。
2.2.2 逆运动学:已知末端位姿,求关节角度
逆运动学就复杂多了。你告诉机器人:“手放到这里”,它得算出每个关节该转多少度。
这就像你朋友让你把手放到他肩膀上。你大脑得快速计算:肩膀在哪?我胳膊要抬多高?肘弯要弯多少?
逆运动学有几个特点,你得记住:
- 多解性:同一个末端位姿,可能有多种关节角度组合。比如你伸手够一个东西,可以肘朝下,也可以肘朝外。
- 无解性:有些位姿,机器人就是够不到。这就是工作空间限制。
- 奇异性:在某些特殊位姿下,机器人会失去某个方向的自由度。比如肘关节完全伸直时,你没法再让手沿着胳膊方向移动。
注意:逆运动学求解时,一定要考虑多解和奇异点。我见过有人直接取第一个解,结果机器人撞了旁边的夹具。因为那个解虽然数学上正确,但物理上会碰撞。
实际项目中,我们通常用数值法(比如牛顿-拉夫森法)来求解逆运动学。解析法虽然快,但通用性差。
2.3 常用机器人通信协议
机器人不是孤岛。它得和PLC、视觉系统、上位机通信。
通信协议,就是它们之间的“语言”。
我做过十几个项目,最常用的就两种:TCP/IP 和 Modbus。
2.3.1 TCP/IP:通用、灵活、高速
TCP/IP 是互联网的基石。在工业现场,它也是最通用的通信方式。
机器人通常作为服务器,视觉系统作为客户端。视觉系统算出一个抓取位置,通过Socket发送给机器人。
数据格式嘛,我习惯用JSON或自定义的字节流。JSON可读性好,但解析慢一点。字节流效率高,但调试麻烦。
// 示例:视觉系统发送抓取坐标(JSON格式)
{
"command": "pick",
"x": 123.45,
"y": 67.89,
"z": 45.67,
"rx": 0.0,
"ry": 3.14,
"rz": 1.57
}
我的习惯:用TCP/IP时,一定要加心跳包和超时重连机制。工业现场网络不稳定,机器人等不到数据就停了,产线就断了。
2.3.2 Modbus:稳定、简单、抗干扰
Modbus 是老牌工业协议。它走RS485或TCP。
我为什么喜欢Modbus?因为它简单。读写寄存器,就两个指令:读保持寄存器(03),写单个寄存器(06)。
在机器人手眼标定中,Modbus常用于和PLC交换状态信号。比如:
- PLC告诉机器人:“工件到位了,可以抓了。”
- 机器人告诉PLC:“抓完了,可以放行了。”
这种开关量信号,用Modbus的线圈或寄存器,一个bit就搞定。
| 特性 | TCP/IP | Modbus TCP |
|---|---|---|
| 传输层 | TCP | TCP |
| 数据模型 | 自由定义 | 寄存器/线圈 |
| 实时性 | 中等 | 高 |
| 开发难度 | 中等 | 低 |
| 典型场景 | 视觉引导、数据采集 | PLC联动、状态同步 |
嗯,这里要注意:Modbus TCP 和普通 TCP/IP 走的是同一个端口(502)。别搞混了。
2.4 本章知识结构图
下面这张图,把本章的核心知识点串起来了。你一看就懂。
好了,这一章的内容就这些。坐标系、运动学、通信协议,是机器人手眼标定的“地基”。地基打不牢,后面盖楼就歪了。
你把这些概念吃透了,后面学手眼标定算法,就会轻松很多。