用户坐标
概述
用户坐标系是机器人在工件或工装上定义的局部坐标系,用于简化编程和操作。通过在不同工件上定义用户坐标系,可以使同一程序在不同工位间复用,大幅提高编程效率。
坐标系层次
机器人系统中存在多层坐标系,从全局到局部的关系如下:
text
大地坐标系 (World)
└── 基坐标系 (Base/Robot)
└── 用户坐标系 (User) ← 本章内容
└── 工具坐标系 (Tool)| 坐标系 | 说明 | 默认原点 |
|---|---|---|
| 大地坐标系 | 车间地面的绝对参考系 | 固定在地面 |
| 基坐标系 | 机器人底座上的参考系 | 机器人底座中心 |
| 用户坐标系 | 工件/工装上的局部参考系 | 用户通过标定定义 |
| 工具坐标系 | 工具末端 (TCP) 的参考系 | 工具法兰中心 |
用户坐标系的作用
- 编程简化:在工件上定义坐标系后,可以直接使用工件的长宽高方向编程
- 程序复用:同一程序应用于不同位置的工件时,只需切换用户坐标系
- 偏移补偿:通过修改用户坐标系偏移量实现工位微调
- 多工位管理:支持最多 999 个用户坐标系,满足多工位需求
用户坐标标定
标定方法
用户坐标系通过三点法进行标定:
- 原点 (O):定义用户坐标系的原点位置
- X 轴方向点 (X):定义用户坐标系 X 轴正方向
- Y 轴方向点 (Y):定义用户坐标系 Y 轴正方向(Z 轴由右手定则确定)
标定要求: 原点、X 点、Y 点不能共线,否则标定失败。
标定流程
- 通过
0x3562发送标定点位置信息(原点/X/Y) - 通过
0x3560请求标定计算 - 控制器回复
0x3561告知计算结果 - 通过
0x3570查询标定后的位置信息验证
0x3560 上位机请求用户坐标标定计算
说明: 上位机请求用户坐标标定计算
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"robot": 1,
"user": 1
}0x3561 控制器回复用户坐标标定计算结果
说明: 控制器回复上位机用户坐标标定计算结果
响应参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| result | bool | 标定计算是否成功 |
| robot | int | 当前机器人号,范围[1,4] |
响应示例:
json
{
"result": true,
"robot": 1
}0x3562 上位机请求当前用户坐标标定原点/X 值/Y 值
说明: 上位机请求当前用户坐标标定原点/X 值/Y 值
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| posX | double[] | 标记的 X 值位置信息列表,当require为"OXY"时该节点存在 |
| posY | double[] | 标记的 Y 值位置信息列表,当require为"OXY"时该节点存在 |
| posZero | double[] | 标记的原点位置信息列表,当require为"OXY"时该节点存在 |
| require | string | 标记点信息,取值为"0"、"X"、"Y"时分别表示标记原点,X 值,Y 值;取值为"OXY"时,标记所有点 |
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"posX": [470.7460, 0.0, 817.3340, 3.1410, 0.0, 0.0],
"posY": [470.7460, 0.0, 817.3340, 3.1410, 0.0, 0.0],
"posZero": [470.7460, 0.0, 817.3340, 3.1410, 0.0, 0.0],
"require": "OXY",
"robot": 1,
"user": 1
}0x3563 控制器回复当前用户坐标标定原点/X 值/Y 值
说明: 控制器回复上位机当前用户坐标标定原点/X 值/Y 值
响应参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| position | double[] | 弧度制下的位置信息列表 |
| positionDeg | double[] | 角度制下的位置信息列表 |
| require | string | 标记点信息,值为"0"、"X"、"Y"时分别表示标记原点,X 值,Y 值 |
| robot | int | 当前机器人号,范围[1,4] |
| status | bool | 标定状态,true表示已标定,false表示未标定 |
| user | int | 当前用户坐标号,范围[1,999] |
响应示例:
json
{
"position": [470.746, 0.0, 817.334, 3.141, 0.0, 0.0],
"positionDeg": [470.746, 0.0, 817.334, 179.966043450592, 0.0, 0.0],
"require": "O",
"robot": 1,
"status": true,
"user": 1
}0x3570 上位机查询用户坐标标定点位置信息
说明: 上位机查询用户坐标标定点位置信息
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| require | string | 需要查询的位置信息,值为"0"、"X"、"Y"时分别表示标记原点,X 值,Y 值;值为"Calibration"时表示计算后的位置信息 |
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"require": "X",
"robot": 1,
"user": 1
}0x3571 控制器回复用户坐标标定点位置信息
说明: 控制器回复上位机用户坐标标定点位置信息
响应参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| position | double[] | 弧度制下的位置信息列表;require为"Calibration"时为弧度制下偏移量 |
| positionDeg | double[] | 角度制下的位置信息列表;require为"Calibration"时为角度制下偏移量 |
| require | string | 查询的位置信息,值为"0"、"X"、"Y"时分别表示标记原点,X 值,Y 值;值为"Calibration"时表示计算后的位置信息 |
| robot | int | 当前机器人号,范围[1,4] |
| status | bool | 标定状态,true表示已标定,false表示未标定;require为"Calibration"时该节点不存在 |
| user | int | 当前用户坐标号,范围[1,999] |
响应示例:
json
{
"position": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"positionDeg": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"require": "X",
"robot": 1,
"status": false,
"user": 1
}用户坐标号
0x3580 上位机请求切换用户坐标
说明: 上位机请求切换用户坐标
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 需要切换到的用户坐标号,范围[1,999] |
请求示例:
json
{
"robot": 1,
"user": 3
}注意: 切换用户坐标系后,所有后续运动指令将基于新的用户坐标系执行。确保目标用户坐标系已正确标定。
0x3581 上位机查询当前已选中的用户坐标号
说明: 上位机查询当前已选中用户坐标号
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
请求示例:
json
{
"robot": 1
}0x3582 控制器回复已选中的用户坐标号
说明: 控制器回复上位机已选中的用户坐标号
响应参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
响应示例:
json
{
"robot": 1,
"user": 3
}用户坐标注释
0x3590 上位机请求设置用户坐标注释
说明: 上位机请求设置用户坐标注释
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| note | string | 需要设置的注释 |
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"note": "AAA",
"robot": 1,
"user": 1
}0x3591 上位机查询用户坐标号注释
说明: 上位机查询用户坐标号注释
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"robot": 1,
"user": 1
}0x3592 控制器回复用户坐标号注释
说明: 控制器回复上位机用户坐标号注释
响应参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| note | string | 当前用户坐标注释 |
| robot | int | 当前机器人号,范围[1,4] |
| user | int | 当前用户坐标号,范围[1,999] |
响应示例:
json
{
"note": "AAA",
"robot": 1,
"user": 1
}0x3593 上位机设置用户坐标偏移量
说明: 上位机设置用户坐标偏移量
请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| position | double[] | 设置的偏移量列表,按顺序分别为 X 值,Y 值,Z 值,A 值,B 值,C 值 |
| user | int | 当前用户坐标号,范围[1,999] |
请求示例:
json
{
"position": [5.0, 0.0, 0.0, 0.0, 0.0, 0.0],
"user": 1
}偏移量用途
偏移量用于在不重新标定的情况下微调用户坐标系的位置:
- X/Y/Z 偏移:平移用户坐标系原点
- A/B/C 偏移:旋转用户坐标系方向(欧拉角)
典型场景: 工装更换后工件位置发生微小偏移,通过调整偏移量即可恢复精度,无需重新标定。