干涉区
概述
干涉区是用于多机器人协作或机器人与外部设备交互时,防止碰撞的安全区域机制。通过定义笛卡尔空间中的矩形区域,控制器可以实时监控机器人末端/工具是否进入或离开指定的干涉区,并根据配置执行相应的动作(状态输出或禁止运动)。
干涉区概念
干涉区定义
干涉区是笛卡尔空间中的一个轴对齐矩形区域(AABB),由最小坐标点 (minX, minY, minZ) 和最大坐标点 (maxX, maxY, minZ) 定义。控制器实时计算机器人末端(TCP)位置,判断其是否在干涉区内。
干涉区类型
| 类型 | workType 值 | 说明 | 典型应用 |
|---|---|---|---|
| 状态输出 | 0 | 机器人在区域内时输出 IO 信号 | 通知外部设备机器人已到达工作区域 |
| 禁止运动 | 1 | 机器人在区域内时禁止运动 | 防止两台机器人进入对方的作业空间 |
区域判断
| 判断方式 | isInInterfer 值 | 说明 |
|---|---|---|
| 在区域内 | 1 | 当机器人末端在区域内时触发 |
| 在区域外 | 0 | 当机器人末端在区域外时触发 |
干涉区应用场景
- 多机器人协作:定义各机器人的专属工作区域,防止同时进入同一区域
- 机器人与外部设备:定义设备的安全区域,机器人进入时降低速度或停止
- 工位管理:定义不同工位的边界,通过 IO 信号通知 PLC 机器人的位置
- 安全围栏:定义虚拟围栏,机器人越界时停止运动
干涉区数量与编号
- 每个机器人支持最多 99 个干涉区(工艺号 1-99)
- 每个干涉区独立配置,互不影响
- 干涉区坐标系基于当前选中的用户坐标系
干涉区范围
上位机设置干涉区范围
命令字: 0x3800
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| num | int | [1,99] | 工艺号 |
| param | object | - | 干涉区参数 |
| robot | int | [1,4] | 当前机器人号 |
param 参数:
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| varName | string | GB001-GB999 | 用于干涉区输出值 |
| enable | bool | - | 干涉区使能 |
| isInInterfer | int | [0,1] | 在区域内/外:0表示在区域外,1表示在区域内 |
| maxX | double | [-9999,9999] mm | 最大 X |
| maxY | double | [-9999,9999] mm | 最大 Y |
| maxZ | double | [-9999,9999] mm | 最大 Z |
| minX | double | [-9999,9999] mm | 最小 X |
| minY | double | [-9999,9999] mm | 最小 Y |
| minZ | double | [-9999,9999] mm | 最小 Z |
| port | int | - | 输出 IO 端口 |
| value | int | [0,1] | 输出参数 |
| workType | int | [0,1] | 起作用方式:0表示状态输出,1表示禁止运动 |
示例:
json
{
"num": 1,
"param": {
"enable": false,
"isInInterfer": 1,
"maxX": "1101.05",
"maxY": "183.569",
"maxZ": "1024.13",
"minX": "833.956",
"minY": "-173.017",
"minZ": "944.358",
"port": 0,
"value": 0,
"workType": 0
},
"robot": 1
}配置建议
minX<maxX,minY<maxY,minZ<maxZ,否则干涉区无效- 干涉区应设置在机器人可达工作空间内
- 多个干涉区可以重叠,重叠区域的判断结果取并集
上位机查询干涉区范围
命令字: 0x3801
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| num | int | [1,99] | 当前查询的工艺号 |
| robot | int | [1,4] | 当前机器人号 |
示例:
json
{
"num": 1,
"robot": 1
}控制器回复上位机干涉区参数/干涉点标记结果
命令字: 0x3802
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| num | int | [1,99] | 工艺号 |
| param | object | - | 干涉区参数 |
| robot | int | [1,4] | 当前机器人号 |
param 参数:
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| calibrationState1 | int | [0,1] | 标记点1是否标定:0表示未标定,1表示已标定 |
| calibrationState2 | int | [0,1] | 标记点2是否标定:0表示未标定,1表示已标定 |
| enable | bool | - | 干涉区使能 |
| isInInterfer | int | [0,1] | 在区域内/外:0表示在区域外,1表示在区域内 |
| maxX | double | [-9999,9999] mm | 最大 X |
| maxY | double | [-9999,9999] mm | 最大 Y |
| maxZ | double | [-9999,9999] mm | 最大 Z |
| minX | double | [-9999,9999] mm | 最小 X |
| minY | double | [-9999,9999] mm | 最小 Y |
| minZ | double | [-9999,9999] mm | 最小 Z |
| point1Data | double[] | - | 标记点1标记位置信息列表 |
| point2Data | double[] | - | 标记点2标记位置信息列表 |
| port | int | - | 输出 IO 端口 |
| value | int | [0,1] | 输出参数 |
| workType | int | [0,1] | 起作用方式:0表示状态输出,1表示禁止运动 |
示例:
json
{
"num": 1,
"param": {
"calibrationState1": 0,
"calibrationState2": 0,
"enable": false,
"isInInterfer": 1,
"maxX": "1101.05",
"maxY": "183.569",
"maxZ": "1024.13",
"minX": "833.956",
"minY": "-173.017",
"minZ": "944.358",
"point1Data": [0, 0, 0, 0, 0, 0],
"point2Data": [0, 0, 0, 0, 0, 0],
"port": 0,
"value": 0,
"workType": 0
},
"robot": 1
}干涉点
干涉点概念
干涉点用于辅助定义干涉区的位置。通过示教标记两个对角点(标记点1和标记点2),控制器可以自动计算干涉区的边界范围。这是一种便捷的干涉区定义方式。
标记点标定流程
- 通过
0x3810发送标记请求,指定标记点号 (1 或 2) - 手动将机器人移动到目标位置
- 控制器记录当前位置作为标记点
- 完成两个标记点后,通过
0x3811请求计算干涉区范围
上位机请求标记干涉点
命令字: 0x3810
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| calibrationState1 | int | [0,1] | 标记点1状态:0表示进行标定,1表示取消标定 |
| calibrationState2 | int | [0,1] | 标记点2状态:0表示进行标定,1表示取消标定 |
| num | int | [1,99] | 工艺号 |
| pos | int | [1,2] | 标记点号:1表示标记点1,2表示标记点2 |
| robot | int | [1,4] | 当前机器人号 |
示例:
json
{
"calibrationState1": 1,
"calibrationState2": 1,
"num": 1,
"pos": 1,
"robot": 1
}上位机请求标记完成计算
命令字: 0x3811
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| num | int | [1,99] | 当前查询的工艺号 |
| robot | int | [1,4] | 当前机器人号 |
示例:
json
{
"num": 1,
"robot": 1
}上位机请求移动到标记点
命令字: 0x3812
| 字段 | 类型 | 范围 | 说明 |
|---|---|---|---|
| num | int | [1,99] | 当前查询的工艺号 |
| pos | int | [1,2] | 需要移动到的标记点号 |
| robot | int | [1,4] | 当前机器人号 |
示例:
json
{
"num": 1,
"pos": 1,
"robot": 1
}