Skip to content

Stark3 (Revo 3) Communication Protocol

1. Introduction

1.1 Purpose

This document is designed to guide users in communicating with the Stark3 (Revo 3) dexterous hand using RS485 or CAN FD interfaces, enabling device configuration, motion control, status acquisition, and tactile data reading.

1.2 Supported Interfaces

  • RS485
  • CAN FD

2. Modbus RTU Protocol

RS485 communication on the Stark3 hand uses the standard Modbus RTU protocol format.

2.1 Frame Format

Header / Device IDFunction CodeDataCRC16
1 Byte1 ByteN Bytes2 Bytes

2.2 Field Descriptions

FieldDescription
Header/Device IDSlave device address
Function CodeModbus function code (e.g., 03H: Read Holding Registers; 04H: Read Input Registers; 06H: Write Single Holding Register; 10H: Write Multiple Holding Registers)
DataData payload, varying based on the function code and register address
CRC16CRC-16 (Modbus) checksum, low byte first, high byte last

3. CAN FD Encapsulation Format

When using the CAN FD interface, the underlying communication still contains Modbus protocol data, which is encapsulated and transmitted within a 29-bit CAN FD extended frame.

3.1 CAN FD ID Format

The 29-bit CAN FD ID is allocated as follows:

BitsFieldDescription
28 ~ 24ReservedFixed to 0
23 ~ 16Device IDSlave device address
15 ~ 8Master IDHost device ID (defined by host)
7 ~ 0Payload LengthActual length of active data payload (Bytes)

Default Device ID

DeviceDefault Device ID (Decimal)Default Device ID (Hexadecimal)
Left Hand1260x7E
Right Hand1270x7F

3.2 Frame Formats

Host Transmission Frame

CAN FD ID (29-bit)Data Segment (Payload, ≤ 64 Bytes)
Device ID + Master ID + Payload LengthComplete Modbus RTU request frame (including checksums)

Device Reply Frame

CAN FD ID (29-bit)Data Segment (Payload, ≤ 64 Bytes)
Device ID + Master ID + Payload LengthComplete Modbus RTU response frame

4. Register Map Overview

Stark3 registers are planned as follows:

Address RangeRegister TypeCategory
0 ~ 199Holding RegisterSystem Configuration
200 ~ 399Holding RegisterMotor Parameters
1000 ~ 1599Holding RegisterControl Commands
1800 ~ 1999Input RegisterSystem Status
2030 ~ 2999Input RegisterMotor Feedback
3000 ~ 3999Input RegisterDevice Information
4000 ~ 5000Input RegisterTactile Data

5. System Configuration Registers

System configuration registers (address range 0~199) support read/write access.

AddressNameAccessDescription
60 ~ 80Motor Zero OffsetRWUnit: 0.01° (transmitted as value × 100). Total 21 joints.
101Hand IdentityRO1 = Right hand, 2 = Left hand
102Restore Finger DefaultsWOWrite specific value to restore default finger parameters.
105Buzzer SwitchRW0 = Off, 1 = On
106Vibration Motor SwitchRW0 = Off, 1 = On
107Touch Screen SwitchRW0 = Off, 1 = On
108Device IDRWDefault: 126 for Left hand, 127 for Right hand
109RS485 BaudrateRWSee 5.1 RS485 Baudrate
110CAN FD BaudrateRWSee 5.2 CAN FD Baudrate
112Auto CalibrationRW0 = Off, 1 = On (automatically run calibration on boot)
118Teaching ModeRWWrite 1 to enter, 0 to exit
119Emergency StopRWWrite 1 to stop all motors, 0 to resume normal operation
131Auto-clear Motor ErrorRW0 = Off (default), 1 = On

5.1 RS485 Baudrate

ValueBaudrate
01 Mbps
12 Mbps
23 Mbps
35 Mbps

5.2 CAN FD Baudrate

ValueBaudrate
01 Mbps
12 Mbps
24 Mbps
35 Mbps

6. Motor Parameters

The units for motor parameters are defined as follows:

  • Position: Degrees (°)
  • Velocity: Revolutions per minute (rpm)
  • Current: Milliamperes (mA)

💡 Numerical Scaling Details

To maintain data precision, position and velocity values are transmitted as integers using actual value × 100.

  • Angle Example: Target position 90.00° → transmitted register value is 9000.
  • Velocity Example: Target velocity 50.00 rpm → transmitted register value is 5000.
  • Current Example: Target protection currents directly use the physical value in mA.

6.1 Global Protection Current

AddressParameterAccessDescription
200All Joints Protection Current (mA)WOConfigures protection current for all 21 joints at once

6.2 Single Joint Protection Current

AddressParameterAccessDescription
201 ~ 221Joint Protection Current (mA)RWMaximum allowed current for joints 0 to 20

6.3 Joint Movement Limits

AddressParameterAccessDescription
240 ~ 260Min Position Limit (° × 100)RWPhysical minimum position limit for joints 0 to 20
270 ~ 290Max Position Limit (° × 100)RWPhysical maximum position limit for joints 0 to 20
300 ~ 320Min Velocity Limit (rpm × 100)RWMinimum speed limit for joints 0 to 20
321 ~ 341Max Velocity Limit (rpm × 100)RWMaximum speed limit for joints 0 to 20

7. Control Commands

Stark3 support MIT impedance control mode.

7.1 MIT Control Formula

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

Data Scaling

  • Kp, Kd, Position, Velocity are transmitted as actual value × 100.
  • Current ( τff ) is transmitted directly in mA.

Example:

  • Kp target = 15.00 transmitted value = 1500
  • Kd target = 0.50 transmitted value = 50
  • Position target = 90.00° transmitted value = 9000
  • Velocity target = 50.00 rpm transmitted value = 5000
  • Current ( τff ) target = 1000 mA transmitted value = 1000

7.2 Single Joint MIT Control

Enables standalone control of a specific joint:

AddressParameterDescription
1050Joint IDTarget joint number (0 ~ 20)
1051KpProportional stiffness gain (value × 100)
1052KdDerivative damping gain (value × 100)
1053PositionTarget position (° × 100)
1054VelocityTarget velocity (rpm × 100)
1055Current ( τff )Feedforward current (mA)

7.3 Multi-Joint MIT Control

Provides a continuous register map block for bulk updates of multiple joints:

Address RangeTarget JointParameter ArrayDescription
1100 ~ 1104Joint 0[Kp, Kd, Pos, Vel, τ_ff]5 consecutive registers
1105 ~ 1109Joint 1[Kp, Kd, Pos, Vel, τ_ff]5 consecutive registers
............
1195 ~ 1199Joint 19[Kp, Kd, Pos, Vel, τ_ff]5 consecutive registers
1200 ~ 1204Joint 20[Kp, Kd, Pos, Vel, τ_ff]5 consecutive registers

7.4 Bulk Parameter Controls

Enables targeted bulk updates for a single MIT parameter across all joints:

Address RangeParameterDescription
1300 ~ 1320Kp ListProportional gain ( Kp ) for all 21 joints
1321 ~ 1341Kd ListDamping gain ( Kd ) for all 21 joints
1342 ~ 1362POS ListTarget position ( Pos ) for all 21 joints
1363 ~ 1383Vel ListTarget velocity ( Vel ) for all 21 joints
1384 ~ 1404τff ListFeedforward current for all 21 joints

7.5 Four-Finger MIT Control

Used to control the index, middle, ring, or pinky finger:

AddressParameterDescription
1520Finger Index1 = Index, 2 = Middle, 3 = Ring, 4 = Pinky
1521 ~ 1540Parameter ArrayTotal 20 registers containing gains and references:
1. Abduction/Adduction MCP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
2. Flexion/Extension MCP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
3. PIP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
4. DIP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)

7.6 Thumb MIT Control

Used to control the 5-DOF thumb structure:

Address RangeParameter ArrayDescription
1550 ~ 15745-DOF ParametersTotal 25 registers in sequence:
1. CMC Flexion/Extension [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
2. CMC Abduction/Adduction [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
3. MCP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
4. IP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)
5. DIP [Kp, Kd, Pos, Vel, τ_ff] (5 registers)

8. System Status

System status registers (address range 1800~1999) are read-only input registers.

AddressParameterUnitDescription
1800System Status CodeSee 8.1 System Status Code Definitions
1801Total CurrentmACurrent consumption of the hand
1802Total VoltageVSupply voltage of the hand
1803Total PowerWPower consumption of the hand
1804System TemperatureTemperature of the main control board

8.1 System Status Code Definitions

The status code register (1800) uses high and low bytes to indicate errors:

  • High 8 Bits (High Byte): Core fault flag
    • 0 = Normal
    • 1 = Fault
  • Low 8 Bits (Low Byte): Detailed exception categories
    • 0 = Normal
    • 1 = Communication failure
    • 2 = Uncalibrated
    • 3 = Temperature abnormal

9. Motor Feedback

Real-time state monitoring of the 21 joint motors via input registers (2030~2999).

Address RangeParameterUnitDescription
2030 ~ 2050Motor Velocityrpm × 100Current rotational speed of motors 0 ~ 20
2060 ~ 2080Motor Position° × 100Current angular position of motors 0 ~ 20
2090 ~ 2110Motor CurrentmACurrent drive current of motors 0 ~ 20
2120 ~ 2140Motor Status CodeBit fieldSee 9.1 Motor Status Code Definitions
2150 ~ 2170Motor TemperatureTemperature of motors 0 ~ 20 (internal or driver IC)

9.1 Motor Status Code Definitions

The motor status registers (2120~2140) use bitwise flags to report faults:

BitDescription
0Over-current
1Over-voltage
2Under-voltage
3Over-temperature
4Current Spike
5Calibration Failed
8Motor Stall
9Calibrating
11Motor Running

10. Device Information

Device information registers (address range 3000~3999) are read-only.

Address RangeParameter NameFormat / Details
3030 ~ 3039Firmware VersionRO, Big-Endian ASCII string
3040 ~ 3049Hardware VersionRO, Big-Endian ASCII string
3050 ~ 3059Product SNRO, Big-Endian ASCII string
3060 ~ 3269Motor SNRO, Big-Endian ASCII string, 10 registers per motor SN (21 motors total)
3300 ~ 3320Motor Firmware VersionRO, binary version representation

10.1 Encoding Details

Versions & Serial Numbers (ASCII)

Strings are stored in Big-Endian byte order inside the registers. Each uint16_t register holds 2 characters:

  • High Byte: Holds the first character
  • Low Byte: Holds the second character

Each field uses 10 registers, supporting a maximum string length of 20 characters (including trailing null \0).

Decoding Example:

Register Array (Big-Endian uint16_t)Hexadecimal BytesDecoded ASCII String
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"

Motor Firmware Version

The motor firmware version is stored in a single uint16_t split into:

  • High Byte: Major version
  • Low Byte: Minor version

Parsing Format: Version = V[Major].[Minor]

  • E.g., read value 0x0105 represents version V1.5.

11. Resistive Tactile Module

Stark3 features a high-density tactile pressure array, split between palm and finger modules.

11.1 Tactile Module Specification

Module TypeActive PointsCalibrated Resultant Forces
Palm361
Thumb Tip313
Thumb Pad576
Four Finger Tips (each)213
Four Finger Pads (each)525

11.2 Tactile Control Registers

AddressDescription
4000 ~ 4010Tactile Module Enable (corresponds to module IDs 0 ~ 10)
4011Zero-out Pressure (WO, applies to all modules)
4012 ~ 4022Zero-out Specific Module (WO, corresponds to module IDs 0 ~ 10)
4023Tactile Data Mode (0 = Raw array pressure, 1 = Calibrated pressure values)

11.3 Calibrated Resultant Forces

💡 Resultant Force Definition

Resultant Force = Sum of all calibrated pressure values within the mapped sub-regions of the module.

Palm & Thumb

AddressDescriptionDetail
4100Palm ForceEntire palm area
4101 ~ 4103Thumb Tip 1 ~ 33 sub-regions of the thumb tip
4104 ~ 4109Thumb Pad 1 ~ 66 sub-regions of the thumb pad

Index Finger

AddressDescriptionDetail
4110 ~ 4112Index Tip 1 ~ 3Index finger tip sub-regions
4113 ~ 4117Index Pad 1 ~ 5Index finger pad sub-regions

Middle Finger

AddressDescriptionDetail
4118 ~ 4120Middle Tip 1 ~ 3Middle finger tip sub-regions
4121 ~ 4125Middle Pad 1 ~ 5Middle finger pad sub-regions

Ring Finger

AddressDescriptionDetail
4126 ~ 4128Ring Tip 1 ~ 3Ring finger tip sub-regions
4129 ~ 4133Ring Pad 1 ~ 5Ring finger pad sub-regions

Pinky Finger

AddressDescriptionDetail
4134 ~ 4136Pinky Tip 1 ~ 3Pinky finger tip sub-regions
4137 ~ 4141Pinky Pad 1 ~ 5Pinky finger pad sub-regions

11.4 Tactile Array Data Registers

Real-time reading of raw or calibrated array values:

Module TypeAddress RangeTotal Points
Palm4200 ~ 423536 points
Thumb Tip4250 ~ 428031 points
Thumb Pad4290 ~ 434657 points
Index Tip4350 ~ 437021 points
Index Pad4400 ~ 445152 points
Middle Tip4460 ~ 448021 points
Middle Pad4500 ~ 455152 points
Ring Tip4560 ~ 458021 points
Ring Pad4600 ~ 465152 points
Pinky Tip4660 ~ 468021 points
Pinky Pad4700 ~ 475152 points

11.5 Tactile Module Index Definition

Module IDModule Name
0Palm Tactile
1Thumb Tip
2Thumb Pad
3Index Tip
4Index Pad
5Middle Tip
6Middle Pad
7Ring Tip
8Ring Pad
9Pinky Tip
10Pinky Pad

12. Joint ID Definitions

The Stark3 hand has 21 active joints. Refer to the diagram below for the ID mapping of each joint:

Stark3 Joint ID DefinitionsStark3 (Revo 3) Dexterous Hand - Physical layout of 21 active joint motor IDs
Help