Skip to content
帮助

Revo 2 灵巧手通信协议设计

Revo 2 触觉版灵巧手支持 3 种对外通信接口:RS485、CAN FD和EtherCAT(点击此处了解EC协议说明)。设计一套兼容485和CAN FD通信接口的协议,在兼容不同通信协议的基础上确保通信的高效性、可靠性和易扩展性。

通信接口特点

RS485 特点

  • 通信速率:可达 10 Mbps,常用速率为 9600 bps~1 Mbps。
  • 帧长:支持不定长帧,帧最大长度受具体应用约束。
  • 校验方式:需软件实现 CRC16或者checksum 等校验方式,适应复杂电磁环境。
  • 通信模式:半双工通信,需要冲突检测机制。
  • 可靠性:抗干扰能力强,适合长距离通信。

CAN FD 特点

  • 通信速率:数据段速率可达 5 Mbps,头部保持传统 CAN 速率。
  • 帧长:最大支持 64 字节数据段,扩展了 CAN 的数据载荷能力。
  • 校验方式:硬件内置校验,无需软件实现。
  • 通信模式:兼容传统 CAN 通信设备。

兼容性协议设计

Modbus-RTU 协议是一种主从请求应答通讯协议,广泛应用于工业自动化系统中。协议帧包括了地址、功能码、数据域、和 CRC 校验,以确保通信的可靠性。

数据帧格式

Header/Device IDFunction CodeDataCRC16
1byte1byten bytes2 Bytes

Header/Device ID: 设备标识符,用于区分不同的设备。

Function Code: 功能码,指示请求的操作类型。

Data: 数据域,包含具体操作的数据。

CRC16: CRC 校验,用于校验数据的完整性。

RS485兼容Modbus RTU:

RS485本身不定义具体的通信协议,但通常与Modbus RTU协议搭配使用,广泛用于工业自动化和监控系统中的数据传输。

CANFD 兼容Modbus RTU:

CANFD采用拓展帧,仲裁帧波特率固定位1Mb可将CAN FD协议中的数据字段中帧ID包含Device ID和master ID还有数据长度,数据字段包含整个Modbus RTU格式;

主机发送帧:

CAN FD ID(29bit)数据段 (≤64Bytes)
24~28bit 0b00000
16~23bit Device ID
8~15bit Master ID
0 ~7bit Payload len
Header/Device IDFunction CodeDataCRC16

设备应答帧

CAN FD ID(29bit)数据段 (≤64Bytes)
24~28bit 0b00000
16~23bit Device ID
8~15bit Master ID
0 ~7bit Payload len
Header/Device IDFunction CodeDataCRC16

功能码

功能码用于标识请求的操作类型,每个功能码对应特定的操作,主要用于从设备中读取数据、写入数据或执行其他控制任务 :

功能码描述
03H读保持寄存器
06H写单个保持寄存器
10H写多个保持寄存器
04H读输入寄存器

寄存器

手部寄存器(控制类)

地址类型描述长度属性
900保持寄存器Entry OTA2bytesW
901保持寄存器左右手读取2bytesR
902保持寄存器内部手势恢复默认值2byteW
903保持寄存器恢复出厂设置2bytesW
904保持寄存器手背灯开关2bytesW/R
905保持寄存器蜂鸣器开关2bytesW/R
906保持寄存器震动马达开关2bytesW/R
910保持寄存器Factory KEY20Bytes(10 uint16)W/R
920保持寄存器SN20Bytes(10 uint16)W/R
930保持寄存器大拇指Flex保护电流2bytesW/R
931保持寄存器大拇指Aux保护电流2bytesW/R
932保持寄存器食指保护电流2bytesW/R
933保持寄存器中指保护电流2bytesW/R
934保持寄存器无名指保护电流2bytesW/R
935保持寄存器小指保护电流2bytesW/R
936保持寄存器大拇指Aux锁定电流2bytesW/R
937保持寄存器单位模式设置2bytesW/R
938保持寄存器手指最小位置设置4bytesW
940保持寄存器手指最大位置设置4bytesW
942保持寄存器手指最大速度设置4bytesW
944保持寄存器手指最大电流设置4bytesW
946保持寄存器手指最小位置读取12bytesR
952保持寄存器手指最大位置读取12bytesR
958保持寄存器手指最大速度读取12bytesR
964保持寄存器手指最大电流读取12bytesR
970保持寄存器触觉厂商2bytesR
1000保持寄存器设备ID2bytesW/R
1001保持寄存器RS485波特率2bytesW/R
1002保持寄存器CANFD波特率2bytesW/R
1003保持寄存器CANFD仲裁域采样点配置2bytesW/R
1009保持寄存器存储数据/重启2bytesW/R
1010保持寄存器多个手指位置时间控制24bytes(12 uint16)W/R
1022保持寄存器多个手指位置速度控制24bytes(12 uint16)W/R
1034保持寄存器多个手指速度控制12bytes(6 uint16)W/R
1040保持寄存器多个手指电流控制12bytes(6 uint16)W/R
1046保持寄存器多个手指PWM控制12bytes(6 uint16)W/R
1052保持寄存器单个手指位置时间控制6bytes(3 uint16)W
1055保持寄存器单个手指位置速度控制6bytes(3 uint16)W
1058保持寄存器单个手指速度控制4Bytes(2 uint16)W
1060保持寄存器单个手指电流控制4Bytes(2 uint16)W
1062保持寄存器单个手指PWM控制4Bytes(2 uint16)W
1064保持寄存器LED设置2bytesW/R
1065保持寄存器Turbo模式2bytesW/R
1066保持寄存器Turbo模式时间参数4bytesW/R
1068保持寄存器位置自动校准2bytesW/R
1069保持寄存器位置校准2bytesW
1070保持寄存器快速位置控制模式6bytes(3 uint16)W
1098保持寄存器ACTION_CMD_ID2bytes(1 uint16)W
1099保持寄存器ACTION_STEP_NUMBER2bytes(1 uint16)W/R
1100保持寄存器ACTION_STEP_PARAMS54bytes(27 uint16)W/R
2000输入寄存器实际位置值12bytes(6 uint16)R
2006输入寄存器实际速度值12bytes(6 uint16)R
2012输入寄存器实际电流值12bytes(6 uint16)R
2018输入寄存器电机状态12bytes(6 uint16)R
2025输入寄存器按键状态2bytesR
3000输入寄存器FW Version20Bytes(10 uint16)R
3010输入寄存器SN20Bytes(10 uint16)R

触觉模块寄存器

电容式

地址类型描述长度属性
4000保持寄存器拇指触觉开关2ByteW/R
4001保持寄存器食指触觉开关2ByteW/R
4002保持寄存器中指触觉开关2ByteW/R
4003保持寄存器无名指触觉开关2ByteW/R
4004保持寄存器小指触觉开关2ByteW/R
4005保持寄存器拇指触觉复位2BytesW
4006保持寄存器食指触觉复位2BytesW
4007保持寄存器中指触觉复位2BytesW
4008保持寄存器无名指触觉复位2BytesW
4009保持寄存器小指触觉复位2BytesW
4010保持寄存器拇指触觉参数校准2BytesW
4011保持寄存器食指触觉参数校准2BytesW
4012保持寄存器中指触觉参数校准2BytesW
4013保持寄存器无名指触觉参数校准2BytesW
4014保持寄存器小指触觉参数校准2BytesW
4100输入寄存器拇指触觉版本20Bytes (10 uint16)R
4110输入寄存器食指触觉版本20Bytes (10 uint16)R
4120输入寄存器中指触觉版本20Bytes (10 uint16)R
4130输入寄存器无名指触觉版本20Bytes (10 uint16)R
4140输入寄存器小指触觉版本20Bytes (10 uint16)R
4200输入寄存器多手指三维力30Bytes (15 uin16)R
4215输入寄存器多手指接近值20Bytes (10 uint16)R
4225输入寄存器多手指触觉状态10Bytes (5 uint16)R
4250输入寄存器拇指三维力、接近值、触觉状态12 Bytes (6 uint16)R
4256输入寄存器食指三维力、接近值、触觉状态12 Bytes (6 uint16)R
4262输入寄存器中指三维力、接近值、触觉状态12 Bytes (6 uint16)R
4268输入寄存器无名指三维力、接近值、触觉状态12 Bytes (6 uint16)R
4274输入寄存器小指三维力、接近值、触觉状态12 Bytes (6 uint16)R
4300输入寄存器拇指触觉原始数据24 bytes (12 uint16)R
4312输入寄存器食指触觉原始数据24 bytes (12 uint16)R
4324输入寄存器中指触觉原始数据24 bytes (12 uint16)R
4336输入寄存器无名指触觉原始数据24 bytes (12 uint16)R
4348输入寄存器小指触觉原始数据24 bytes (12 uint16)R

压阻式

起始地址寄存器类型名称数据长度描述属性
6000保持寄存器触觉数据类型2Bytes0:原始值 1:标定值W/R
6005输入寄存器五指指合力10 Bytes5个手指,每点 2 字节R
6010输入寄存器拇指触觉数据18 Bytes9 点,每点 2 字节R
6019输入寄存器食指触觉数据18 Bytes9 点,每点 2 字节R
6028输入寄存器中指触觉数据18 Bytes9 点,每点 2 字节R
6037输入寄存器无名指触觉数据18 Bytes9 点,每点 2 字节R
6046输入寄存器小指触觉数据18 Bytes9 点,每点 2 字节R
6070输入寄存器拇指触觉固件版本10 Bytes固件版本字符串(vx.x.x)R
6080输入寄存器食指触觉固件版本10 Bytes固件版本字符串(vx.x.x)R
6090输入寄存器中指触觉固件版本10 Bytes固件版本字符串(vx.x.x)R
6100输入寄存器无名指触觉固件版本10 Bytes固件版本字符串(vx.x.x)R
6110输入寄存器小指触觉固件版本10 Bytes固件版本字符串(vx.x.x)R
6130保持寄存器拇指触觉开关2 Bytes0: 关闭;1: 开启W/R
6131保持寄存器食指触觉开关2 Bytes0: 关闭;1: 开启W/R
6132保持寄存器中指触觉开关2 Bytes0: 关闭;1: 开启W/R
6133保持寄存器无名指触觉开关2 Bytes0: 关闭;1: 开启W/R
6134保持寄存器小指触觉开关2 Bytes0: 关闭;1: 开启W/R

寄存器描述

进入OTA/900

设置进入OTA后,立即生效。进入OTA模式后通过升级协议进行传输镜像。传输完成后设备进入Bootloader状态进行固件的拷贝,拷贝完成后自动重启进入正常程序。

设置参数代表的意义
1进入OTA模式

左右手读取/901

为了区分 左右手,使用一个寄存器用于读取当前设备的手型信息。

寄存器地址用途
901左右手识别1:右手
2:左手

内部手势序列恢复默认值 /902

寄存器地址用途类型写入值功能说明
902内部6个手势恢复默认值W0x5A5A内部6个手势恢复默认值
  • 向寄存器 902 写入固定值 0x5A5A 可触发设备将所有内部手势序列恢复为出厂默认值。
  • 恢复默认手势后立即生效并保存,设备重启后依然保持默认手势配置。

恢复出厂设置寄存器 /903

寄存器地址用途类型写入值功能说明
903恢复出厂设置W0xA5A5恢复出厂设置
  • 向寄存器 903 写入固定值 0xA5A5 可触发设备恢复出厂设置。
  • 默认ID:左手 → 恢复为 0x7E(126);右手 → 恢复为 0x7F(127)
  • RS485 波特率:恢复为 460800 bps
  • CAN FD 波特率:恢复为 5 Mbps

手背灯开关 /904、蜂鸣器开关/905、震动马达开关/906

寄存器地址名称说明值范围默认值
904手背灯开关控制手背 LED 灯的开关0:关闭
1:开启
1
905蜂鸣器开关控制蜂鸣器是否发声0:关闭
1:开启
1
906震动马达开关控制震动马达是否启用(振动)0:关闭
1:开启
0

手指保护电流设置/930-935

寄存器地址用途对应手指单位范围默认值 (mA)
930拇指 FLEX 保护电流拇指尖部 (FLEX)mA100 ~ 1500500
931拇指 AUX 保护电流拇指根部 (AUX)mA100 ~ 1500500
932食指保护电流食指mA100 ~ 1500500
933中指保护电流中指mA100 ~ 1500500
934无名指保护电流无名指mA100 ~ 1500500
935小指保护电流小指mA100 ~ 1500500
  • 该寄存器可以进行 读写操作,用于读取和设置手指的电流保护阈值。
  • 写入保护电流时,超过范围会拒绝写入。
  • 写入的保护电流仅在当前运行期间生效,关机或重启自动恢复默认值。

拇指 AUX 锁定电流 /936

寄存器地址用途类型单位范围默认值
936拇指 AUX 锁定电流设置W/RmA100-500200
  • 拇指 AUX 无机械锁定,由于存在褶皱硅胶反弹力,需要使用电机电流维持锁定状态。

单位模式设置 /937

确定所有手指输入/输出数据的单位:

模式名称输入/输出格式
0归一化模式0-1000(无单位)
1物理单位模式角度(°)、速度(°/s)、电流(mA)
  • 模式说明:
模式位置范围速度范围电流输入范围说明
归一化模式0-1000
(映射到最小-最大位置)
0-1000
(映射到最大速度)
0-1000
(映射到最大电流)
适用于无单位控制,上位机无需关心具体硬件参数
物理单位模式角度 (°)角速度 (°/s)电流 (mA)适用于精确控制,可直接设定物理值

手指最大/最小值设置 /938-944

所有最大/最小位置、最大速度、最大电流的设置需要携带电机编号 + 目标值,每个设置占 2 个 bytes 寄存器。

** 寄存器起始地址 **参数类型数据格式
938手指最小位置 (°)[电机编号] [最小位置值]
940手指最大位置 (°)[电机编号] [最大位置值]
942手指最大速度 (°/s)[电机编号] [最大速度值]
944手指最大电流(mA)[电机编号] [最大电流值]
  • 各手指的默认值:
手指名称电机编号默认最小位置 (°)默认最大位置 (°)默认最大速度 (°/s)默认最大电流 (mA)
拇指尖部059°145°/s1000mA
拇指跟部190°150°/s1000mA
食指281°130°/s1000mA
中指381°130°/s1000mA
无名指481°130°/s1000mA
小指581°130°/s1000mA

说明:

  • 位置角度 最小最大值可修改,最小值默认是 0°,但可以动态调整。
  • 速度和电流的最小值是固定的 0,不可配置,最大值可动态调整。
  • 关机后,所有手指的 最大/最小位置、最大速度、最大电流都会恢复默认值

手指最大/最小值读取 /946-964

寄存器地址用途拇指尖拇指根食指中指无名指小指
946 - 951最小位置读取 (°)946947948949950951
952 - 957最大位置读取 (°)952953954955956957
958 - 963最大速度读取 (°/s)958959960961962963
964 - 969最大电流读取 (mA)964965966967968969

说明

  1. 最小/最大位置(°):用于读取手指的可运动范围,每个手指的最小和最大角度可以动态调整,但仅在开机后生效,关机后恢复默认值。
  2. 最大速度(°/s):用于读取手指的最大运动速度,可配置,但仅在开机后生效,关机后恢复默认值。
  3. 最大电流(mA):用于读取手指驱动电机的最大允许电流,可配置,但仅在开机后生效,关机后恢复默认值。

触觉厂商类型/970

地址名称读写类型说明
970触觉厂商类型R0:无触觉;1:电容式;2:压阻式

修改设备ID/1000

修改设备 ID。 可设置范围:1 - 254 。

设置ID后,立即生效,并保存到flash。

默认ID:左手默认ID为0x7e,右手默认ID为0x7f。

RS485 设备波特率/1001

RS485 设备波特率, 可以设置下面参数:

设置参数波特率
0115200
157600
219200
3460800
41000000
52000000
65000000

CANFD 设备波特率/1002

CANFD设备波特率可以设置下面参数

设置参数波特率
0100 kbps
1125 kbps
2200 kbps
3250kbps
4400kbps
5500kbps
6800kbps
71Mbps
82Mbps
94Mbps
105Mbps

CANFD 仲裁域采样点配置 /1003

CANFD 仲裁域采样点可以设置下面参数

设置参数波特率/采样点
01000 kbps 75%采样点
11000 kbps 80%采样点

** 重启/1009**

设置 **重启/1009 **寄存器,灵巧手会重启。

多个手指位置时间控制/1010

每个机械手包含 6 个电机,其中大拇指由 2 个电机驱动。下表列出了寄存器与各手指电机的对应关系。
位置寄存器的取值可为归一化范围 0~1000,或为实际位置范围(单位:°)。为了实现 0.1° 的控制精度,位置值统一放大 10 倍后下发(即 1 表示 0.1°)。其中,0 表示完全张开,1000 表示完全闭合。
期望时间寄存器的取值范围为 1~2000,单位为毫秒(ms)。当设定的期望时间小于电机允许的最快执行时间时,电机将以最快速度运行。

手指寄存器地址寄存器值
大拇指Flex位置寄存器 10100 - 1000或
最小-最大位置(°)
期望时间寄存器10111-2000
大拇指Aux位置寄存器 10120 - 1000或
最小-最大位置(°)
期望时间寄存器10131-2000
食指
位置寄存器 10140 - 1000或
最小-最大位置(°)
期望时间寄存器10151-2000
中指位置寄存器 10160 - 1000或
最小-最大位置(°)
期望时间寄存器10171-2000
无名指
位置寄存器 10180 - 1000或
最小-最大位置(°)
期望时间寄存器10191-2000
小指
位置寄存器 10200 - 1000或
最小-最大位置(°)
期望时间寄存器10211-2000

多个手指位置速度控制/1022

每个机械手包含 6 个电机,其中大拇指由 2 个电机驱动。下表列出了寄存器与各手指电机的对应关系。

位置寄存器的取值可为归一化范围 0~1000,或为实际角度范围(单位:°)。为实现 0.1° 的控制精度,位置值统一放大 10 倍后下发(即 1 表示 0.1°)。其中,0 表示完全张开,1000 表示完全闭合。

期望速度寄存器的取值可为归一化范围 1~1000,或为实际角速度范围(单位:°/s),用于控制手指的转动速度。当设定的期望速度超过电机的最大速度时,电机会以最大速度运行。

手指寄存器地址寄存器值
大拇指Flex位置寄存器 10220 - 1000或
最小-最大位置(°)
期望速度寄存器10231 - 1000或
期望速度(1-最大速度°/s)
大拇指Aux位置寄存器 10240 - 1000或
最小-最大位置(°)
期望速度寄存器10251 - 1000或
期望速度(1-最大速度°/s)
食指
位置寄存器 10260 - 1000或
最小-最大位置(°)
期望速度寄存器10271 - 1000或
期望速度(1-最大速度°/s)
中指位置寄存器 10280 - 1000或
最小-最大位置(°)
期望速度寄存器10291 - 1000或
期望速度(1-最大速度°/s)
无名指
位置寄存器 10300 - 1000或
最小-最大位置(°)
期望速度寄存器10311 - 1000或
期望速度(1-最大速度°/s)
小指
位置寄存器 10320 - 1000或
最小-最大位置(°)
期望速度寄存器10331 - 1000或
期望速度(1-最大速度°/s)

多个手指速度控制/1034

归一化模式设置范围为-1000-1000,物理单位模式范围(-最大速度-最大速度)其中符号表示方向,正表示为握紧方向,负表示为松开方向,物理单位模式速度值单位:°/s

寄存器地址手指寄存器值
1034大拇指Flex-1000- 1000或
期望速度(-最大速度-最大速度°/s)
1035大拇指Aux-1000 - 1000或
期望速度(-最大速度-最大速度°/s)
1036食指-1000 - 1000或
期望速度(-最大速度-最大速度°/s)
1037中指-1000 - 1000或
期望速度(-最大速度-最大速度°/s)
1038无名指-1000 - 1000或
期望速度(-最大速度-最大速度°/s)
1039小指-1000 - 1000或
期望速度(-最大速度-最大速度°/s)

多个手指电流控制/1040

归一化模式设置范围为-1000-1000,物理单位模式范围(-最大电流-最大电流)其中符号表示方向,正表示为握紧方向,负表示为松开方向,物理单位模式电流值单位:mA

寄存器地址手指寄存器值
1040大拇指Flex-1000 - 1000或
期待电流(-最大电流-最大电流)
1041大拇指Aux-1000 - 1000或
期待电流(-最大电流-最大电流)
1042食指-1000 - 1000或
期待电流(-最大电流-最大电流)
1043中指-1000 - 1000或
期待电流(-最大电流-最大电流)
1044无名指-1000 - 1000或
期待电流(-最大电流-最大电流)
1045小指-1000 - 1000或
期待电流(-最大电流-最大电流)

多个手指pwm控制/1046

手指pwm控制,其中符号表示方向,正表示为握紧方向,负表示为松开方向。

寄存器地址手指寄存器值
1046大拇指Flex-1000 - 1000
1047大拇指Aux-1000 - 1000
1048食指-1000 - 1000
1049中指-1000 - 1000
1050无名指-1000 - 1000
1051小指-1000 - 1000

单个手指位置时间控制/1052

为了实现 0.1° 的控制精度,在物理量模式下,位置值统一放大 10 倍后下发(即 1 表示 0.1°)

寄存器地址寄存器名称寄存器值
1052手指编号0-5
1053位置1-1000或
最小-最大位置(°)
1054期待时间1- 2000

单个手指位置速度控制/1055

为了实现 0.1° 的控制精度,在物理量模式下,位置值统一放大 10 倍后下发(即 1 表示 0.1°)

寄存器地址寄存器名称寄存器值
1055手指编号0-5
1056位置0-1000或
最小-最大位置(°)
1057期待速度(°/s)1 - 1000或
期望速度(1-最大速度°/s)

单个手指速度控制/1058

寄存器地址寄存器名称寄存器值
1058手指编号0-5
1059速度-1000 - 1000或
期望速度(-最大速度-最大速度°/s)

单个手指电流控制/1060

寄存器地址寄存器名称寄存器值
1060手指编号0-5
1061电流-1000 - 1000或
期待电流(-最大电流-最大电流mA)

单个手指pwm控制/1062

寄存器地址寄存器名称寄存器值
1062手指编号0-5
1063PWM-1000-1000

LED控制/1064

寄存器值

c
uint8_t led_mode = 1;
uint8_t led_color = 2;
uint16_t register_value = ((uint16_t)led_mode << 8) + led_color;
LED MODE描述寄存器值
1LED_MODE_SHUTDOWN1
2LED_MODE_KEEP2
3LED_MODE_BLINK3
4LED_MODE_ONE_SHOT4
5LED_MODE_BLINK0_5HZ5
6LED_MODE_BLINK2HZ6
LED COLOR描述寄存器值
1LED_COLOR_R1
2LED_COLOR_G2
3LED_COLOR_RG3
4LED_COLOR_B4
5LED_COLOR_RB5
6LED_COLOR_GB6
7LED_COLOR_RGB7

Turbo模式/1065

Turbo模式掉电后恢复成默认关闭状态。

寄存器值描述
0关闭
1开启

Turbo模式时间参数/1066

Turbo模式基于堵转功能来实现的,在堵转后电机停止运动一段时间(堵转时间), 转成继续运动时间,周期性执行停止和继续运动。

寄存器地址描述
1066堵转时间,不运动,单位ms,默认为500ms
1067继续运动时间,单位ms,默认为500ms

位置自动校准/1068

位置自动校准保持寄存器, 用于开启或关闭灵巧手在上电后自动执行位置校准。位置校准是指上电后,灵巧手查找手指起始位置的过程, 在此期间所有的手指都会被打开。

该寄存器的有效值为 10, 其中 1是开启位置自动校准, 为默认状态;0是关闭位置自动校准。

当位置自动校准关闭时,用户需要进行手动位置校准。手动位置校准有两种方式, 通过 位置校准 (1069)保持寄存器,或者在上电后短按手背灯按键。

Note1: 在位置校准的过程中,如果灵巧手有抓握物体,则可能存在跌落的风险。

Note2: 在灵巧手上电后,必须执行一次位置校准,才能正常控制。

位置校准/1069

位置校准保持寄存器, 该指令仅在位置自动校准(1068) 关闭的情况下有效。

该寄存器的有效值为 1 ,即开始位置校准。

快速位置控制模式/1070-1072

快速控制模式是一种简化输入的高响应模式,通过设置 百分比位置值(0-100) 实现快速手指控制。

寄存器地址字节偏移对应手指控制参数说明
1070byte0拇指根(Aux)百分比位置 (0-100)使用最大速度进行位置控制
1070byte1拇指尖(Flex)百分比位置 (0-100)使用最大速度进行位置控制
1071byte0食指百分比位置 (0-100)使用最大速度进行位置控制
1071byte1中指百分比位置 (0-100)使用最大速度进行位置控制
1072byte0无名指百分比位置 (0-100)使用最大速度进行位置控制
1072byte1小指百分比位置 (0-100)使用最大速度进行位置控制
  • 写入应一次性完成 3 个寄存器(1070~1072),即 6 个字节。
  • 百分比位置表示相对于该手指最小/最大位置范围的归一化值:
    0 表示最小位置,100 表示最大位置。
  • 最终目标角度 = 最小位置 + 百分比 * (最大位置 - 最小位置) / 100

动作序列ACTION_CMD_ID/1098

包含命令和动作序列Index。 动作序列

c
uint8_t cmd = 1;
uint8_t id = 2;
uint16_tregister_value = ((uint16_t)cmd << 8) + id;
CMD描述
1SET_START
2SET_FINISH
3READ_START
4READ_FINISH
5SAVE
6RUN
Action ID描述
1内置张开动作W/R
2内置握拳动作W/R
3内置两指捏动作W/R
4内置三指捏动作W/R
5内置侧边捏动作W/R
6内置单指点动作W/R
7动作序列1W/R
8动作序列2W/R
9动作序列3W/R
10动作序列4W/R
11动作序列5W/R
12动作序列6W/R
............W/R
30动作序列24W/R

动作步骤数量寄存器/1099

可读可写,表示该动作中包含的步骤数量。最多8个。

动作步骤参数寄存器/1100

可读可写,表示动作步骤中顺序,时间和位置速度力量参数,其中位置为手指位置(°),位置设置为-1时候表示手指保持原来角度,速度为手指转动速度(°/s),

寄存器地址寄存器名称描述
1100index表示action 顺序,范围0-8W/R
1101duration_ms运行时间W/R
1102ctrl type位置时间控制:1
位置速度控制:2
电流控制:3
速度控制:4
W/R
1103positions[0]大拇指Flex 位置值W/R
1104positions[1]大拇指Aux 位置值W/R
1105positions[2]食指 位置值W/R
1106positions[3]中指 位置值W/R
1107positions[4]无名指 位置值W/R
1108positions[5]小指 位置值W/R
1109expect_interval[0]大拇指Flex位置控制运动时间W/R
1110expect_interval[1]大拇指Aux位置控制运动时间W/R
1111expect_interval[2]食指位置控制运动时间W/R
1112expect_interval[3]中指位置控制运动时间W/R
1113expect_interval[4]无名指位置控制运动时间W/R
1114expect_interval[5]小指位置控制运动时间W/R
1115speed[0]W/R
1116speed[1]W/R
1117speed[2]W/R
1118speed[3]W/R
1119speed[4]W/R
1120speed[5]W/R
1121force[0]
1122force[1]
1123force[2]
1124force[3]
1125force[4]
1126force[5]

写入动作序列

img

读取动作序列

img

实际位置值/2000

为了实现 0.1° 的控制精度,在物理量模式下,位置值统一放大 10 倍后上报(即 1 表示 0.1°)

寄存器地址手指寄存器值
2000大拇指Flex0 - 1000或
实际角度(°)
2001大拇指Aux0 - 1000或
实际角度(°)
2002食指0 - 1000或
实际角度(°)
2003中指0 - 1000或
实际角度(°)
2004无名指0 - 1000或
实际角度(°)
2005小指0 - 1000或
实际角度(°)

实际速度值/2006

速度值表示速度大小,符号表示电机手指运动方向。

寄存器地址手指寄存器值
2006大拇指Flex-1000-1000或
实际速度(°/s)
2007大拇指Aux-1000-1000或
实际速度(°/s)
2008食指-1000-1000或
实际速度(°/s)
2009中指-1000-1000或
实际速度(°/s)
2010无名指-1000-1000或
实际速度(°/s)
2011小指-1000-1000或
实际速度(°/s)

实际电流值/2012

电流值表示电流大小,符号表示电机手指运动方向。

寄存器地址手指寄存器值
2012大拇指Flex-1000-1000或
实际电流值(mA)
2013大拇指Aux-1000-1000或
实际电流值(mA)
2014食指-1000-1000或
实际电流值(mA)
2015中指-1000-1000或
实际电流值(mA)
2016无名指-1000-1000或
实际电流值(mA)
2017小指-1000-1000或
实际电流值(mA)

电机状态/2018

寄存器地址手指寄存器值
2018大拇指Flex0 - 3
2019大拇指Aux0 - 3
2020食指0 - 3
2021中指0 - 3
2022无名指0 - 3
2023小指0 - 3
寄存器值描述
0马达空闲
1马达运行
2马达堵转
3turbo

按键状态/2025

读取按键状态。 0 表示没按下,1表示按下。

FW Version/3000

读取固件版本,10个寄存器,最大长度为20的字符串。

字符串采用大端转换到多个uint16_t寄存器。

大端uint16_tChar字符串
0x302E, 0x302E, 0x342E, 0x530030 2E 30 2E 34 2E 53 000.0.4.S

SN/3010

读取SN版本,10个寄存器,最大长度为20的字符串。

字符串采用大端转换到多个uint16_t寄存器。

大端uint16_tChar字符串
0x534E, 0x3132, 0x3334, 0x3738, 0x3930, 0x3132, 0x3334, 0x350053 4E 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 00SN123456789012345

触觉寄存器描述-电容式

电容式触觉手的指尖存在触觉传感器。由于每个手指的结构存在差异,使得手指的布置稍有不同, 但是每个手指的数据都是由6个通道采集,分别输出一组三维力与接近力。

配置寄存器(地址范围:4000–4014)

地址范围功能说明数据宽度读写说明
4000 拇指
4001 食指
4002 中指
4003 无名指
4004 小指
触觉开关配置2BytesR/W0:关闭;
1:开启
4005 拇指
4006 食指
4007 中指
4008 无名指
4009 小指
触觉通道复位命令2BytesW写1值触发复位
4010 拇指
4011 食指
4012 中指
4013 无名指
4014 小指
参数校准触发2BytesW写1触发手指参数校准
  • 触觉开关: 触觉开关支持单独开启/关闭手指的触觉功能。支持读取操作, 写 1 表示打开对应手指的触觉, 0 表示关闭对应手指的触觉。 读取到 1 表示触觉通道为开启状态, 0 表示触觉通道处于关闭状态。

  • 通道复位: 通道复位寄存器接受输入值 1 ,用于触发传感器采集通道复位指令。在执行该指令时,手指传感器尽量不要受力。

  • 参数校准 参数校准寄存器接受输入值 1 ,用于触发参数校准指令。 当空闲状态下的三维力数值不为 0 时,可通过该寄存器进行校准。该指令的执行时间较长,期间的数据无法作为参考。建议忽略在该参数校准寄存器设置后十秒内的数据。在执行该指令时,手指传感器不能受力,否则将导致校准后的传感器数据异常。

触觉固件版本信息(地址范围:4100–4140)

地址对应手指数据宽度读写说明
4100拇指20 Bytes(10 uint16)R固件编译日期字符串
4110食指20 Bytes(10 uint16)R固件编译日期字符串
4120中指20 Bytes(10 uint16)R固件编译日期字符串
4130无名指20 Bytes(10 uint16)R固件编译日期字符串
4140小指20 Bytes(10 uint16)R固件编译日期字符串
  • 触觉固件版本信息 版本寄存器用于获取触觉传感器版本,长度为 10 个寄存器,字符串采用大端转换到多个uint16_t寄存器。

五指三维力 / 接近 / 触觉状态(地址范围:4200–4229)

地址范围数据类型每指大小总大小顺序说明
4200–4214三维力数据6 Bytes30 Bytes拇指→小指法向力2B +
切向力2B +
方向角2B
4215–4224接近值4 Bytes20 Bytes拇指→小指
4225–4229触觉状态2 Bytes10 Bytes拇指→小指
  • 法向力,切向力是 16 位的无符号数据。数值单位是 100 * N, 例如切向力 1000 表示 1000 / 100 N, 即 10 N。法向力,切向力的测量范围是 0 ~ 25 N。
  • 切向力方向是 16 位的无符号数据。单位是角度,数值范围为 0 ~ 359 度。靠近指尖的方向为 0 度,按顺时针旋转最大到 359 度,当数值为 65535 (0xFFFF) 时,表示切向力方向无效。
  • 接近值是 32 位的无符号数据。
  • 触觉状态寄存器为 16 位,分高低字节表示不同状态信息: 低 8 位表示整体数据状态:0 表示数据正常,1 表示数据异常,2 表示与触觉传感器通信异常。 高 8 位为数据异常志位:
    1. Bit0 表示原始值错误,
    2. Bit1 表示原始值长时间未更新,
    3. Bit2 表示触发超时。 由于 Modbus-RTU 协议的限制,对于 32 位的数据,需要读取两个寄存器才能得到完整数据。同时需要将读到的数据做一次大小端转换,例如读到的是 0x4433,0x2211, 以大端模式转换为数组 [0x44, 0x33, 0x22, 0x11];然后再以小端模式理解,即 0x11223344。

单指数据读取(地址范围:4250–4278)

地址功能类型数据格式数据宽度
4250拇指三维力
接近值
触觉状态
法向力(2B) +
切向力(2B) +
方向角(2B)+
接近值(4B)+
状态值(2B)
6uint16
4256食指三维力
接近值
触觉状态
法向力(2B) +
切向力(2B) +
方向角(2B)+
接近值(4B)+
状态值(2B)
6 uint16
4262中指三维力
接近值
触觉状态
法向力(2B) +
切向力(2B) +
方向角(2B)+
接近值(4B)+
状态值(2B)
6 uint16
4268无名指三维力
接近值
触觉状态
法向力(2B) +
切向力(2B) +
方向角(2B)+
接近值(4B)+
状态值(2B)
6 uint16
4274小指三维力
接近值
触觉状态
法向力(2B) +
切向力(2B) +
方向角(2B)+
接近值(4B)+
状态值(2B)
6 uint16

五指触觉原始通道值读取(地址范围:4300–4359)

地址对应手指通道数每通道字节总字节数说明
4300–4311拇指64 Bytes24 Bytes每通道 4 字节原始值
4312–4323食指64 Bytes24 Bytes每通道 4 字节原始值
4324–4335中指64 Bytes24 Bytes每通道 4 字节原始值
4336–4347无名指64 Bytes24 Bytes每通道 4 字节原始值
4348–4359小指64 Bytes24 Bytes每通道 4 字节原始值

触觉通道值为 32 位的无符号数据。

触觉寄存器描述-压阻式

压阻式传感器在每个手指具备 9 个采样点,采样点沿指尖到指根方向分布,能够较为全面地感知手指尖表面的触觉反馈。

  • 每个采样点数据大小:2 字节(16 位)
  • 数据类型
    原始值:ADC 采集值,适用于调试与内部校准;
    标定值:转换为物理量后的压力值,单位为 g(克力)。
  • 数据类型选择可通过保持寄存器设置(0:原始值;1:g值(默认))。
  • 支持的手指:拇指、食指、中指、无名指、小指
  • 为便于快速获取手指整体受力情况,增加以下输入寄存器用于读取 5 指合力(原始值/标定值):
寄存器地址手指描述
6001拇指9 点合力
6002食指9 点合力
6003中指9 点合力
6004无名指9 点合力
6005小指9 点合力

用户可通过寄存器读取每个手指的 9 点压力值,并获取固件版本字符串信息(10 字节)。配合触觉数据开关寄存器控制可启停模块,节省资源。