GrabBag/App/DiscHolePose/Doc/砂轮盘孔定位ModbusTCP协议文档.md

4.5 KiB
Raw Blame History

砂轮盘孔定位 / 砂轮盘架子定位 ModbusTCP 协议

1. 概述

  • 协议Modbus TCP
  • 默认端口:502
  • 当前实现使用保持寄存器

2. 寄存器定义

地址 长度 访问 说明
0 1 触发检测,1=砂轮盘孔检测2=砂轮盘架子检测
1 1 工作状态,0=空闲1=检测中2=完成3=异常
2 2 机械臂当前 Xfloat32
4 2 机械臂当前 Yfloat32
6 2 机械臂当前 Zfloat32
8 2 机械臂当前 Afloat32
10 2 机械臂当前 Bfloat32
12 2 机械臂当前 Cfloat32
14 2 接近点 AXfloat32
16 2 接近点 AYfloat32
18 2 接近点 AZfloat32
20 2 接近点 Afloat32(与目标姿态相同)
22 2 接近点 Bfloat32(与目标姿态相同)
24 2 接近点 Cfloat32(与目标姿态相同)
26 2 目标点 Xfloat32
28 2 目标点 Yfloat32
30 2 目标点 Zfloat32
32 2 目标点 Afloat32
34 2 目标点 Bfloat32
36 2 目标点 Cfloat32

说明:

  • 2~13 为机械臂当前位姿输入
  • 14~25接近点 输出(机械臂先运动到这里)
  • 26~37目标点 输出(从接近点沿工具 Z 轴直线下压到此)
  • 接近点与目标点的 A/B/C 姿态字段值相同
  • 每个 float32 占 2 个保持寄存器
  • 当前仅输出第一个目标结果

3. 姿态输入/输出顺序

A/B/C 的实际含义由网络配置中的 poseOutputOrder 统一控制。

支持顺序:

  • RX-RY-RZ
  • RX-RZ-RY
  • RY-RX-RZ
  • RY-RZ-RX
  • RZ-RX-RY
  • RZ-RY-RX

同一个配置同时作用于:

  • Modbus 输入 A/B/C
  • Modbus 输出 A/B/C

例如,当 poseOutputOrder = RZ-RY-RX 时:

  • 地址 8~13 表示输入 RZ/RY/RX
  • 地址 20~25 表示接近点输出 RZ/RY/RX
  • 地址 32~37 表示目标点输出 RZ/RY/RX

4. 工作状态说明

状态值 含义
0 空闲
1 检测中
2 检测完成
3 异常或请求不支持

5. 触发流程

  1. 确认地址 1 当前为 0
  2. 将机械臂当前位姿写入 2~13
  3. 向地址 0 写入 1(砂轮盘孔检测)或 2(砂轮盘架子检测)
  4. 轮询地址 1
  5. 当地址 1=2 时,读取 14~37(接近点 + 目标点)
  6. 机械臂先运动到接近点 14~25,再保持姿态沿工具 Z 轴直线下压到目标点 26~37
  7. 当地址 1=3 时,本次检测失败

6. 结果语义

  • 砂轮盘孔检测输出:机械臂坐标系下的孔中心 接近点(AX/AY/AZ) + 目标点(X/Y/Z) + A/B/C
    • 孔姿态由法向量normDir计算Pitch 由 Z 分量与水平面夹角确定Yaw 由 X/Y 分量确定Roll 固定为 0
  • 砂轮盘架子检测输出:机械臂坐标系下的架子中心 接近点(AX/AY/AZ) + 目标点(X/Y/Z) + A/B/C
    • 架子姿态由三轴向量pose_x/pose_y/pose_z构建旋转矩阵后提取欧拉角

说明:

  • 内部姿态求解顺序由 eulerOrder 控制
  • poseOutputOrder 只控制寄存器中姿态字段的排列顺序
  • 接近点与目标点姿态一致;机械臂到达接近点后沿工具 Z 轴直线下压到目标点
  • 接近点 = 目标点在 Eye 坐标系下、沿"Z 轴方向"偏移 approachOffset,再经手眼矩阵变换到机器人坐标系得到
  • approachOffset 每台相机独立配置(手眼标定页的"接近点偏移(mm)");为 0 时接近点与目标点重合

7. 算法说明

使用 workpieceHolePositioning 算法库:

  • 砂轮盘孔定位sx_getDiscHolePose()

    • 输入:扫描线数据 + 角点检测参数cornerParam
    • 输出:孔中心位置 + 法向量方向
  • 砂轮盘架子定位sx_getDiscRackCenterPosition()

    • 输入:扫描线数据 + 角点检测参数cornerParam
    • 输出:架子中心位置 + 三轴方向向量pose_x/pose_y/pose_z

8. TCP 文本协议

除 ModbusTCP 外,还支持 TCP 文本协议(默认端口 7800

  • 请求:D1_X_Y_Z_A_B_C\r\nD=砂轮盘孔检测)或 R1_X_Y_Z_A_B_C\r\nR=砂轮盘架子检测)
    • 数字表示相机编号1 或 2
  • 成功响应:1_AX_AY_AZ_A_B_C_X_Y_Z_A_B_C\r\n12 个 float接近点 6 个 + 目标点 6 个)
  • 失败响应:0_0_0_0_0_0_0_0_0_0_0_0\r\n