机器人坐标系详解

机器人坐标系详解

笔者虽然从事自动化工作十几年,但是对于机器人坐标系的理解始终是一知半解,最近认为吃透了坐标系的事,和广大同仁分享一下。

工业机器人的坐标系的五个坐标系:1、世界坐标系;2、机器人足部坐标系;3、基坐标系;4、法兰坐标系;5、工具坐标系

这五个坐标系是工业机器人空间位置和姿态的数学基础。可以把它们想象成一套从宏观到微观的定位系统。

为了让你更直观地理解,可以把整个机器人工作站想象成一个房间,把机器人想象成人的手臂。以下是详细的解释:

1. 世界坐标系 —— 房间的地标

  • 定义:这是一个固定不变的绝对坐标系,通常定义在整个工作站(房间)的某个角落。
  • 用途:用来描述房间里所有东西的绝对位置。比如:机器人站在哪里、传送带放在哪里、工件放在哪里,都是相对于世界坐标系的。
  • 理解:它相当于你房间里的经纬度或者墙角。无论你怎么移动,这个点的位置是固定不变的。

2. 机器人足部坐标系 —— 机器人脚下的地

  • 定义:这是一个位于机器人安装底座正下方的坐标系。通常Z轴垂直向上,指向机器人的身体。
  • 用途:在安装机器人时,我们需要把机器人足部坐标系校准到世界坐标系中去。如果机器人被移动了位置,它相对于世界坐标系的数值变了,但足部相对于机器人本身是固定的。
  • 理解:相当于你站立的那块地。无论你在房间的哪个位置站着,你的脚底相对于你的身体永远是固定的。

3. 基坐标系 —— 机器人的肩膀

  • 定义:位于机器人第一轴(腰部)的安装基座上。它是机器人内部的零点。
  • 用途:这是机器人自身的原点。当我们说机器人“回零”,指的就是机器人的各个轴回到一个机械确定的姿态,而这个零点就是基坐标系的原点。所有后续关节的运动计算(运动学解算)都是基于这个坐标系开始的。
  • 理解:相当于你的肩膀根部。它是你手臂所有运动的起点。

4. 法兰坐标系 —— 机器人的手腕

  • 定义:位于机器人第六轴(最后一个轴)末端的法兰盘中心。
  • 用途:这是机器人手臂的末端。当我们说机器人移动到了某个点,通常指的是这个法兰盘中心点移动到了某个位置。它也是安装工具(如焊枪、抓手)的地方。
  • 理解:相当于你的手腕关节

5. 工具坐标系 —— 手里拿着的笔尖

简单来说:
当你告诉机器人“去喝咖啡”时:

在编程中,我们通常操作的是工具坐标系(控制干活的位置)和世界/基坐标系(控制移动的方向)。

  • 定义:定义在工具(焊枪、吸盘、抓手)的有效工作点上。比如焊丝的端点、吸盘的中心点、夹爪的中心点。
  • 用途:这才是我们真正关心的操作点。我们编程时,其实是告诉机器人:“让工具坐标系的这个点,移动到工件的那个点去。”如果不设定工具坐标系,机器人只会把法兰盘移到那个点,而焊丝可能还离工件很远。
  • 理解:相当于你手里握着的一支笔的笔尖
  • 房间里有台机器人:世界坐标系
  • 机器人底座固定在房间某处:足部坐标系(将机器人放在房间里)
  • 机器人从底座开始运动:基坐标系(机器人自己的起点)
  • 机器人运动到手腕:法兰坐标系(连接工具的接口)
  • 世界坐标系告诉你咖啡杯在桌子上。
  • 基坐标系告诉你的手臂要从肩膀开始动。
  • 法兰坐标系是你的手腕要伸过去。
  • 工具坐标系确保是你的嘴唇(而不是额头)碰到了杯子。
    • 手腕上装了焊枪:工具坐标系(真正干活的点)
    • 以一台库卡KR22 R1610工业机器人为例,想象一个场景,在一个3m*3m的工作范围,机器人安装在中间(机器人安装在一个厚度为50mm的铁板底座上,铁板底座大小是一个1200mm*1200mm的正方形),然后在距离底座边缘有一个桌子,高度是1000mm,桌子上有十个杯子,然后机器人去抓取这个杯子,这个过程中应该如何设定坐标系,如何实现这个过程?
    • 建立“桌面”基坐标:为了编程方便,我们不会在世界坐标系里直接计算每个杯子的位置。更聪明的做法是,在桌子表面建立一个用户基坐标系。你可以用库卡提供的“三点法”来定义它[citation8]:
      • 在桌面上选一个点作为原点 (X0, Y0, Z0)
      • 沿桌面边缘选一个点确定X轴正方向。
      • 在桌面上选一个点确定XY平面。
        这个新坐标,比如命名为 BASE_DATA[10]。这样,桌面上任何点的坐标都变得非常简单直观-7
    • 测量“抓手”工具坐标:在示教器上,切换到工具坐标测量程序。手动移动机器人,让你的抓手中心从四个不同方向去触碰工作空间里的一个固定尖点。每碰一次,记录一个点。机器人软件会自动计算出抓手中心相对于法兰盘中心的精确位置-1。保存结果为 TOOL_DATA[1]
    • 手动示教第一个杯子
      • 在示教器上,将运行模式切换到 T1(手动慢速) 模式-6
      • 在程序里,先用指令指定本次运动使用的坐标系:
      • $BASE = BASE_DATA[10]  ; 告诉机器人,接下来的目标点坐标是基于“桌子”的
        $TOOL = TOOL_DATA[1]   ; 告诉机器人,我们要用“抓手中心”去到达目标点
        • 手动操作机器人,让抓手中心精确地对准第一个杯子的中心,然后记录下这个点 PICK1。这个点的坐标将会是相对于 BASE_DATA[10] 的一个简单数值,比如 (X100, Y200, Z80)
      • 编写程序,实现循环抓取:利用库卡的 LIN (线性运动) 指令和抓爪工艺指令,编写主程序-2-4
        • 移动到安全点:首先移动到杯子上方的一个安全高度。
        • 直线抓取:使用 LIN PICK1 指令,让TCP垂直下降到杯子位置。
        • 闭合抓爪:使用 SET Gripper[1]=TRUE 指令,控制抓手闭合,抓住杯子-2
        • 抬起并放置:再次提升到安全点,然后移动到放置区域。
        • 循环:利用数学运算或位置寄存器(PR),在 PICK1 的X或Y坐标上增加一个固定的偏移量(即杯子的间距),就可以生成抓取下一个杯子的新目标点,实现整个循环。
      • 通过这套“坐标系思维”,你的程序逻辑会变得异常清晰:它不再是一串晦涩的关节角度,而是在“桌面”这个平面上,用“抓手中心”去到达一个个“点”的直观过程
      • 世界坐标系大多数大多数情况下位于机器人足部,是不是说默认情况世界坐标系和基坐标系是重合的???在默认情况下,它们确实重合在同一点上。这个“重合”也恰恰是容易混淆的地方。为了帮你彻底理清,我们需要拆开来看“世界坐标系”和“基坐标系”这两个概念:
      • “世界坐标系默认位于机器人足部”的真正含义
        你提到的这个说法,其实是在描述一个事实:在库卡机器人的默认配置中,世界坐标系的原点被设置在了机器人的足部-1-2-3。这意味着,在没有做任何额外设定的情况下,机器人的“绝对零点”就在它自己脚下。
      • 基坐标系的“默认状态”
        同时,库卡机器人出厂时,基坐标系(Base)的默认配置也指向同一个点——世界坐标系的原点-2-3-5。这就像一个新买的手机,它的“响铃”模式默认就是“铃声+震动”。
      • 世界坐标系:是一个固定不变的“绝对地标”。它一旦被定义(比如就在足部),就雷打不动,是整个工作站所有空间位置的最终参考-6-8
      • 基坐标系:是一个可以移动的“工作台面”。它的存在就是为了让你根据工件的位置,在世界坐标系里定义一个新的、更方便编程的参考系-3-9
      • 世界坐标系:整个世界的绝对原点(默认在机器人足部)。
      • 机器人足部坐标系(RobRoot):位于机器人足部的固定点,它在默认配置下与世界坐标系完全一致-1-10
      • 基坐标系(Base):一个用户自定义的坐标系,默认与世界坐标系重合,但随后由用户移动并设定到具体的工件(如桌子、夹具)上
      • 现在再看之前设计的抓杯子程序就清晰了:
        定义 $BASE = BASE_DATA[10],这个动作就是把原本与世界坐标系重合的“基坐标”原点,搬到了桌面的一角。从此以后,程序里写的坐标 (X100, Y200, Z80),就变成了相对于桌面这个新原点的位置,而不是相对于机器人脚下那个绝对的“世界原点”。理解了这个“默认重合,但本质不同”的关系,就真正掌握了机器人空间定位的底层逻辑
      • 假设第一个杯子 (ROW=1, COL=1) 在桌面基坐标系下的位置为 {X 150, Y 100, Z 80},那是不是说A,B,C就是根据工具坐标系计算出来的呢?????
      • 不,这里的 A、B、C 并不是根据工具坐标系计算出来的,而是目标点相对于当前激活的基坐标系(这里是桌面基坐标系)的姿态角度,它描述了工具坐标系(TCP)在该点应该如何指向
      • 它告诉你抓手中心在法兰前方多远(X、Y、Z偏移)。
      • 它还告诉机器人,当抓手安装好后,工具本身的坐标轴方向是怎样的(例如,抓手的Z轴可能指向法兰的哪个方向)。
      • 这个数据是固定的,一旦标定好,在程序中通常不会改变。
      • X、Y、Z 是要求工具坐标系的原点(即TCP)必须到达的空间位置(在桌面基坐标系下)。
      • A、B、C 是要求工具坐标系的姿态——即它的三个坐标轴在空间中如何定向(同样相对于桌面基坐标系)。
      • 换句话说,A、B、C 告诉机器人:当你到达 (150,100,80) 这一点时,你手里抓着的那个工具(其坐标系已由 TOOL_DATA[1] 定义)必须旋转到 A=0°, B=0°, C=0° 这个姿态
      • 工具坐标系(TOOL_DATA):定义了工具自身的形状(相当于告诉你“笔有多长,笔尖在哪”)。
      • 目标点的 A、B、C:定义了工具应该以什么姿势去接触工件(相当于告诉你要“笔尖朝下写”还是“笔尖朝前画”)。
      • 在抓杯子的例子里,假设我们想让抓手垂直向下抓取杯子(TCP的Z轴垂直向下),并且抓手开口方向与杯子的把手对齐。那么:
      • 我们可能通过示教手动调整机器人,使抓手恰好以这个姿态对准杯子。
      • 记录下来的那个姿态值(A、B、C)就是任务要求的姿态,它依赖于 TCP 的定义(因为 TCP 的方向直接决定了抓手抓取时的方向),但并不是由 TCP “计算”出来的,而是由实际工艺决定的。
      • 你手里抓着的那个工具(其坐标系已由 TOOL_DATA[1] 定义)必须旋转到 A=0°, B=0°, C=0° 这个姿态,是指工具坐标系的原点必须在(150,100,80) 这一点旋转到A=0°, B=0°, C=0°这个方向吧?????
      • 你手里抓着的那个工具(其坐标系已由 TOOL_DATA[1] 定义)必须旋转到 A=0°, B=0°, C=0° 这个姿态,是指工具坐标系的原点必须在(150,100,80) 这一点旋转到A=0°, B=0°, C=0°这个方向吧

一句话总结

X、Y、Z 决定“手伸到哪里”,A、B、C 决定“手怎么伸出去”。 两者都是相对于基坐标系的目标位姿,而工具坐标系(TCP)则像一把尺子,告诉机器人“手”究竟在法兰的哪个位置、哪个朝向。

为什么容易混淆?

因为工具坐标系和目标点的姿态都涉及“角度”,但角色完全不同:

2. 目标点的 A、B、C 是什么?

当你写一个目标点 PICK_POS = {X 150, Y 100, Z 80, A 0, B 0, C 0} 时:

1. 工具坐标系(TCP)本身是什么?

工具坐标系(例如 TOOL_DATA[1])定义了工具中心点相对于机器人法兰盘的位置和姿态。它就像工具的“身份证”:

💡 一个清晰的层次关系

为了帮你更好地区分,可以这样理解它们的层次关系:

所以,在默认的初始状态下,你通过示教器看到的“世界”和“基坐标”是重合的,指向的都是机器人足部那个点。这看起来就像“一个东西两个名字”。

🎯 它们的本质区别:绝对与相对

虽然初始重合,但它们的“职责”完全不同,这正是它们最核心的区别:

第二步:实现抓取过程——从编程到动作

设定好坐标系后,我们就可以编写程序,指挥机器人去抓杯子了。整个过程的核心思想是:让机器人关心的“操作点”(TCP),移动到我们关心的“目标点”(杯子的位置)。

在开始抓取之前,我们需要先在机器人的“大脑”里定义好各个参考系的位置。根据你描述的场景,我们可以这样设定:

坐标系在本场景中的具体定义设置方法与目的
世界坐标系整个3m*3m工作空间的绝对零点,例如定在房间的某个角落。作为全局参考,它唯一且固定。所有其他元素(机器人、桌子)的位置最终都是基于它来确定的。
机器人足部坐标系位于1200mm*1200mm铁板底座的上表面中心。在安装机器人时,需要通过精确测量,将这个点校准到世界坐标系中。它连接了“全局世界”和“机器人自身”-3-8
基坐标系机器人第一轴(腰部) 的安装面中心,理论上与足部坐标系重合。这是机器人内部计算所有运动的起点-5。在库卡机器人控制柜里,它通常被预定义为$BASE = BASE_DATA[1](或0)。
法兰坐标系机器人第六轴末端的法兰盘中心。这是机器人的机械接口,是安装抓手的“手腕”,它的位置由机器人根据基坐标系和运动学模型自动计算得出。
工具坐标系(TCP)抓手中心点,即抓取杯子时,杯子中心应该到达的位置。这是最关键的一步-1。我们需要用“XYZ 4点法”或“6D法”在库卡示教器上精确测量出抓手中心相对于法兰盘中心的偏移量(X, Y, Z和角度A, B, C)-1-3。测量好的数据会保存为一个工具数据,例如 TOOL_DATA[1]

第一步:坐标系设定——为机器人的世界“画地图”

总结与关系

这五个坐标系构成了一个转换链条:

Read more

【AI 编程工具进阶用法】如何在Cursor、Trae等工具中使用Skills

在Cursor、Trae等非 Claude Code项目使用 Skills,需要用到 OpenSkills 这个开源项目 Skills = 可复用、可调用、可组合的“能力模块”,它是有规则的。 你可以理解为:我让 AI 怎么干活的一整套方法论 + 操作步骤。 https://github.com/numman-ali/openskills openskills介绍: OpenSkills 是一个通用的技能(skill)加载器和管理工具,让你可以发现、安装、管理和在各种智能体或脚本中运行 Skills,而不受具体 AI 工具限制 类型:通用技能管理器/加载器(open-source CLI 工具) 作用:把 AI “Skill” 格式(Claude Code 的

【保姆级教程】手把手教你安装OpenClaw并接入飞书,让AI在聊天软件里帮你干活

【保姆级教程】手把手教你安装OpenClaw并接入飞书,让AI在聊天软件里帮你干活

这里先做一下简单的科普: OpenClaw 的名字经历了三次变更,第一次叫做 ClawdBot,后来因为名字跟 Claude 太过相似,被 CLaude 告侵权,遂改名 MoltBot 。 但是后来在改名过程中遭遇域名和社交账号被抢注,甚至出坑同名加密货币割韭菜的情况,导致名称传播受阻。 最终定名为:OpenClaw。 所以,名字经历先后顺序为:ClawdBot -> MoltBot -> OpenClaw 大家不要因为名字困惑了,怀疑是不是自己下错软件了,他们都是同一个。 一、什么是 OpenClaw? OpenClaw(曾用名 Clawdbot)是一款 2026 年爆火的开源个人 AI 助手,GitHub 星标已超过 10 万颗。与传统 AI 聊天机器人的根本区别在于: * 真正的执行能力:不仅能回答问题,

阶跃AI桌面伙伴小跃:你的AI桌面伙伴

阶跃AI桌面伙伴小跃:你的AI桌面伙伴

🌊 数字风云录 | 飞鹰四海带你洞悉AI浪潮 大家好,我是飞鹰四海。 进入 2026 年,AI Agent(智能体)的概念已经不再新鲜,但真正能接管电脑、解放双手的工具却依然稀缺。 之前 Claude 推出的 Claude Cowork 让无数人惊艳,但网络门槛和高昂的使用成本劝退了不少人。 今天,我要给大家安利一个国产王炸级的效率神器——阶跃星辰推出的 AI 桌面伙伴「小跃」。 它被不少内测用户称为“中国版 Claude Cowork”,核心定位就是:会做事、总在场、有记忆、能进化。 最重要的是,目前它正在内测阶段,我为大家搞到了几组珍贵的邀请码(放在文末了),这波羊毛必须薅! 🤖 什么是「小跃」? 简单来说,「小跃」不仅仅是一个聊天机器人,它是你的全能数字员工。它能直接操作你的电脑,支持 Windows 和

AI Agent 入门:什么是执行式智能体,一文看懂

AI Agent 入门:什么是执行式智能体,一文看懂

AI Agent 入门:什么是执行式智能体,一文看懂 📝 本章学习目标:本章是入门认知部分,帮助零基础读者建立对AI Agent的初步认知。通过本章学习,你将全面掌握"AI Agent 入门:什么是执行式智能体,一文看懂"这一核心主题。 一、引言:为什么这个话题如此重要 在AI Agent快速发展的今天,AI Agent 入门:什么是执行式智能体,一文看懂已经成为每个开发者和研究者必须了解的核心知识。无论你是技术背景还是非技术背景,理解这一概念都将帮助你更好地把握AI时代的机遇。 1.1 背景与意义 💡 核心认知:AI Agent正在从"对话工具"进化为"执行引擎",能够主动完成任务、调用工具、与外部世界交互。这一变革正在深刻改变我们的工作和生活方式。 从2023年AutoGPT的横空出世,到如今百花齐放的Agent生态,