127 lines
3.4 KiB
Markdown
127 lines
3.4 KiB
Markdown
# 螺杆定位 / 工具盘定位 TCP 协议
|
||
|
||
## 1. 概述
|
||
|
||
- 传输协议:TCP/IP
|
||
- 数据编码:UTF-8 文本
|
||
- 服务模式:视觉侧作为 TCP 服务端
|
||
- 默认端口:`7800`
|
||
- 报文结束符:`\r\n`
|
||
- 当前模式:眼在手上
|
||
|
||
## 2. 请求报文
|
||
|
||
格式:
|
||
|
||
```text
|
||
类型+相机索引_X_Y_Z_A_B_C\r\n
|
||
```
|
||
|
||
示例:
|
||
|
||
```text
|
||
S1_-23.45_200.30_50.10_15.50_-2.30_45.00\r\n
|
||
T1_-23.45_200.30_50.10_15.50_-2.30_45.00\r\n
|
||
```
|
||
|
||
字段说明:
|
||
|
||
| 字段 | 说明 |
|
||
|---|---|
|
||
| `S1` / `T1` | `S`=螺杆检测,`T`=工具盘检测,后跟相机索引 |
|
||
| `X` | 机械臂当前 X,单位 mm |
|
||
| `Y` | 机械臂当前 Y,单位 mm |
|
||
| `Z` | 机械臂当前 Z,单位 mm |
|
||
| `A` | 机械臂当前姿态第 1 个角,单位 deg |
|
||
| `B` | 机械臂当前姿态第 2 个角,单位 deg |
|
||
| `C` | 机械臂当前姿态第 3 个角,单位 deg |
|
||
|
||
## 3. 姿态输入顺序
|
||
|
||
`A/B/C` 的实际含义由网络配置中的 `poseOutputOrder` 统一控制。
|
||
|
||
支持顺序:
|
||
|
||
- `RX-RY-RZ`
|
||
- `RX-RZ-RY`
|
||
- `RY-RX-RZ`
|
||
- `RY-RZ-RX`
|
||
- `RZ-RX-RY`
|
||
- `RZ-RY-RX`
|
||
|
||
例如,当 `poseOutputOrder = RZ-RY-RX` 时:
|
||
|
||
```text
|
||
T1_-500.92_1553.084_267.836_176.850_74.55_89.211\r\n
|
||
```
|
||
|
||
表示:
|
||
|
||
```text
|
||
X = -500.92
|
||
Y = 1553.084
|
||
Z = 267.836
|
||
RZ = 176.850
|
||
RY = 74.55
|
||
RX = 89.211
|
||
```
|
||
|
||
## 4. 返回报文
|
||
|
||
格式:
|
||
|
||
```text
|
||
PointNum_AX1_AY1_AZ1_A1_B1_C1_X1_Y1_Z1_A1_B1_C1/AX2_AY2_AZ2_A2_B2_C2_X2_Y2_Z2_A2_B2_C2/\r\n
|
||
```
|
||
|
||
每个目标由 12 个浮点组成:先 **接近点** (`AX/AY/AZ + A/B/C`),再 **目标点** (`X/Y/Z + A/B/C`),两者姿态完全相同。
|
||
|
||
示例:
|
||
|
||
```text
|
||
2_90.500_200.300_50.100_15.500_-2.300_45.000_100.500_200.300_50.100_15.500_-2.300_45.000/110.000_210.500_48.000_-5.000_1.200_30.000_120.000_210.500_48.000_-5.000_1.200_30.000/\r\n
|
||
0\r\n
|
||
```
|
||
|
||
字段说明:
|
||
|
||
| 字段 | 说明 |
|
||
|---|---|
|
||
| `PointNum` | 检测到的目标数量 |
|
||
| `AX/AY/AZ` | 接近点坐标,单位 mm,保留 3 位小数 |
|
||
| `A/B/C` (接近点) | 接近点姿态,与目标姿态相同 |
|
||
| `X/Y/Z` | 目标中心坐标,单位 mm,保留 3 位小数 |
|
||
| `A/B/C` (目标点) | 目标姿态,单位 deg |
|
||
|
||
### 接近点语义
|
||
|
||
- 接近点 = 目标点在 Eye 坐标系下、姿态调整前沿"X 轴方向"偏移 `approachOffset` 后,再经手眼矩阵变换到机器人坐标系得到。
|
||
- 螺杆:X 轴取 `axialDir`
|
||
- 工具盘:X 轴取 `xDir`
|
||
- 机械臂应 **先运动到接近点**(姿态为目标姿态),再 **保持姿态沿工具 Z 轴直线下压到目标点**,避免姿态变化过程中碰撞工件。
|
||
- `approachOffset` 每台相机独立配置(手眼标定页的"接近点偏移(mm)");为 0 时接近点与目标点重合。
|
||
|
||
## 5. 姿态输出顺序
|
||
|
||
返回报文中的 `A/B/C` 与请求报文一样,也由同一个 `poseOutputOrder` 控制。
|
||
|
||
这意味着:
|
||
|
||
- TCP 输入顺序
|
||
- TCP 输出顺序
|
||
|
||
使用同一个配置项统一控制,便于和机械臂侧对接。
|
||
|
||
## 6. 结果语义
|
||
|
||
- 螺杆检测输出:机械臂坐标系下的 `接近点(AX/AY/AZ) + 目标点(X/Y/Z) + A/B/C`
|
||
- 工具盘检测输出:机械臂坐标系下的定位盘中心 `接近点(AX/AY/AZ) + 目标点(X/Y/Z) + A/B/C`
|
||
|
||
说明:
|
||
|
||
- 内部姿态计算顺序由 `eulerOrder` 控制
|
||
- `poseOutputOrder` 只控制姿态字段在协议中的排列顺序
|
||
- 位置字段(`AX/AY/AZ/X/Y/Z`)保留 3 位小数,单位 mm
|
||
- 姿态字段 `A/B/C` 保留 3 位小数,单位 deg
|
||
- 接近点与目标点姿态一致;机械臂到达接近点后沿工具 Z 轴直线下压到目标点
|