Skip to content

零点

概述

零点是机器人各关节轴的基准参考位置。准确的零点标定是保证机器人运动精度的基础。本章说明零点相关的所有协议命令,包括零点标定流程、零点偏移设置、编码器状态查询和多圈值/单圈值管理。


零点标定流程

标准零点标定步骤

零点标定的完整流程如下:

  1. 编码器状态检查:通过 0x3603 查询编码器状态,确认无欠压报警
  2. 标记无间隙方向:通过 0x3600 请求标记无间隙方向(消除传动间隙对零点的影响)
  3. 清除多圈值:通过 0x3601 清除轴多圈值,将当前编码器位置重置
  4. 移动机器人到零点:手动将机器人各轴移动到机械零点位置
  5. 设置零点偏移:通过 0x3605 设置零点偏移值(度数值或偏移量)
  6. 设置单圈值:通过 0x3606 微调各轴单圈值
  7. 验证零点:查询单圈值确认零点设置正确

零点标定类型

标定方式mode 值说明适用场景
度数方式0直接设置各轴的目标角度值已知精确零点角度时的快速标定
偏移量方式1设置各轴相对于当前编码器位置的偏移量机械零点定位后的微调标定

零点精度要求

  • 零点精度直接影响机器人的绝对定位精度
  • 各轴零点偏差应在 ±0.01° 以内
  • 零点标定后应通过运行验证程序确认精度
  • 更换电机、编码器或减速机后需要重新标定零点

零点标定注意事项

  • 标定前确认机器人各轴无负载
  • 标定前确认编码器无欠压报警
  • 标定时各轴应处于无间隙方向
  • 标定完成后建议保存配置并重启验证

请求标记无间隙方向

命令字: 0x3600

  • 无需发送数据

清除轴多圈值

请求清除轴多圈值

命令字: 0x3601

字段类型说明
axisint需要清除多圈值的轴,范围 [0, 7],0 表示清除所有轴多圈值
clearbool是否清除多圈值
robotint当前机器人号,范围 [1, 4]
json
{
  "axis": 0,
  "clear": true,
  "robot": 1
}

控制器回复

命令字: 0x3602

字段类型说明
axisint清除多圈值的轴,范围 [0, 7]
resultint清除多圈值结果,范围 [0, 1]
robotint当前机器人号,范围 [1, 4]
json
{
  "axis": 0,
  "result": 1,
  "robot": 1
}

编码器状态

查询编码器状态

命令字: 0x3603

字段类型说明
robotint当前机器人号,范围 [1, 4]
json
{
  "robot": 1
}

控制器回复

命令字: 0x3604

字段类型说明
encoderUndervoltagebool[]欠压报警列表,false 表示不欠压,true 表示欠压,长度为当前机器人轴数
encoderUnderVoltageExternalbool[]外部轴欠压报警列表,false 表示不欠压,true 表示欠压,长度为当前机器人外部轴轴数
robotint当前机器人号,范围 [1, 4]
json
{
  "encoderUndervoltage": [false, false, false, false, false, false],
  "encoderUnderVoltageExternal": [false, false, false, false, false],
  "robot": 1
}

零点偏移

设置零点偏移

命令字: 0x3605

字段类型说明
axisint设置零点偏移的轴,范围 [0, 7],0 表示设置全部轴
modeint零点偏移方式:0 表示度数,1 表示偏移量
robotint当前机器人号,范围 [1, 4]
valuedouble[]零点偏移值列表,长度为 7;当 mode 为度数时范围 [-360, 360]
json
{
  "axis": 0,
  "mode": 0,
  "robot": 1,
  "value": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
}

单圈值

设置单圈值

命令字: 0x3606

字段类型说明
robotint当前机器人号,范围 [1, 4]
valueint[]设置的各轴单圈值列表,范围 [-2^31, 2^31-1]
json
{
  "robot": 1,
  "value": [0, 0, 0, 0, 0, 0]
}

查询单圈值

命令字: 0x3607

字段类型说明
robotint当前机器人号,范围 [1, 4]
json
{
  "robot": 1
}

控制器回复

命令字: 0x3608

字段类型说明
robotint当前机器人号,范围 [1, 4]
valueint[]各轴单圈值列表,范围 [-2^31, 2^31-1]
json
{
  "robot": 1,
  "value": [0, 0, 0, 0, 0, 0]
}

多圈值

零点偏移为编码器时

查询多圈值

命令字: 0x330B

字段类型说明
robotint当前机器人号,范围 [1, 4]
json
{
  "robot": 1
}

控制器回复

命令字: 0x330C

字段类型说明
robotint当前机器人号,范围 [1, 4]
valueint[]电机编码器值列表
json
{
  "robot": 1,
  "value": [0, 0, 0, 0, 0, 0, 0]
}