Skip to content

Stark3 (Revo 3) 通信协议

1. 文档说明

1.1 文档目的

本文档用于指导用户通过 RS485 或 CAN FD 接口与 Stark3 (Revo 3) 灵巧手进行通信,实现设备配置、运动控制、状态获取及触觉数据读取等功能。

1.2 支持通信接口

  • RS485
  • CAN FD

2. Modbus RTU 通信协议

Stark3 灵巧手的 RS485 通信采用标准的 Modbus RTU 协议格式。

2.1 数据帧格式

Header / Device IDFunction CodeDataCRC16
1 Byte1 ByteN Bytes2 Bytes

2.2 字段说明

字段说明
Header/Device ID从机设备地址(ID)
Function CodeModbus 功能码(如 03H:读保持寄存器;04H:读输入寄存器;06H:写单个保持寄存器;10H:写多个保持寄存器)
Data数据区,具体取决于功能码和寄存器地址
CRC16CRC-16 (Modbus) 校验和,低字节在前,高字节在后

3. CAN FD 封装格式

当使用 CAN FD 接口时,底层仍采用 Modbus 协议的数据,并封装在 CAN FD 扩展帧(29-bit 标识符)中传输。

3.1 CAN FD ID 格式

CAN FD 29-bit ID 按如下位域分配:

Bit 位内容说明
28 ~ 24保留位固定为 0
23 ~ 16Device ID从机设备 ID
15 ~ 8Master ID主机 ID(由主机自行定义)
7 ~ 0Payload Length实际发送的有效数据长度(Byte)

Device ID 默认值

设备类型默认 Device ID (十进制)默认 Device ID (十六进制)
左手1260x7E
右手1270x7F

3.2 帧格式定义

主机发送帧

CAN FD ID(29-bit)数据段(Payload, ≤ 64 Bytes)
Device ID + Master ID + Payload Length完整的 Modbus RTU 数据帧(包含校验等内容)

设备回复帧

CAN FD ID(29-bit)数据段(Payload, ≤ 64 Bytes)
Device ID + Master ID + Payload Length完整的 Modbus RTU 响应数据帧

4. 寄存器规划

Stark3 的寄存器按功能划分为以下区间:

地址范围寄存器类型功能类别
0 ~ 199Holding Register系统配置
200 ~ 399Holding Register电机参数
1000 ~ 1599Holding Register控制指令
1800 ~ 1999Input Register系统状态
2030 ~ 2999Input Register电机反馈
3000 ~ 3999Input Register设备信息
4000 ~ 5000Input Register触觉数据

5. 系统配置寄存器

系统配置相关寄存器(地址范围 0~199)支持读写属性配置。

地址名称属性说明
60 ~ 80电机零点偏置RW单位:0.01°(实际值 × 100 传输)。共 21 个关节。
101左右手标识RO1 = 右手,2 = 左手
102手指恢复默认WO写入特定值恢复手指默认参数
105蜂鸣器开关RW0 = 关闭,1 = 开启
106振动马达开关RW0 = 关闭,1 = 开启
107触屏功能开关RW0 = 关闭,1 = 开启
108设备 IDRW默认左手 126,右手 127
109RS485 波特率RW参见 5.1 RS485 波特率配置
110CAN FD 波特率RW参见 5.2 CAN FD 波特率配置
112开机自动校准RW0 = 关闭,1 = 开启
118示教模式RW写入 1 进入,写入 0 退出
119软件急停RW写入 1 急停,写入 0 恢复
131电机错误自动清除RW0 = 关闭(默认),1 = 开启

5.1 RS485 波特率配置

寄存器值波特率
01 Mbps
12 Mbps
23 Mbps
35 Mbps

5.2 CAN FD 波特率配置

寄存器值波特率
01 Mbps
12 Mbps
24 Mbps
35 Mbps

6. 电机参数

电机相关参数的数据单位规范如下:

  • 位置单位:度(°)
  • 速度单位:转每分(rpm)
  • 电流单位:毫安(mA)

💡 数值传输缩放说明

为了保证传输精度,位置和速度数值均采用 实际值 × 100 的整数形式进行传输。

  • 角度示例:目标位置为 90.00° → 寄存器传输数值为 9000
  • 速度示例:目标速度为 50.00 rpm → 寄存器传输数值为 5000
  • 电流示例:保护电流直接使用物理值(mA),不进行放大。

6.1 全局保护电流

地址内容属性说明
200所有关节保护电流(mA)WO一键配置所有 21 个关节的保护电流阈值

6.2 单关节保护电流

地址内容属性说明
201 ~ 221单关节保护电流(mA)RW对应关节 0 至 20 的最大允许电流阈值

6.3 关节运动限制

地址内容属性说明
240 ~ 260关节最小位置限制(° × 100)RW对应关节 0 至 20 的物理最小位置
270 ~ 290关节最大位置限制(° × 100)RW对应关节 0 至 20 的物理最大位置
300 ~ 320关节最小速度限制(rpm × 100)RW对应关节 0 至 20 的最小速度阈值
321 ~ 341关节最大速度限制(rpm × 100)RW对应关节 0 至 20 的最大速度阈值

7. 控制指令

Stark3 灵巧手支持 MIT 阻抗控制模式

7.1 MIT 控制公式

τ=Kp×(PosRefPos)+Kd×(VelRefVel)+τff

数据缩放格式

  • Kp, Kd, Position, Velocity 均采用 实际值 × 100 传输。
  • Current ( τff ) 采用实际物理值(mA)直接传输,不进行放大。

控制参量传输示例:

  • Kp 期望值 = 15.00 传输值 = 1500
  • Kd 期望值 = 0.50 传输值 = 50
  • Position 期望值 = 90.00° 传输值 = 9000
  • Velocity 期望值 = 50.00 rpm 传输值 = 5000
  • Current ( τff ) 期望值 = 1000 mA 传输值 = 1000

7.2 单关节 MIT 控制

可以通过写入特定的寄存器独立控制某个关节的 MIT 参数:

地址参数名称说明
1050关节 ID目标控制关节的编号 (0 ~ 20)
1051Kp比例刚度系数(实际值 × 100)
1052Kd微分阻尼系数(实际值 × 100)
1053Position期望位置(° × 100)
1054Velocity期望速度(rpm × 100)
1055Current ( τff )前馈电流(mA)

7.3 多关节 MIT 控制

可以通过连续的寄存器区域一次性下发多个或全部关节的 MIT 控制参数:

地址范围对应关节参数内容说明
1100 ~ 1104关节 0[Kp, Kd, Pos, Vel, τ_ff]包含 5 个连续寄存器
1105 ~ 1109关节 1[Kp, Kd, Pos, Vel, τ_ff]包含 5 个连续寄存器
............
1195 ~ 1199关节 19[Kp, Kd, Pos, Vel, τ_ff]包含 5 个连续寄存器
1200 ~ 1204关节 20[Kp, Kd, Pos, Vel, τ_ff]包含 5 个连续寄存器

7.4 多关节单参数控制

如果只想批量修改所有关节的某一个特定 MIT 参数,可以使用以下连续的寄存器列表:

地址范围参数类别内容说明
1300 ~ 1320Kp 列表21 个手指关节的比例系数 Kp
1321 ~ 1341Kd 列表21 个手指关节的阻尼系数 Kd
1342 ~ 1362POS 列表21 个手指关节的期望位置 Pos
1363 ~ 1383Vel 列表21 个手指关节的期望速度 Vel
1384 ~ 1404τff 列表21 个手指关节的前馈电流值

7.5 四指 MIT 控制

用于独立且高效地更新食指、中指、无名指或小指的控制参数:

地址参数名称说明与取值内容
1520手指索引1 = 食指,2 = 中指,3 = 无名指,4 = 小指
1521 ~ 1540参数列表共 20 个寄存器,包含四个关节的参数:
1. 侧摆 MCP [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
2. MCP屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
3. PIP屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
4. DIP屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)

7.6 拇指 MIT 控制

用于控制拥有 5 个自由度(5 DOF)的拇指结构:

地址范围参数内容说明
1550 ~ 1574参数列表 (5 DOF)共 25 个寄存器,顺序为:
1. CMC 屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
2. CMC 外展 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
3. MCP 屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
4. IP 屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)
5. DIP 屈伸 [Kp, Kd, Pos, Vel, τ_ff] (5 寄存器)

8. 系统状态

系统状态相关寄存器(地址范围 1800~1999,只读输入寄存器)。

地址内容单位说明
1800系统状态码参见下方 8.1 系统状态码说明
1801整机电流mA灵巧手当前的整机输入总电流
1802整机电压V灵巧手当前的供电电压
1803整机功率W灵巧手当前的整机消耗功率
1804系统温度灵巧手主控板的温度

8.1 系统状态码说明

系统状态码寄存器(1800)通过高低字节组合表示状态:

  • 高 8 位 (High Byte): 核心故障标志
    • 0 = 正常
    • 1 = 故障
  • 低 8 位 (Low Byte): 详细异常类别
    • 0 = 正常
    • 1 = 通信异常
    • 2 = 未校准
    • 3 = 温度异常

9. 电机反馈

通过读取输入寄存器(2030~2999)来实时监测 21 个电机关节的状态。

地址范围内容单位说明
2030 ~ 2050电机实际速度rpm × 100对应电机 0 ~ 20 的当前转速
2060 ~ 2080电机实际位置° × 100对应电机 0 ~ 20 的当前角度位置
2090 ~ 2110电机实际电流mA对应电机 0 ~ 20 的当前驱动电流大小
2120 ~ 2140电机状态码Bit 定义参见下方 9.1 电机状态码定义
2150 ~ 2170电机当前温度对应电机 0 ~ 20 内部或驱动芯片的温度

9.1 电机状态码定义

状态码寄存器(2120~2140)采用按位(Bit)指示故障:

Bit 位描述
0过流 (Over-current)
1过压 (Over-voltage)
2欠压 (Under-voltage)
3过温 (Over-temperature)
4电流突增 (Current Spike)
5校准失败 (Calibration Failed)
8电机堵转 (Stall)
9校准状态中 (Calibrating)
11电机运行中 (Running)

10. 设备信息

设备基本信息(地址范围 3000~3999)均只读。

地址范围内容名称数据属性
3030 ~ 3039固件版本RO,大端 ASCII 字符串
3040 ~ 3049硬件版本RO,大端 ASCII 字符串
3050 ~ 3059整机 SNRO,大端 ASCII 字符串
3060 ~ 3269电机 SNRO,大端 ASCII 字符串,共 21 个电机(每个占用 10 个寄存器)
3300 ~ 3320电机固件版本RO,二进制版本信息

10.1 编码格式说明

固件版本、硬件版本及整机/电机 SN 码

这些信息均采用 ASCII 字符串编码 存储。在寄存器中按 Big-Endian(大端)字节序 存储,其中每个 uint16_t 寄存器包含 2 个字符

  • 高字节(High Byte):存储前一个字符;
  • 低字节(Low Byte):存储后一个字符。

每个字段占用 10 个寄存器,最大支持 20 个字符。

解析示例:

寄存器内容(大端 uint16_t 数组)十六进制字节序列解析后的 ASCII 字符串
0x534E, 0x3132, 0x3334, 0x3536, 0x3738, 0x3930, 0x3132, 0x3334, 0x350053 4E 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00"SN123456789012345"

电机固件版本号

电机固件版本号为 uint16_t 类型,拆分为高低字节:

  • 高字节 (High Byte): 主版本号 (Major)
  • 低字节 (Low Byte): 子版本号 (Minor)

解析格式: Version = V[Major].[Minor]

  • 例如:寄存器读出值为 0x0105,表示版本号为 V1.5

11. 电阻式触觉模块

Stark3 支持 触觉压力阵列模块,包含手掌触觉和五指触觉传感器。

11.1 触觉模块参数总览

模块种类传感器压力点数标定合力数
手掌361
拇指尖313
拇指指腹576
四指指尖(食指、中指、无名指、小指)每个指尖 21每个指尖 3
四指指腹(食指、中指、无名指、小指)每个指腹 52每个指腹 5

11.2 触觉控制寄存器

地址功能描述
4000 ~ 4010触觉模块使能(对应模块编号 0 ~ 10)
4011所有模块压力清零 (WO)
4012 ~ 4022指定模块清零 (WO, 对应模块编号 0 ~ 10)
4023触觉数据类型 (0 = 点阵原始压力值,1 = 标定压力值)

11.3 触觉标定合力数据

💡 合力计算说明

合力 = 该触觉模块内所有区域对应的标定压力值之和。

手掌与拇指标定合力

地址内容名称说明
4100手掌合力手掌区域
4101 ~ 4103拇指尖合力 1 ~ 3拇指尖部的 3 个分区合力
4104 ~ 4109拇指指腹合力 1 ~ 6拇指指腹的 6 个分区合力

食指标定合力

地址内容名称说明
4110 ~ 4112食指尖合力 1 ~ 3食指尖分区合力
4113 ~ 4117食指指腹合力 1 ~ 5食指指腹分区合力

中指标定合力

地址内容名称说明
4118 ~ 4120中指尖合力 1 ~ 3中指尖分区合力
4121 ~ 4125中指指腹合力 1 ~ 5中指指腹分区合力

无名指标定合力

地址内容名称说明
4126 ~ 4128无名指尖合力 1 ~ 3无名指尖分区合力
4129 ~ 4133无名指指腹合力 1 ~ 5无名指指腹分区合力

小指标定合力

地址内容名称说明
4134 ~ 4136小指尖合力 1 ~ 3小指尖分区合力
4137 ~ 4141小指指腹合力 1 ~ 5小指指腹分区合力

11.4 触觉阵列点阵数据

实时读取对应地址以获取触觉压力值阵列数据:

模块类别地址范围点数说明
手掌4200 ~ 423536 点
拇指尖4250 ~ 428031 点
拇指指腹4290 ~ 434657 点
食指尖4350 ~ 437021 点
食指指腹4400 ~ 445152 点
中指尖4460 ~ 448021 点
中指指腹4500 ~ 455152 点
无名指尖4560 ~ 458021 点
无名指指腹4600 ~ 465152 点
小指尖4660 ~ 468021 点
小指指腹4700 ~ 475152 点

11.5 触觉模块编号定义

模块编号模块名称
0手掌触觉
1拇指尖
2拇指指腹
3食指尖
4食指指腹
5中指尖
6中指指腹
7无名指尖
8无名指指腹
9小指尖
10小指指腹

12. 关节 ID 定义

Stark3 灵巧手共包含 21 个活动关节。关于具体物理关节对应的 ID,请参考下图定义:

Stark3 关节 ID 定义Stark3 (Revo 3) 智能灵巧手 21 个全主动独立电机关节的 ID 分布示意图
帮助