Skip to content

Revo 2 dexterous hand Communication Protocol Design

Revo 2 Touch Edition dexterous hand supports 3 types of external communication interfaces.:RS485、CAN FD、EtherCAT(Click here to learn about the EC protocol description.)Design a protocol compatible with both 485 and CAN FD communication interfaces, ensuring high efficiency, reliability, and scalability of communication based on compatibility with different communication protocols.

Communication Interface Features

RS485 Features

  • Communication speed:Up to 10 Mbps, commonly used rate is 9600 bps~1 Mbps。
  • Frame length: Supports variable-length frames, with the maximum frame length constrained by the specific application.
  • Verification method:The software needs to implement CRC16 or checksum verification methods to adapt to complex electromagnetic environments.
  • Communication mode:Half-duplex communication requires a collision detection mechanism.
  • Reliability:Strong anti-interference ability, suitable for long-distance communication.

CAN FD Features

  • Communication speed:The data segment rate can reach 5 Mbps, while the header maintains the traditional CAN speed.
  • Frame length:Supports up to 64-byte data segments, extending CAN's data payload capability.
  • Verification method:Hardware built-in verification, no software implementation required.
  • Communication mode:Compatible with traditional CAN communication devices.

Compatibility Protocol Design

Modbus-RTU Protocol is a master-slave request-response communication protocol, widely used in industrial automation systems. The protocol frame includes an address, function code, data field, and CRC check to ensure the reliability of communication.

Data frame format

Header/Device IDFunction CodeDataCRC16
1byte1byten bytes2 Bytes

Header/Device ID: Device identifier, used to distinguish between different devices. Function Code: Function code, indicating the type of operation requested. Data: Data field, containing the data for the specific operation. CRC16: CRC check, used to verify the integrity of the data.

RS485Compatible Modbus RTU:

RS485 does not define a specific communication protocol itself, but is usually used in conjunction with the Modbus RTU protocol and is widely used for data transmission in industrial automation and monitoring systems.

CANFD Compatible Modbus RTU:

Canfd uses extended frames, and the arbitration frame baud rate is fixed at 1 MbThe data field in the CAN FD protocol can include the Device ID, master ID, and data length in the frame ID, and the data field contains the entire Modbus RTU format.

Host sends frame:

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

Device response frame

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

Function code

The function code is used to identify the type of operation requested. Each function code corresponds to a specific operation and is mainly used to read data from the device, write data, or perform other control tasks.

Function CodeDescription
03HRead Holding Registers
06HWrite Single Holding Register
10HWrite Multiple Holding Registers
04HRead Input Registers

Registers

Hand Registers (Control Type)

AddressTypeDescriptionLengthProperties
900Holding RegisterEntry OTA2 bytesW
901Holding RegisterLeft/Right Hand Read2 bytesR
902Holding RegisterInternal Gesture Restore Default2 bytesW
903Holding RegisterRestore Factory Settings2 bytesW
904Holding RegisterBackhand Light Switch2 bytesW/R
905Holding RegisterBuzzer Switch2 bytesW/R
906Holding RegisterVibration Motor Switch2 bytesW/R
910Holding RegisterFactory KEY20Bytes(10 uint16)W/R
920Holding RegisterSN20Bytes(10 uint16)W/R
930Holding RegisterThumb Flex Protection Current2 bytesW/R
931Holding RegisterThumb Aux Protection Current2 bytesW/R
932Holding RegisterIndex Finger Protection Current2 bytesW/R
933Holding RegisterMiddle Finger Protection Current2 bytesW/R
934Holding RegisterRing Finger Protection Current2 bytesW/R
935Holding RegisterLittle Finger Protection Current2 bytesW/R
936Holding RegisterThumb Aux Lock Current2 bytesW/R
937Holding RegisterUnit Mode Setting2 bytesW/R
938Holding RegisterFinger Minimum Position Setting4 bytesW
940Holding RegisterFinger Maximum Position Setting4 bytesW
942Holding RegisterFinger Maximum Speed Setting4 bytesW
944Holding RegisterFinger Maximum Current Setting4 bytesW
946Holding RegisterFinger Minimum Position Reading12 bytesR
952Holding RegisterFinger Maximum Position Reading12 bytesR
958Holding RegisterFinger Maximum Speed Reading12 bytesR
964Holding RegisterFinger Maximum Current Reading12 bytesR
970Holding RegisterTactile Manufacturer2 bytesR
1000Holding RegisterDevice ID2 bytesW/R
1001Holding RegisterRS485 Baud Rate2 bytesW/R
1002Holding RegisterCANFD Baud Rate2 bytesW/R
1003Holding RegisterCANFD arbitration field sample point configuration2bytesW/R
1009Holding RegisterStore Data/Restart2 bytesW/R
1010Holding RegisterMulti-Finger Position Time Control24 bytes (12 uint16)W/R
1022Holding RegisterMulti-Finger Position Speed Control24 bytes (12 uint16)W/R
1034Holding RegisterMulti-Finger Speed Control12 bytes (6 uint16)W/R
1040Holding RegisterMulti-Finger Current Control12 bytes (6 uint16)W/R
1046Holding RegisterMulti-Finger PWM Control12 bytes (6 uint16)W/R
1052Holding RegisterSingle Finger Position Time Control6 bytes (3 uint16)W
1055Holding RegisterSingle Finger Position Speed Control6 bytes (3 uint16)W
1058Holding RegisterSingle Finger Speed Control4 Bytes (2 uint16)W
1060Holding RegisterSingle Finger Current Control4 Bytes (2 uint16)W
1062Holding RegisterSingle Finger PWM Control4 Bytes (2 uint16)W
1064Holding RegisterLED Settings2 bytesW/R
1065Holding RegisterTurbo Mode2 bytesW/R
1066Holding RegisterTurbo Mode Time Parameters4 bytesW/R
1068Holding RegisterPosition Auto-Calibration2 bytesW/R
1069Holding RegisterPosition Calibration2 bytesW
1070Holding RegisterFast Position Control Mode6 bytes (3 uint16)W
1098Holding RegisterACTION_CMD_ID2bytes(1 uint16)W
1099Holding RegisterACTION_STEP_NUMBER2bytes(1 uint16)W/R
1100Holding RegisterACTION_STEP_PARAMS54bytes(27 uint16)W/R
2000Input RegisterActual Position Value12 bytes (6 uint16)R
2006Input RegisterActual Speed Value12 bytes (6 uint16)R
2012Input RegisterActual Current Value12 bytes (6 uint16)R
2018Input RegisterMotor Status12 bytes (6 uint16)R
2025Input RegisterButton Status2 bytesR
3000Input RegisterFW Version20 bytes (10 uint16)R
3010Input RegisterSN20 bytes (10 uint16)R

Tactile Module Register

Capacitive

AddressTypeDescriptionLengthProperty
4000Holding RegisterThumb Tactile Switch2ByteW/R
4001Holding RegisterIndex Finger Tactile Switch2ByteW/R
4002Holding RegisterMiddle Finger Tactile Switch2ByteW/R
4003Holding RegisterRing Finger Tactile Switch2ByteW/R
4004Holding RegisterLittle Finger Tactile Switch2ByteW/R
4005Holding RegisterThumb Haptic Reset2 bytesw
4006Holding RegisterIndex Finger Haptic Reset2 bytesw
4007Holding RegisterMiddle Finger Haptic Reset2 bytesw
4008Holding RegisterRing Finger Haptic Reset2 bytesw
4009Holding RegisterLittle Finger Haptic Reset2 bytesw
4010Holding RegisterThumb Haptic Parameter Calibration2 bytesw
4011Holding RegisterIndex Finger Haptic Parameter Calibration2 bytesw
4012Holding RegisterMiddle Finger Haptic Parameter Calibration2 bytesw
4013Holding RegisterRing Finger Haptic Parameter Calibration2 bytesw
4014Holding RegisterLittle Finger Haptic Parameter Calibration2 bytesw
4100Input RegisterThumb Tactile Version20 Bytes (10 uint16)R
4110Input RegisterIndex Finger Tactile Version20 Bytes (10 uint16)R
4120Input RegisterMiddle Finger Tactile Version20 Bytes (10 uint16)R
4130Input RegisterRing Finger Tactile Version20 Bytes (10 uint16)R
4140Input RegisterLittle Finger Tactile Version20 Bytes (10 uint16)R
4200Input RegisterMulti-finger 3D Force30 Bytes (15 uint16)R
4215Input RegisterMulti-finger Proximity Value20 Bytes (10 uint16)R
4225Input RegisterMulti-finger Tactile Status10 Bytes (5 uint16)R
4250Input RegisterThumb 3D Force, Proximity Value, Tactile Status12 Bytes (6 uint16)R
4256Input RegisterIndex Finger 3D Force, Proximity Value, Tactile Status12 Bytes (6 uint16)R
4262Input RegisterMiddle Finger 3D Force, Proximity Value, Tactile Status12 Bytes (6 uint16)R
4268Input RegisterRing Finger 3D Force, Proximity Value, Tactile Status12 Bytes (6 uint16)R
4274Input RegisterLittle Finger 3D Force, Proximity Value, Tactile Status12 Bytes (6 uint16)R
4300Input RegisterThumb Tactile Raw Data24 bytes (12 uint16)R
4312Input RegisterIndex Finger Tactile Raw Data24 bytes (12 uint16)R
4324Input RegisterMiddle Finger Tactile Raw Data24 bytes (12 uint16)R
4336Input RegisterRing Finger Tactile Raw Data24 bytes (12 uint16)R
4348Input RegisterLittle Finger Tactile Raw Data24 bytes (12 uint16)R

Pressure Sensing

Starting AddressRegister TypeNameData LengthDescriptionAttributes
6000Holding RegisterTactile Data Type2 Bytes0: Raw Value 1: Calibrated ValueW/R
6005Input RegisterFive-Finger Combined Force10 Bytes5 fingers, 2 bytes per pointR
6010Input RegisterThumb Tactile Data18 Bytes9 points, 2 bytes per pointR
6019Input RegisterIndex Finger Tactile Data18 Bytes9 points, 2 bytes per pointR
6028Input RegisterMiddle Finger Tactile Data18 Bytes9 points, 2 bytes per pointR
6037Input RegisterRing Finger Tactile Data18 Bytes9 points, 2 bytes per pointR
6046Input RegisterLittle Finger Tactile Data18 Bytes9 points, 2 bytes per pointR
6070Input RegisterThumb Haptic Firmware Version10 BytesFirmware version string (vx.x.x)R
6080Input RegisterIndex Finger Haptic Firmware Version10 BytesFirmware version string (vx.x.x)R
6090Input RegisterMiddle Finger Haptic Firmware Version10 BytesFirmware version string (vx.x.x)R
6100Input RegisterRing Finger Haptic Firmware Version10 BytesFirmware version string (vx.x.x)R
6110Input RegisterLittle Finger Haptic Firmware Version10 BytesFirmware version string (vx.x.x)R
6130Holding RegisterThumb Haptic Switch2 Bytes0: Off; 1: OnW/R
6131Holding RegisterIndex Finger Haptic Switch2 Bytes0: Off; 1: OnW/R
6132Holding RegisterMiddle Finger Haptic Switch2 Bytes0: Off; 1: OnW/R
6133Holding RegisterRing Finger Haptic Switch2 Bytes0: Off; 1: OnW/R
6134Holding RegisterLittle Finger Haptic Switch2 Bytes0: Off; 1: OnW/R

Register Description

Enter OTA/900

The settings take effect immediately after entering OTA.After entering OTA mode, pass throughUpgrade Agreement perform transmission mirroring.After the transmission is completed, the device enters bootloader mode to copy the firmware. Once the copy is finished, it automatically restarts and enters the normal program.

Parameter SettingMeaning
1Enter OTA mode

Left and Right Hand Reading / 901

To distinguish left and right hands, a register is used to read the current device's hand information.

Register AddressPurposeValue
901Hand Recognition1: Right Hand
2: Left Hand

Restore Default Values for Internal Gesture Sequence /902

Register AddressPurposeTypeWrite ValueFunction Description
902Restore default values for 6 internal gesturesW0x5A5ARestore default values for 6 internal gestures
  • Writing the fixed value 0x5A5A to register 902 can trigger the device to restore all internal gesture sequences to factory default values.
  • Changes take effect and are saved immediately after restoring default gestures, and the default gesture configuration remains even after the device is restarted.

Factory Reset Register /903

Register AddressPurposeTypeWrite ValueFunction Description
903Factory ResetW0xA5A5Performs factory reset
  • Writing the fixed value 0xA5A5 to register 903 can trigger the device to restore factory settings.
  • Default ID:Left hand → Reset to 0x7E(126);Right hand → Reset to 0x7F(127)
  • RS485 Baud rate: Reset to 460800 bps.
  • CAN FD Baud rate: Reset to 5 Mbps.

Backlight Switch /904, Buzzer Switch /905, Vibration Motor Switch /906

Register AddressNameDescriptionValue RangeDefault
904Backlight SwitchControls the back LED light on the hand0: Off
1: On
1
905Buzzer SwitchControls whether the buzzer sounds0: Off
1: On
1
906Vibration Motor SwitchControls whether the vibration motor is enabled (vibration)0: Off
1: On
0

Finger Protection Current Settings / 930-935

Register AddressPurposeCorresponding FingerUnitRangeDefault Value (mA)
930Thumb FLEX Protection CurrentThumb Tip (FLEX)mA100 ~ 1500500
931Thumb AUX Protection CurrentThumb Base (AUX)mA100 ~ 1500500
932Index Finger Protection CurrentIndex FingermA100 ~ 1500500
933Middle Finger Protection CurrentMiddle FingermA100 ~ 1500500
934Ring Finger Protection CurrentRing FingermA100 ~ 1500500
935Little Finger Protection CurrentLittle FingermA100 ~ 1500500
  • This register can perform read and write operations, and is used to read and set the current protection threshold for the fingers.
  • When writing the protection current, writing will be rejected if it exceeds the range.
  • The written protection current is only effective during the current operation; it will automatically revert to the default value upon shutdown or restart.

Thumb AUX lock current /936

Register AddressPurposeTypeUnitRangeDefault Value
936Thumb AUX Lock Current SettingW/RmA100-500200
  • The thumb AUX has no mechanical locking. Due to the rebound force of the wrinkled silicone, it is necessary to maintain the locking state using motor current.

Unit Mode Settings /937

Determine the units of input/output data for all fingers:

ValueMode NameInput/Output Format
0Normalized Mode0-1000 (no unit)
1Physical Unit ModeAngle (°), Speed (°/s), Current (mA)
  • Mode Description:
ModePosition RangeSpeed RangeCurrent Input RangeDescription
Normalized Mode0-1000
(mapped to min-max position)
0-1000
(mapped to max speed)
0-1000
(mapped to max current)
Applicable for unitless control, where the master station does not need to care about specific hardware parameters
Physical Units ModeAngle (°)Angular Speed (°/s)Current (mA)Applicable for precise control, where physical values can be set directly

Finger maximum/minimum value settings /938-944

All settings for maximum/minimum positions, maximum speed, and maximum current need carry Motor number + Target value,Each setting occupies 2 bytes of registers.

** Starting address of the register **Parameter typeData format
938Finger Minimum Position (°)[Motor number] [Minimum position value]
940Finger Maximum Position (°)[Motor number] [Maximum position value]
942Finger Maximum Speed (°/s)[Motor number] [Maximum speed value]
944Finger Maximum Current (mA)[Motor number] [Maximum current value]
  • Default values for each finger:
Finger NameMotor NumberDefault Minimum Position (°)Default Maximum Position (°)Default Maximum Speed (°/s)Default Maximum Current (mA)
Thumb Flex059°145°/s1000mA
Thumb Aux190°150°/s1000mA
Index281°130°/s1000mA
Middle381°130°/s1000mA
Ring481°130°/s1000mA
Pinky581°130°/s1000mA

Description:

  • Position angle The minimum and maximum values can be modified.,The default minimum value is 0°, but it can be adjusted dynamically.
  • The minimum values of speed and current are fixed at 0, non-configurable, while the maximum values can be dynamically adjusted.
  • After shutting down, all fingers’s Maximum/minimum position, maximum speed, and maximum current will all restore to default values.

Finger Max/Min Value Readings /946-964

Register AddressPurposeThumb TipThumb BaseIndex FingerMiddle FingerRing FingerLittle Finger
946 - 951Minimum Position Readings (°)946947948949950951
952 - 957Maximum Position Readings (°)952953954955956957
958 - 963Maximum Speed Readings (°/s)958959960961962963
964 - 969Maximum Current Readings (mA)964965966967968969

Description

  1. Minimum/Maximum Position (°): Used to read the range of motion for each finger, where the minimum and maximum angles for each finger can be dynamically adjusted, but take effect only after powering on; they revert to default values after powering off.
  2. Maximum Speed (°/s): Used to read the maximum speed of finger movement, which is configurable, but takes effect only after powering on; it reverts to default values after powering off.
  3. Maximum Current (mA): Used to read the maximum allowable current for the finger drive motor, which is configurable, but takes effect only after powering on; it reverts to default values after powering off.

Haptic Vendor Type / 970

AddressNameRead/Write TypeDescription
970Haptic Vendor TypeR0: No haptics; 1: Capacitive; 2: Piezoresistive

Modify Device ID / 1000

Modify Device ID. The set range is: 1 - 254.After setting the ID, it takes effect immediately and is saved to flash.

Default ID: Left hand default ID is 0x7e, right hand default ID is 0x7f.

RS485 Device Baud Rate/1001

RS485 device baud rate, you can set the parameters below:

Setting ParametersBaud Rate
0115200
157600
219200
3460800
41000000
52000000
65000000

CANFD Device Baud Rate/1002

The baud rate of the CANFD device can be set with the parameters below

Set ParameterBaud Rate
0100 kbps
1125 kbps
2200 kbps
3250kbps
4400kbps
5500kbps
6800kbps
71Mbps
82Mbps
94Mbps
105Mbps

CANFD Arbitration Field Sampling Point Configuration /1003

CANFD Arbitration domain sampling points can be set with the following parameters

Set parametersBaud rate / Sampling point
01000 kbps 75% Sampling point
11000 kbps 80% Sampling point

** Restart/1009**

Set the Restart/1009 register, and the dexterous hand will restart.

Multiple Finger Position Time Control/1010

Each mechanical hand includes 6 motors, with the thumb driven by 2 motors. The table below lists the correspondence between registers and the motors for each finger.The value of the position register can be in a normalized range of 0 to 1000, or in an actual position range (unit: °).

To achieve a control precision of 0.1°, position values are uniformly scaled by a factor of 10 before being sent (i.e., 1 represents 0.1°). Here, 0 represents fully open, and 1000 represents fully closed.

The expected time register has a value range of 1 to 2000, with units in milliseconds (ms). When the set expected time is less than the fastest execution time allowed by the motor, the motor will operate at maximum speed.

FingerRegister AddressRegister Value
Thumb FlexPosition Register 10100 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10111-2000
Thumb AuxPosition Register 10120 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10131-2000
Index Finger
Position Register 10140 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10151-2000
Middle FingerPosition Register 10160 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10171-2000
Ring Finger
Position Register 10180 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10191-2000
Little Finger
Position Register 10200 - 1000 or
Minimum - Maximum Position (°)
Expected Time Register 10211-2000

Multiple Finger Position Speed Control / 1022

Each robotic hand consists of 6 motors, with the thumb driven by 2 motors. The table below lists the correspondence between registers and the motors of each finger.The values of the position register can be either in the normalized range of 0 to 1000 or in actual angle range (unit: °).

To achieve a control precision of 0.1°, the position values are uniformly scaled up by a factor of 10 when issued (i.e., 1 represents 0.1°). Here, 0 represents fully open, while 1000 represents fully closed.

The expected speed register can be in a normalized range of 1 to 1000 or in the actual angular speed range (unit: °/s), which is used to control the rotation speed of the fingers.When the set expected speed exceeds the maximum speed of the motor, the motor will operate at its maximum speed.

FingerRegister AddressRegister Value
Thumb FlexPosition Register 10220 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10231 - 1000 or
Desired Speed (1-Maximum Speed °/s)
Thumb AuxPosition Register 10240 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10251 - 1000 or
Desired Speed (1-Maximum Speed °/s)
Index Finger
Position Register 10260 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10271 - 1000 or
Desired Speed (1-Maximum Speed °/s)
Middle FingerPosition Register 10280 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10291 - 1000 or
Desired Speed (1-Maximum Speed °/s)
Ring Finger
Position Register 10300 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10311 - 1000 or
Desired Speed (1-Maximum Speed °/s)
Little Finger
Position Register 10320 - 1000 or
Minimum-Maximum Position (°)
Desired Speed Register 10331 - 1000 or
Desired Speed (1-Maximum Speed °/s)

Multiple Finger Speed Control/1034

The normalization mode is set to a range of -1000 to 1000, and the physical unit mode range is (-maximum speed - miximum speed), where the sign indicates the direction: positive indicates the gripping direction, and negative indicates the releasing direction. The unit of speed value in physical unit mode is: °/s

Register AddressFingerRegister Value
1034Thumb Flex-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)
1035Thumb Aux-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)
1036Index Finger-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)
1037Middle Finger-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)
1038Ring Finger-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)
1039Little Finger-1000 - 1000 or
Desired Speed (-maximum speed - miximum speed °/s)

Multi-finger Current Control / 1040

The normalization mode setting range is -1000 to 1000, and the physical unit mode range is (-maximum current - maximum current), where the sign indicates direction: positive for gripping direction and negative for releasing direction. The unit of the current value in physical unit mode is: mA

Register AddressFingerRegister Value
1040Thumb Flex-1000 to 1000 or
expected current (-maximum current - maximum current)
1041Thumb Aux-1000 to 1000 or
expected current (-maximum current - maximum current)
1042Index Finger-1000 to 1000 or
expected current (-maximum current - maximum current)
1043Middle Finger-1000 to 1000 or
expected current (-maximum current - maximum current)
1044Ring Finger-1000 to 1000 or
expected current (-maximum current - maximum current)
1045Little Finger-1000 to 1000 or
expected current (-maximum current - maximum current)

Multi-finger PWM Control / 1046

Finger PWM control, where the symbol indicates direction: positive indicates the gripping direction, and negative indicates the releasing direction.

Register AddressFingerRegister Value
1046Thumb Flex-1000 - 1000
1047Thumb Aux-1000 - 1000
1048Index Finger-1000 - 1000
1049Middle Finger-1000 - 1000
1050Ring Finger-1000 - 1000
1051Little Finger-1000 - 1000

Single Finger Position Time Control / 1052

In order to achieve a control precision of 0.1°, the position values are uniformly amplified by 10 times before being issued (i.e., 1 represents 0.1°).

Register AddressRegister NameRegister Value
1052Finger number0-5
1053position1-1000 or
Minimum - Maximum Position(°)
1054Expected time1- 2000

Single Finger Position Speed Control / 1055

In order to achieve a control precision of 0.1°, the position values are uniformly amplified by 10 times before being sent out in physical quantity mode (i.e., 1 represents 0.1°).

Register AddressRegister NameRegister Value
1055Finger number0-5
1056Position0-1000 or
minimum-Maximum position(°)
1057Expected speed(°/s)1 - 1000 or
Expected speed(1-Maximum speed°/s)

Single Finger Speed Control/1058

Register AddressRegister NameRegister Value
1058Finger number0-5
1059Speed-1000 - 1000 or
Expected speed(-Maximum speed —— Miximum speed°/s)

Single finger current control / 1060

Register AddressRegister NameRegister Value
1060Finger number0-5
1061Current-1000 - 1000或
Expected current (-maximum current —— maximum current mA)

Single finger PWM control/1062

Register AddressRegister NameRegister Value
1062Finger number0-5
1063PWM-1000-1000

LED Control/1064

Register value

c
uint8_t led_mode = 1;
uint8_t led_color = 2;
uint16_t register_value = ((uint16_t)led_mode << 8) + led_color;
LED MODEDescriptionRegister Value
1LED_MODE_SHUTDOWN1
2LED_MODE_KEEP2
3LED_MODE_BLINK3
4LED_MODE_ONE_SHOT4
5LED_MODE_BLINK0_5HZ5
6LED_MODE_BLINK2HZ6
LED COLORDescriptionRegister Value
1LED_COLOR_R1
2LED_COLOR_G2
3LED_COLOR_RG3
4LED_COLOR_B4
5LED_COLOR_RB5
6LED_COLOR_GB6
7LED_COLOR_RGB7

Turbo Mode/1065

Turbo mode resets to the default off state after power loss.

Register ValueDescription
0Off
1On

Turbo mode time parameters / 1066

Turbo mode is implemented based on the stall feature, where the motor stops moving for a period of time (stall time) after the stall, then switches to a continue motion time, periodically executing stop and continue motion.

Register AddressDescription
1066Stall time, no movement, unit ms, default is 500 ms
1067Continue motion time, unit ms, default is 500 ms

Position Auto Calibration / 1068

Position auto calibration retention register, used to enable or disable the dexterous hand to automatically perform position calibration after power-on. Position calibration refers to the process in which the dexterous hand searches for the starting position of the fingers after power-on, during which all fingers will be activated.

The valid values for this register are 1 and 0, where 1 enables position auto calibration, which is the default state; 0 disables position auto calibration.When position auto calibration is turned off, users need to perform manual position calibration.

There are two ways for manual position calibration: through the Position Calibration (1069) retention register, or by briefly pressing the backlight button after power-on.

Note1: During the position calibration process, if the dexterous hand has a grasped object, there may be a risk of dropping.

Note2: After powering on the dexterous hand, a position calibration must be performed to enable normal control.

Position Calibration/1069

The position calibration hold register; this command is only valid when 'Position Auto Calibration' (1068) is turned off. The valid value for this register is '1', which means to start position calibration.

Fast Position Control Mode/1070-1072

Fast control mode is a high-response mode with simplified inputs, achieving quick finger control by setting the percentage position value (0-100).

Register AddressByte OffsetCorresponding FingerControl ParameterDescription
1070byte0Thumb Base (Aux)Percentage Position (0-100)Position control at maximum speed
1070byte1Thumb Tip (Flex)Percentage Position (0-100)Position control at maximum speed
1071byte0Index FingerPercentage Position (0-100)Position control at maximum speed
1071byte1Middle FingerPercentage Position (0-100)Position control at maximum speed
1072byte0Ring FingerPercentage Position (0-100)Position control at maximum speed
1072byte1Little FingerPercentage Position (0-100)Position control at maximum speed
  • Writing should be completed in one go for 3 registers (1070~1072), which is 6 bytes.
  • The percentage position represents a normalized value relative to the minimum/maximum position range of the finger: 0 indicates the minimum position, and 100 indicates the maximum position.
  • Ultimate goal perspective = Minimum position + percentage * (Maximum position - Minimum position) / 100

Action Sequence ACTION_CMD_ID/1098

Includes commands and action sequence Index. Action sequence

c
uint8_t cmd = 1;
uint8_t id = 2;
uint16_tregister_value = ((uint16_t)cmd << 8) + id;
CMDDescription
1SET_START
2SET_FINISH
3READ_START
4READ_FINISH
5SAVE
6RUN
Action IDDescription
1Built-in open actionW/R
2Built-in fist actionW/R
3Built-in two-finger pinch gestureW/R
4Built-in three-finger pinch gestureW/R
5Built-in side pinch gestureW/R
6Built-in single-finger tap gestureW/R
7Gesture sequence 1W/R
8Gesture sequence 2W/R
9Gesture sequence 3W/R
10Gesture sequence 4W/R
11Gesture sequence 5W/R
12Gesture sequence 6W/R
............W/R
30Gesture sequence 24W/R

Action Step Count Register/1099

Readable and writable, indicates the number of steps included in the action. Maximum of 8.

Action Step Parameter Register/1100Readable and writable, this represents the sequence, time, position, speed, and force parameters in the action step, where position refers to the finger position (°). When the position is set to -1, it indicates that the finger maintains its original angle, and the speed refers to the finger rotation speed (°/s).

Register AddressRegister NameDescription
1100indexIndicates the action sequence, range 0-8W/R
1101duration_msRuntimeW/R
1102ctrl typePosition time control: 1
Position speed control: 2
Current control: 3
Speed control: 4
W/R
1103positions[0]Thumb Flex position valueW/R
1104positions[1]Thumb Aux position valueW/R
1105positions[2]Index position valueW/R
1106positions[3]Middle finger position valueW/R
1107positions[4]Ring finger position valueW/R
1108positions[5]Little finger position valueW/R
1109expect_interval[0]Thumb Flex Position Control Movement TimeW/R
1110expect_interval[1]Thumb Aux Position Control Movement TimeW/R
1111expect_interval[2]Index Finger Position Control Movement TimeW/R
1112expect_interval[3]Middle Finger Position Control Movement TimeW/R
1113expect_interval[4]Ring Finger Position Control Movement TimeW/R
1114expect_interval[5]Little Finger Position Control Movement TimeW/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]

Write the action sequence

img

Read action sequence

img

Actual Position Value / 2000

In order to achieve a control precision of 0.1°, the position values in physical quantity mode are uniformly amplified by 10 times before reporting (i.e., 1 represents 0.1°)

Register AddressFingerRegister Value
2000Thumb Flex0 - 1000 or
Actual Angle (°)
2001Thumb Aux0 - 1000 or
Actual Angle (°)
2002Index Finger0 - 1000 or
Actual Angle (°)
2003Middle Finger0 - 1000 or
Actual Angle (°)
2004Ring Finger0 - 1000 or
Actual Angle (°)
2005Little Finger0 - 1000 or
Actual Angle (°)

Actual Speed Values/2006

The speed value indicates the magnitude of speed, and the symbol indicates the direction of the motor finger movement.

Register AddressFingerRegister Value
2006Thumb Flex-1000-1000 or
Actual Speed (°/s)
2007Thumb Aux-1000-1000 or
Actual Speed (°/s)
2008Index Finger-1000-1000 or
Actual Speed (°/s)
2009Middle Finger-1000-1000 or
Actual Speed (°/s)
2010Ring Finger-1000-1000 or
Actual Speed (°/s)
2011Little Finger-1000-1000 or
Actual Speed (°/s)

Actual Current Value/2012

The current value indicates the magnitude of the current, and the symbol indicates the direction of finger movement for the motor.

Register AddressFingerRegister Value
2012Thumb Flex-1000-1000 or
Actual current value (mA)
2013Thumb Aux-1000-1000 or
Actual current value (mA)
2014Index Finger-1000-1000 or
Actual current value (mA)
2015Middle Finger-1000-1000 or
Actual current value (mA)
2016Ring Finger-1000-1000 or
Actual current value (mA)
2017Little Finger-1000-1000 or
Actual current value (mA)

Motor Status/2018

Register AddressFingerRegister Value
2018Thumb Flex0 - 3
2019Thumb Aux0 - 3
2020Index Finger0 - 3
2021Middle Finger0 - 3
2022Ring Finger0 - 3
2023Little Finger0 - 3
Register ValueDescription
0Motor Idle
1Motor Running
2Motor Stalled
3Turbo

Key Status/2025

Read the key status. 0 means not pressed, 1 means pressed.

FW Version/3000

Read firmware version, 10 registers, maximum length of 20 strings.

The string is converted to multiple uint16_t registers in big-endian format.

Big-endian uint16_tCharString
0x302E, 0x302E, 0x342E, 0x530030 2E 30 2E 34 2E 53 000.0.4.S

SN/3010

Read SN version, 10 registers, maximum length of 20 characters.

The string is converted to multiple uint16_t registers in big-endian format.

Big-endian uint16_tCharString
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

Tactile Register Description - Capacitive

The fingertips of the capacitive tactile hand have tactile sensors. Due to structural differences in each finger, the arrangement of the fingers varies slightly; however, the data from each finger is collected through 6 channels, outputting a set of three-dimensional force and proximity force.

Configuration Register (Address Range: 4000–4014)

Address RangeFunction DescriptionData WidthRead/WriteDescription
4000 Thumb
4001 Index Finger
4002 Middle Finger
4003 Ring Finger
4004 Little Finger
Haptic Switch Configuration2BytesR/W0: Off;
1: On
4005 Thumb
4006 Index Finger
4007 Middle Finger
4008 Ring Finger
4009 Little Finger
Haptic Channel Reset Command2BytesWWrite 1 to trigger reset
4010 Thumb
4011 Index Finger
4012 Middle Finger
4013 Ring Finger
4014 Little Finger
Parameter Calibration Trigger2BytesWWrite 1 to trigger finger parameter calibration
  • Tactile Switch:The tactile switch supports the independent activation/deactivation of the tactile function of each finger. It supports read operations, where writing 1 indicates that the tactile of the corresponding finger is activated, and 0 indicates that the tactile of the corresponding finger is deactivated. Reading 1 means that the tactile channel is in the activated state, while 0 means that the tactile channel is in the deactivated state.

  • Channel Reset:The Channel Reset register accepts an input value of 1 to trigger the sensor collection channel reset command. During the execution of this command, the finger sensor should not be subjected to force.

  • Parameter CalibrationThe Parameter Calibration register accepts an input value of 1 to trigger the parameter calibration command. When the three-dimensional force values in the idle state are not 0, calibration can be performed through this register. The execution time of this command is relatively long, and data during this period cannot be used as a reference. It is recommended to ignore the data within ten seconds after setting the Parameter Calibration register. The finger sensor must not be subjected to force during the execution of this command, otherwise, the calibrated sensor data will be abnormal.

Tactile Firmware Version Information (Address Range: 4100–4140)

AddressCorresponding FingerData WidthRead/WriteDescription
4100Thumb20 Bytes (10 uint16)RFirmware compilation date string
4110Index Finger20 Bytes (10 uint16)RFirmware compilation date string
4120Middle Finger20 Bytes (10 uint16)RFirmware compilation date string
4130Ring Finger20 Bytes (10 uint16)RFirmware compilation date string
4140Little Finger20 Bytes (10 uint16)RFirmware compilation date string
  • Haptic firmware version informationThe version register is used to obtain the version of the haptic sensor, with a length of 10 registers. The string is converted to multiple uint16_t registers in big-endian format.

Five-finger three-dimensional force / proximity / tactile state (address range: 4200–4229)

Address RangeData TypeSize per PointerTotal SizeOrderDescription
4200–42143D force data6 Bytes30 BytesThumb → Pinky法向力2B +
切向力2B +
方向角2B
4215–4224Proximity value4 Bytes20 BytesThumb → Pinky
4225–4229Tactile state2 Bytes10 BytesThumb → Pinky
  • Normal and tangential forces are 16-bit unsigned data. The unit of measurement is 0.01 N, so a value of 1000 represents 10 N (1000 * 0.01 N). The measurement range is from 0 to 25 N.
  • The direction of the tangential force is 16-bit unsigned data. The unit is in degrees, with a numeric range of 0 to 359 degrees. The direction close to the fingertip is 0 degrees, rotating clockwise to a maximum of 359 degrees. When the value is 65535 (0xFFFF), it indicates that the tangential force direction is invalid.
  • Proximity value is 32-bit unsigned data.
  • The tactile state register is 16 bits, with high and low bytes representing different states:
    • The upper 8 bits: Used to indicate the packet sequence number for internal data updates of the sensor. If the value of this byte increases or changes, it indicates that the sensor output data has been updated.
    • The lower 8 bits: Used to indicate the current status of the sensor, the bits are defined as follows:
      1. Bit0 indicates that the original value is incorrect,
      2. Bit1 indicates that the original value has not been updated for a long time,
      3. Bit2 indicates a trigger timeout.

Due to the limitations of the Modbus-RTU protocol, to obtain complete 32-bit data, it is necessary to read two registers.

Single-point data reading (address range: 4250–4278)

AddressFunction TypeData FormatData Width
4250Thumb three-dimensional force
Proximity value
Tactile state
Normal force(2B) +
Tangential force(2B) +
Direction angle(2B)+
Proximity value(4B)+
Status value(2B)
6uint16
4256Index three-dimensional force
Proximity value
Tactile state
Normal force(2B) +
Tangential force(2B) +
Direction angle(2B)+
Proximity value(4B)+
Status value(2B)
6uint16
4262Middle three-dimensional force
Proximity value
Tactile state
Normal force(2B) +
Tangential force(2B) +
Direction angle(2B)+
Proximity value(4B)+
Status value(2B)
6uint16
4268Ring three-dimensional force
Proximity value
Tactile state
Normal force(2B) +
Tangential force(2B) +
Direction angle(2B)+
Proximity value(4B)+
Status value(2B)
6uint16
4274Pinky three-dimensional force
Proximity value
Tactile state
Normal force(2B) +
Tangential force(2B) +
Direction angle(2B)+
Proximity value(4B)+
Status value(2B)
6uint16

Raw Touch Channel Value Reading for Five Fingers (Address Range: 4300–4359)

AddressCorresponding FingerChannel CountBytes per ChannelTotal BytesDescription
4300–4311Thumb64 Bytes24 Bytes4 bytes raw value per channel
4312–4323Index Finger64 Bytes24 Bytes4 bytes raw value per channel
4324–4335Middle Finger64 Bytes24 Bytes4 bytes raw value per channel
4336–4347Ring Finger64 Bytes24 Bytes4 bytes raw value per channel
4348–4359Little Finger64 Bytes24 Bytes4 bytes raw value per channel

The tactile channel value is a 32-bit unsigned data.

Tactile Register Description - Piezoresistive

Piezoresistive sensors have 9 sampling points on each finger, distributed from the fingertip to the base of the finger, allowing for a comprehensive perception of tactile feedback on the fingertip surface.

  • Data Size per Sampling Point: 2 bytes (16 bits)

  • Data Type:
    Raw Value: ADC sampled value, suitable for debugging and internal calibration;
    Calibrated Value: Pressure value converted to physical quantity, measured in g (grams).

  • The choice of Data Type can be set via the holding register (0: Raw Value; 1: g value (default)).

  • Supported Fingers: Thumb, Index Finger, Middle Finger, Ring Finger, Little Finger

  • To facilitate the quick acquisition of the overall force applied to the fingers, the following input registers are added for reading the combined force of the 5 fingers (Raw Value/Calibrated Value):

Register AddressFingerDescription
6001Thumb9-point force
6002Index Finger9-point force
6003Middle Finger9-point force
6004Ring Finger9-point force
6005Pinky Finger9-point force

Users can read the 9-point pressure values for each finger through the registers and obtain the firmware version string information (10 bytes). Combined with the tactile data switch register control, the module can be started or stopped, saving resources.