graph TD
%% 定义样式
classDef world fill:#f3f4f6,stroke:#374151,stroke-width:2px,color:#111827;
classDef robot fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0c4a6e;
classDef task fill:#ffedd5,stroke:#ea580c,stroke-width:2px,color:#7c2d12;
W["🌍 大地坐标系 {W}<br/>World Frame"]:::world
subgraph 机器人运动链 [机器人本体变换 TF Tree]
direction TB
B["🤖 基坐标系 {B}<br/>Base Frame"]:::robot
J["⚙️ 关节坐标系 {J}<br/>Joints (θ1...θn)"]:::robot
E["🔗 法兰坐标系 {E}<br/>End-Effector"]:::robot
T["🪛 工具坐标系 {T}<br/>TCP (Tool Center Point)"]:::robot
B -- "正运动学 (FK)" --> J
J -- "连杆运动" --> E
E -- "工具偏置 (Offset)" --> T
end
subgraph 外部工作环境 [任务场景变换 TF Tree]
direction TB
U["🗜️ 用户坐标系<br/>User Frame"]:::task
O["📦 工件坐标系 {O}<br/>Work Object"]:::task
P["🎯 目标路径点<br/>Target Point"]:::task
U -- "零件安放偏移" --> O
O -- "局部特征坐标" --> P
end
W -- "底座安装位置" --> B
W -- "工作台/导轨位置" --> U
T -. "运动控制终极目标:<br/>TCP 精准对齐目标点" .-> P
大地坐标系/世界坐标系
大地坐标系是一个固定不动的坐标系。在机器人运动过程中,机器人本体的坐标系会随之移动和转动,但大地坐标系始终保持静止。
- 符号表示: 通常记作 ${W}$ 或 ${O_w}$。
- 坐标原点: 一般选在工作站的基座中心、工厂地面的某一个固定角点,或者地图上的起始位置。
- 坐标轴方向:
- 通常遵循右手定则(Right-hand Rule)。
- 在室外移动机器人(如无人机、无人车)中,常采用 东北天(ENU) 或 北东地(NED) 坐标系。
基坐标系
基坐标系是机器人运动描述的起点。对于一台工业机器人来说,无论它的机械臂如何旋转、伸展,基坐标系的原点和轴向都是相对于机器人底座保持不动的。
- 符号表示: 通常记作 ${B}$ 或 ${O_0}$。
- 原点位置: 绝大多数情况下,原点位于机器人第一根轴(J1轴)与安装底面的交点中心。
- 轴向:
- Z轴: 通常重合于机器人第一关节的旋转轴线,指向正上方。
- X轴: 通常指向机器人正前方(参考出厂预设)。
- Y轴: 根据右手定则确定。
工具坐标系
工具坐标系是安装在机器人末端法兰盘上的坐标系。它随着机器人的运动而实时运动,主要用于描述工具中心点(Tool Center Point, TCP)的位置和姿态。
- 符号表示: 通常记作 ${T}$ 或 ${TCP}$。
- 坐标原点(TCP): 通常位于工具的执行点(如焊枪的尖端、吸盘的中心、夹爪的指尖中心)。
- 轴向定义:
- Z轴: 通常定义为工具的工作方向(如钻头的轴线、激光射出的方向)。
- X/Y轴: 根据右手定则及工具的对称性来定义,用于描述工具的旋转角度(姿态)。
如果没有工具坐标系,机器人只知道自己的“手腕”(法兰盘中心)在哪,而不知道它手里拿的“工具尖端”在哪。
A. 轨迹控制
- 当你要求机器人绕着一个圆孔进行打磨时,你需要控制的是打磨头的尖端走圆周运动,而不是手腕中心走圆周运动。通过设定 TCP,控制器可以自动计算关节运动,使工具尖端保持在预定轨迹上。
B. 姿态调整(重定位运动)
这是工具坐标系最神奇的地方。定义好 TCP 后,你可以让机器人绕着工具尖端进行“旋转”。
例子: 焊枪尖端顶在焊缝上不动,机械臂在后方摆动以寻找最佳焊接角度。这时,TCP 点在空间中是静止的,这被称为重定位运动(Reorientation)。
C. 更换工具的灵活性
- 如果你从一把长 10cm 的焊枪换成一把长 20cm 的焊枪,你不需要重新编写所有运动程序。你只需要更新工具坐标系的偏移量(Offset),原有的程序逻辑依然适用。
在实际工程中,工具的几何中心往往很难通过肉眼对准。最常用的标定方法是 “四点法”或“六点法”:
- 找一个基准点: 在工作台上放一根针或者定一个尖锐的固定点。
- 四点标定: 操控机器人,用工具的尖端从四个不同的姿态(角度)去触碰这同一个固定点。
- 算法求解: 机器人控制器会根据这四个点在基坐标系下的坐标,利用几何推导计算出工具尖端相对于法兰盘中心的 X、Y、Z 偏移量。
工具坐标系 ${T}$ 是相对于机器人末端法兰盘坐标系 ${E}$(End-effector)定义的。
设 $^E T_T$ 为工具相对于法兰盘的变换矩阵(包含平移和旋转),那么工具在大地坐标系 ${W}$ 下的位姿为:
$$ ^W T_T = ^W T_B \cdot ^B T_E \cdot ^E T_T $$
- $^W T_B$: 底座相对于大地的位置。
- $^B T_E$: 机械臂正运动学算出来的手腕位置。
- $^E T_T$: 你标定好的工具偏移量。
工件坐标系-用户坐标系
你可以把用户坐标系看作是一个“大容器”,而工件坐标系是里面的“具体内容”。
- 用户坐标系 (User Frame / User CS): 通常定义的是工作台、导轨或大型设备相对于机器人基座的位置。
- 工件坐标系 (Work Object / Object Frame): 定义的是具体零件相对于用户坐标系的位置。
数学公式表达:
$$基座 \rightarrow 用户坐标系 \rightarrow 工件坐标系 \rightarrow 目标路径点$$
设想你在一个大的自动化流水线上:
- 用户坐标系: 你定义了整个“传送带”的位置。如果传送带整体挪动了,你只需要修改这个 User Frame。
- 工件坐标系: 传送带上跑着不同的零件(比如 A 型手机壳和 B 型手机壳)。虽然传送带没动,但零件放的角度变了,你只需要修改对应的 Object Frame。
这种“嵌套”结构让你在处理复杂场景(比如移动机器人底座载着一个机械臂去操作不同桌子上的物体)时,逻辑非常清晰。
工件坐标系是建立在被加工工件(或工作台)上的坐标系。它定义了工件相对于机器人基座或大地坐标系的位置和姿态。
- 符号表示: 通常记作 ${O}$ 或 ${Wobj}$。
- 原点位置: 通常选在工件的一个特征角点(如零件的左下角)。
- 轴向定义: 通常 X 轴和 Y 轴与工件的边缘平行。
这是工业机器人编程中最实用的功能之一,其核心优势在于“逻辑与物理的分离”。
A. 简化编程(点位直观)
假设你要在一个倾斜 30° 的桌面上画一个正方形。
没有工件坐标系: 你需要计算每个顶点的三维空间坐标(X, Y, Z 全都在变)。
有了工件坐标系: 你只需把坐标系建立在桌面上。在程序里,你只需写
(0,0),(100,0),(100,100),(0,100)。至于桌面是怎么斜的,交给控制器去补偿。
B. 整体偏移(一键修模)
如果工件在工作台上的位置挪动了 5 厘米,或者这批零件的安放角度偏了 2°:
你不需要更改程序里的成百上千个路径点。
你只需重新标定工件坐标系(更新它的原点位置和旋转角度),所有的运动轨迹会自动跟着工件“跑”到新位置。
C. 离线编程(Digital Twin)
- 你在电脑上(如 RobotStudio 或 Gazebo)模拟好了一套抓取动作,导出的坐标是相对于 CAD 模型原点的。当程序导入实机时,只要在物理工件上定义好同名的工件坐标系,仿真动作就能完美复现。
工件坐标系通常由两个部分嵌套而成:
- 用户坐标系 (User Frame): 相对于基座(比如定义工作台的位置)。
- 对象坐标系 (Object Frame): 相对于用户坐标系(比如定义工作台上具体零件的位置)。
数学变换公式:
$$ ^B T_T = ^B T_W \cdot ^W T_{O} \cdot ^{O} P $$
其中 $^B T_W$ 是基座到工件坐标系的变换。
关节坐标系
可视化:https://gemini.google.com/share/f4dcada8c12d
关节坐标系是用来描述机器人每一个独立关节(电机)运动状态的参考系。
- 变量表示: 通常用向量 $\theta = [\theta_1, \theta_2, \theta_3, \dots, \theta_n]$ 表示。
- 坐标原点: 每个关节的零位(Zero Position)。这通常是机器人出厂标定时定义的机械原点。
- 单位:
- 旋转关节(Revolute): 度(°)或弧度(rad)。
- 移动关节(Prismatic): 毫米(mm)或米(m)。
关节坐标系与空间坐标系的互换是所有算法的基础:
正运动学(Forward Kinematics, FK): 已知所有关节的角度 $[\theta_1 \dots \theta_n]$ $\rightarrow$ 计算出末端 TCP 在基坐标系下的位置 $[x, y, z]$。
这就像:我知道我肩膀、手肘、手腕转了多少度,算出我指尖在哪个坐标上。
逆运动学(Inverse Kinematics, IK): 已知末端 TCP 要去的坐标 $[x, y, z]$ $\rightarrow$ 反求出各个电机需要转多少度 $[\theta_1 \dots \theta_n]$。
这是 VLA 或运动规划中最难的部分,往往涉及复杂的三角函数或数值迭代。