跳到主要内容

坐标系标定

机器人编程前必须标定坐标系,否则示教点在换工具或换工件后完全不可用。

三套坐标系

坐标系作用
工具坐标系(TCP)末端工具的位置/方向,如焊枪尖、夹爪中心
工件坐标系工件在台面上的位置,编程时点位基于它
基坐标系机器人底座位置(多机联动或机器人移动时用)

正确标定后,换工具只改 TCP、换工件只改工件坐标系,不用重示教所有点。

工具坐标系标定(TCP)

常用 四点法:

  1. 在工作区放一个尖锥作为固定参考点
  2. 让机器人用末端工具从 4 个不同姿态去戳这个点
  3. 每次对准后点「记录」
  4. 系统自动算出 TCP 偏移(X/Y/Z)
  5. 如需姿态,加第 5 点:沿工具 Z 轴方向抬高

入口:项目浏览器 → 机器人 → 右键 → 坐标系标定 → 选 工具坐标系 → 按向导点

工件坐标系标定

常用 三点法:

  1. 在工件上找 3 个参考点:原点、X 轴上一点、XY 平面上一点
  2. 让机器人 TCP 依次对准这 3 个点
  3. 每点「记录」一次
  4. 系统自动算出工件坐标系的位姿

基坐标系标定(多机器人)

多机联动时,需要把每台机器人的基坐标系对齐到一个世界坐标。方法:

  • 在每台机器人工作区放同一组参考点
  • 用每台机器人去戳这些点
  • 系统算出各自的基坐标变换
  • 之后所有机器人在世界坐标下说同一套语言

标定验证

标定完成后必须验证:

  1. 在 3D 视口里看工具轴是否指向正确方向
  2. 在点动面板里切到工具坐标,按 +Z 键,工具应沿自身方向移动
  3. 示教一个已知点,看 3D 视口里位置是否对

验证不通过 → 重新标定。

常见错误

现象原因
TCP 标定后工具不指向尖端四点取得太靠,姿态差异不够大
工件坐标下 X 轴反了第二点没取在正 X 方向上
抖动大标定姿态太极端,奇异点附近误差大

坐标系体系总览

Darra 机器人坐标系层级遵循 ISO 9787:

World (世界)
├─ Base (机器人底座)
│ └─ Joint 1..6 (关节链)
│ └─ Flange (法兰)
│ └─ Tool 0 (默认等于法兰)
│ └─ Tool 1 (工具 1)
│ └─ Tool N (工具 N)
├─ UserFrame 1 (工件 1)
├─ UserFrame 2 (工件 2)
└─ UserFrame N

所有点位、运动指令都要明确参考哪个坐标系. 指令默认:

  • 机器人 JOG: 按当前选择的坐标系
  • 点位存储: 工件 / 用户坐标系 (切换工件不用重示)
  • 伺服 PDO: 关节坐标 (经正运动学由 TCP 转换)

坐标系变换链

World → Base: 机器人底座相对 World 的位姿 (固定)
Base → Flange: 关节角 q₁..q₆ 由正运动学算出
Flange → Tool: 由 TCP 标定给出
World → User: 由工件坐标系标定给出
Tool → User: 动态计算, 程序里用来判断 "工具末端在工件上什么位置"

典型正向计算:

^{World}T_{Tool} = ^{World}T_{Base} · ^{Base}T_{Flange}(q) · ^{Flange}T_{Tool}

^{Base}T_{Flange}(q) 由机器人正运动学给出, 其他是用户标定的常量。

三大标定的先后顺序

必须按以下顺序执行, 否则后一步会依赖前一步的错误结果:

  1. 基坐标 (若多机): 先校准所有机器人到同一 World
  2. 工具坐标 (TCP): 工具装好后马上标 (见 TCP 标定)
  3. 工件坐标 (UserFrame): 用已标定好的 TCP 去标 (见 用户坐标系)
  4. 视觉标定 (若有相机): 用已标定好的 TCP 去标 (见 视觉标定)

坐标系精度要求对照

坐标系典型精度工业标准检测方法
Base (多机)±1 mmISO 9787双机互测对点
Tool (TCP)±0.3 mm-4 点 / 6 点残差 < 0.5 mm
User / Work±0.5 mm-3 点法残差 < 0.5 mm
Camera (手眼)±0.5 mm-视觉叠加 vs 实物

SCL 代码示例

VAR
SetBase : MC_SetKinTransform;
SetTool : MC_SetKinTransform;
SetUser : MC_SetKinTransform;
END_VAR

// 设置基坐标 (若重新安装了机器人, 校准一次)
SetBase(
Robot := Robot1,
Execute := TRUE,
Frame := FRAME_BASE,
Position := (X := 1000, Y := 0, Z := 0, Rx := 0, Ry := 0, Rz := 0)
);

// 切换工具
SetTool(
Robot := Robot1,
Execute := TRUE,
Frame := FRAME_TOOL,
FrameId := 1 // Tool1
);

// 切换工件
SetUser(
Robot := Robot1,
Execute := TRUE,
Frame := FRAME_USER,
FrameId := 2 // UserFrame 2 (Pallet_B)
);

程序里随时可切 Tool / UserFrame, 后续运动指令都基于当前坐标系解释。

参数表

参数类型说明
BaseIdUINT基坐标编号 (0 = World, 1..N = 自定义)
ToolIdUINT工具坐标编号 (0 = Flange, 1..15)
UserFrameIdUINT用户坐标编号 (0 = World/Base, 1..15)
CalibrationMethodENUM4P / 6P / 3P / AUTO
CalibrationResidualLREALRMS 残差 mm
CalibrationDateTimeDT标定时间戳

排错清单 (综合)

现象可能原因解决
点位换工件后完全错没用工件坐标系, 点位绑死到 World用工件系重示教关键点
换工具后 TCP 对不准工具公差重做 TCP 标定
多机器人 "说不同话"基坐标没对齐标所有机器人到同一 World
视觉抓取偏移视觉标定过期重做 视觉标定
程序里 SetTool(1) 无效ToolId 未标定或被删先标定再切换
TCP 标定残差大4 点姿态差异不够扩大姿态差异, 见 TCP

最佳实践

  1. 定期抽检: 每周选 1~2 个已标点位, 让机器人回去看实际精度
  2. 标定证书: 每次标定自动生成报告, 归档到 MES 追溯
  3. 版本化配置: 坐标系配置提交 git, 改动有记录
  4. 换人换工具必重标: 哪怕工具型号相同, 物理换过就重标
  5. 温度稳定后标定: 机器人开机预热 30 min 后再标, 比冷态准
  6. 不要混用 World 和 UserFrame 点位: 一个项目里统一用工件坐标系
  7. 多工位用 UserFrame 序号: Station_A → UserFrame 1, Station_B → UserFrame 2

相关文档