机器人坐标系详解

机器人坐标系详解

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

工业机器人的坐标系的五个坐标系: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算法和机电一体化的综合测试领域。下面我从工业机器人、服务机器人、移动机器人等不同类别,全面解析测试方法与工具链: 一、机器人测试方法体系 1. 分层测试框架 机器人测试硬件层软件层算法层系统层机械结构测试传感器校准执行器精度嵌入式软件控制逻辑通信协议感知算法决策规划运动控制功能安全人机交互环境适应性 2. 核心测试方法 方法类型应用场景技术特点仿真测试早期验证、危险场景Gazebo/Webots数字孪生硬件在环测试控制逻辑验证dSPACE/NI实时仿真平台场地测试实际环境性能验证标准测试场地+动作捕捉系统压力测试极限工况验证振动台/温控箱/EMC实验室安全认证测试合规性验证ISO 10218/IEC 61508标准测试 二、工业机器人测试方案 1. 测试重点领域 工业机器人测试分布 运动精度: 35 重复定位: 25 负载性能: 20 协作安全: 15 通信协议: 5 2. 测试工具链 测试类型工具推荐关键指标运动性能测试KUKA.KR C4控制器+激光跟踪仪定位误差<0.1mm, 重复精

手把手教你用RK3566泰山派开发板跑LVGL(附交叉编译避坑指南)

手把手教你用RK3566泰山派开发板跑LVGL(附交叉编译避坑指南) 在嵌入式开发领域,图形用户界面(GUI)的实现一直是开发者面临的挑战之一。LVGL(Light and Versatile Graphics Library)作为一款轻量级、开源的嵌入式图形库,凭借其丰富的控件和跨平台特性,正成为越来越多开发者的首选。本文将聚焦于如何在国产高性能开发板——泰山派RK3566上成功移植并运行LVGL,特别针对交叉编译过程中的常见问题提供实战解决方案。 1. 环境准备与基础配置 泰山派RK3566开发板搭载四核Cortex-A55处理器,主频高达1.8GHz,配备Mali-G52 GPU,为GUI应用提供了充足的性能保障。在开始移植前,我们需要准备以下环境: * 开发主机:推荐Ubuntu 20.04 LTS(避免CMake版本问题) * 开发板系统:Buildroot或Debian系统镜像 必要工具链: sudo apt update sudo apt install git build-essential cmake 注意:Ubuntu 18.

AutoGLM-Phone-9B部署案例:教育机器人交互

AutoGLM-Phone-9B部署案例:教育机器人交互 随着人工智能在教育领域的深入应用,智能教育机器人正逐步从“被动应答”向“主动理解+多模态交互”演进。传统教育机器人受限于本地算力与模型能力,往往只能实现简单的语音识别与固定话术回复,难以应对复杂、动态的学习场景。而大语言模型(LLM)的兴起为这一领域带来了变革性可能。本文聚焦 AutoGLM-Phone-9B 模型的实际部署与应用,展示其在教育机器人中的多模态交互能力落地路径。 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型,融合视觉、语音与文本处理能力,支持在资源受限设备上高效推理。该模型基于 GLM 架构进行轻量化设计,参数量压缩至 90 亿,并通过模块化结构实现跨模态信息对齐与融合。 1. AutoGLM-Phone-9B 简介 1.1 模型定位与核心能力 AutoGLM-Phone-9B 是面向边缘计算场景设计的轻量级多模态大模型,专为移动终端和嵌入式设备(如教育机器人、智能学习平板等)优化。其核心目标是在有限硬件资源下,提供接近云端大模型的语义理解与生成能力,同时支持图像、语音、文

图数据库Neo4j和JDK安装与配置教程(超详细)

图数据库Neo4j和JDK安装与配置教程(超详细)

目录 前言 一、Java环境配置 (一)JDK的下载与安装 (二)JDK环境配置 (三)检测JDK17是否配置成功 二、Neo4j的安装与配置 (一)Neo4j的下载与安装 (二)Neo4j环境变量配置 (三)检查Neo4j是否配置完成 Neo4j的使用 一、在前台运行 二、在后台运行 前言 Neo4j作为目前比较流行的图数据库,在知识图谱等领域有较多应用。本文将详细介绍Windows系统下Neo4j图数据库的安装与配置。 Neo4j 是基于Java的图数据库,其运行时需要 Java 运行时环境(JRE)来启动 JVM 进程,而 JDK 包含了 JRE 以及开发工具,因此安装 JDK 是必要的。 一、Java环境配置 (一)JDK的下载与安装 首先,访问Oracle官方JDK下载页面,