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 本章知识结构图

下面这张图,把本章的核心知识点串起来了。你一看就懂。

机器人基础:知识体系 机器人基础 坐标系 运动学 通信协议 世界坐标系 基座坐标系 工具坐标系 用户坐标系 正运动学:关节角 → 末端位姿 逆运动学:末端位姿 → 关节角 TCP/IP:通用、灵活 Modbus:稳定、简单 核心逻辑:坐标系是“尺子”,运动学是“算法”,通信是“桥梁” 三者结合,才能让机器人“看见”并“抓取”目标

好了,这一章的内容就这些。坐标系、运动学、通信协议,是机器人手眼标定的“地基”。地基打不牢,后面盖楼就歪了。

你把这些概念吃透了,后面学手眼标定算法,就会轻松很多。