Skip to content

BrainCo-Revo2Slave EtherCAT Communication Protocol Document

1.Equipment basic information

ProjectContent
Device nameBrainCo-Revo2Slave
Vendor NameBrainCo
Vendor ID0x00BC0000
Product Code0x00009252
Revision No0x00000001
  • Specific object dictionary configuration

2.Synchronization Manager and PDO Mapping

2.1 Synchronization Manager Configuration

SM IndexFunctionCorresponding PDO Index
SM2 (0x1C12)Master → Slave Output0x1600
SM3 (0x1C13)Slave → Master Input0x1A00

2.2 RxPDO(0x1600)

SubindexObjectsDescription
0x010x7000:01Multiple finger control modes
0x020x7000:02Multiple finger control parameters1(6xINT16)
0x030x7000:03Multiple finger control parameters2(6xUINT16)
0x040x7010:01Single finger control mode
0x050x7010:02Single finger target joint ID
0x060x7010:03Single finger control parameter1(INT16)
0x070x7010:04Single finger control parameter2(UINT16)

Control mode definition

shell
# define CTRL_MODE_POS_TIME   0x01  // Position + Time control
# define CTRL_MODE_POS_SPD    0x02  // Position + Speed control
# define CTRL_MODE_SPD        0x03  // Speed control
# define CTRL_MODE_CURRENT    0x04  // Current control
# define CTRL_MODE_PWM        0x05  // PWM duty cycle

Target Joint ID Definition

shell
typedef enum {
    // 拇指尖部
    THUMB_FLEX,
    // 拇指根部
    THUMB_ABDUCT,
    // 食指
    INDEX_FINGER,
    // 中指
    MIDDLE_FINGER,
    // 无名指
    RING_FINGER,
    // 小指
    PINKY
} finger_index_t;

2.3 Finger TxPDO(0x1A00)

SubindexObjectsDescription
0x010x6000:01Joint position(6xUINT16)
0x020x6000:02Joint speed(6xINT16)
0x030x6000:03Joint current(6xINT16)
0x040x6000:04Joint status(6xUINT16)
  • Position of 6 finger motors(Pos) → UINT16 ×6
  • Speed of 6 finger motors(Spd) → INT16 ×6
  • Current of 6 finger motors(Cur) → INT16 ×6
  • Status of 6 finger motors(State) → UINT16 ×6
  • Total:12 + 12 + 12 + 12 = 48 Byte data, main station can be directly mapped to variable usage.

2.4 Capacitive Tactile TxPDO Dictionary(0x6010)

IndexSub-indexField NameTypeQuantityDescription
0x60100x01force_normalUINT165Normal force
0x60100x02force_tangentialUINT165Tangential force
0x60100x03force_directionUINT16)5Direction of tangential force
0x60100x04proximityUINT325Approaching consciousness
0x60100x05touch_statusUINT165Tactile state
  • Normal force of five fingers(force_normal) → UINT16 ×5

  • Tangential force of five fingers(force_tangential) → INT16 ×5

  • Tangential force direction of five fingers(force_direction) → INT16 ×5

  • The five fingers are close to sensing.(proximity) → UINT32 ×5

  • Tactile state of five fingers(touch_status)→ UINT16 ×5 Total:10 + 10 + 10 + 20 + 10 = 60 Byte data, main station can be directly mapped to variable usage.。

  • The normal force and tangential force are 16-bit unsigned data. The unit is 100 * N. For example, a tangential force of 1000 represents 1000 / 100 N, which is 10 N. The measurement range for the normal force and tangential force is 0 ~ 25 N.

  • The direction of the tangential force is 16-bit unsigned data. The unit is degrees, with a range of 0 to 359 degrees. The direction near the fingertip is 0 degrees, increasing clockwise up to a maximum of 359 degrees. A value of 65535 (0xFFFF) indicates that the tangential force direction is invalid.

  • The approximate value is a 32-bit unsigned data.

  • The tactile status register is 16 bits, with the high and low bytes representing different status information:

  • High byte: Used to represent the packet sequence number for internal sensor data updates. If the value of this byte increases or changes, it indicates that the sensor output data has been updated.

  • Low byte: used to indicate the current status of the sensor, with each bit defined as follows:

    1. bit2:Trigger time out
    2. bit1:The original value has not been updated
    3. bit0:Invalid original value

3.Configuration parameter dictionary(Object 0x8000)

3.1 General configuration fields

SubindexParameter NameTypeDescription
0x01hand_typeUINT8(WR)0=left hand,1=right hand
0x02led_switchUINT8(WR)Back of hand light switch
0x03buzzer_switchUINT8(WR)Buzzer switch
0x04vibrator_switchUINT8(WR)Vibrating motor switch
0x05unit_modeUINT8(WR)0=Dimensionless, 1=Physical unit
0x06pos_calibrationUINT8 (WO)Manual position calibration
0x07auto_calibrationUINT8(WR)Automatic calibration on startup
0x08turbo_modeUINT8(WR)Turbo
0x09turbo_param[0] ,turbo_param[1]2XUINT16(WR)Turbo

3.2 Current field for protecting each joint

SubindexParameter NameTypeDescription
0x0Athumb_flex_pro_curUINT16(WR)Thumb flex protects current
0x0Bthumb_aux_pro_curUINT16(WR)Thumb abduct protection current
0x0Cindex_pro_curUINT16(WR)Index finger protection current
0x0Dmid_pro_curUINT16(WR)Middle finger protection current
0x0Ering_pro_curUINT16(WR)Ring finger protective current
0x0Fpink_pro_curUINT16(WR)Little finger protection current
0x10thumb_aux_lock_curUINT16(WR)Thumb abduct joint locking current

3.3 Firmware information field

SubindexParameter NameTypeDescription
0x11ctrl_wrist_fw_versionSTRING(20)(RO)Control board firmware version (string: high.mid.low)
0x12ctrl_snSTRING(18)(WR)Control panel device serial number(SN)
0x13wrist_fw_versionSTRING(20)(RO)Wristband firmware version (string: high, medium, low)
0x14wrist_snSTRING(18)(WR)Wrist brace device serial number(SN)
0x15foe_file_typeUINT8(WO)FoE File type identifier: 1=Wrist board, 2=Control board
0x16foe_auth_codeSTRING(8)(WO)FoE Document authentication code

4.Tactile SDO Parameter Dictionary(Object 0x8010)

IndexSub-indexField NameTypeLengthDescription
0x80101thumb_calibrationuint8(WO)1Thumb Calibration
0x80102index_calibrationuint8(WO)1Index finger calibration
0x80103mid_calibrationuint8(WO)1Middle Finger Calibration
0x80104ring_calibrationuint8(WO)1Ring Finger Calibration
0x80105pinky_calibrationuint8(WO)1Pinky Calibration
0x80106touch_vendoruint8(RO)1Tactile manufacturer(1:Capacitive 2:pressure-sensitive)
0x80107thumb_acq_param_updateuint8(WO)1Thumb channel value adjustment
0x80108index_acq_param_updateuint8(WO)1Index finger channel value adjustment
0x80109mid_acq_param_updateuint8(WO)1Middle finger channel value adjustment
0x801010ring_acq_param_updateuint8(WO)1Ring finger channel value adjustment
0x801011prink_acq_param_updateuint8(WO)1Little finger channel value adjustment
0x801012reserved1uint8(RO)1Reserved
0x801013thumb_touch_fw_versionstring(RO)20Thumb tactile firmware version
0x801014index_touch_fw_versionstring(RO)20Index Finger tactile Firmware Version
0x801015mid_touch_fw_versionstring(RO)20Middle finger tactile firmware version
0x801016ring_touch_fw_versionstring(RO)20Ring finger tactile firmware version
0x801017pink_touch_fw_versionstring(RO)20Pinky Finger Tactile Firmware Version

5.Control mode and parameter description

The dexterous hand control protocol supports individual or joint control of 6 fingers. The control methods support various modes such as position, speed, current, and PWM duty cycle, adapting to both percentage mode and physical quantity mode. The symbols represent direction (positive for finger bending direction, negative for finger straightening direction).

5.1 Control mode number (suitable for single/multi-finger control)

Control Mode NumberMode Nameparam1 Descriptionparam2 Description
0x01Position + Time controlTarget positionExercise time(ms)
0x02Position + Speed controlTarget positionMovement speed
0x03Speed ControlTarget SpeedNone
0x04Current ControlTarget CurrentNone
0x05PWM Duty Cycle ControlPWM RatioNone

5.2 PWM Control Instructions

  • The PWM duty cycle is a unitless ratio, range -1000 ~ +1000

5.3 Unit mode explanation

a)Percentage mode(unit_mode = 0)

ParameterMeaningRange
PositionPercentage of itinerary0 ~ 1000
SpeedPercentage of maximum speed-1000 ~ 1000
CurrentPercentage of maximum current (1000mA)-1000 ~ 1000

b)Physical quantity mode(unit_mode = 1)

ParameterMeaningUnit
LocationFinger angle position°
SpeedFinger angular velocity°/s
CurrentActual motor control currentmA

5.4 Difference between multi-finger control and single-finger control

TypeAddress AreaControl Mode FieldControl Parameter Structure
Multi finger controlRxPDO 0x7000mult_finger_ctrl_modeparam1[6] + param2[6]
Single finger controlRxPDO 0x7010finger_ctrl_modefinger_id + param1 + param2
  • Multi-finger control sets the target for all 6 fingers at once
  • Single-finger control is used for precise adjustments or debugging of a single finger

6. FoE Firmware Upgrade Protocol Description

Revo 2 Pro and Touch version of the dexterous hand support firmware upgrades via the EtherCAT FoE (File over EtherCAT) protocol, suitable for the independent upgrade needs of the wrist board and control board.

6.1 Upgrade type and certification information

Upgrade TypeFile NameUpgrade Authentication Code
Wrist board firmwareRevo2EC_x.x.x_$time.binBRCW2025
Control board firmwareRevo2_Vx.x.x_$time.binBRCC2025

6.2 FoE Upgrade process

The complete process of upgrading FoE includes four steps: certification, document type specification, firmware transfer, and writing.:

1. Main station writes in the upgrade type and authentication code

  • SDO 0x8000:0x15 Write upgrade type(1=wrist board,2=Control board)
  • SDO 0x8000:0x16 Write in the authentication code(such as"BRCW2025")

2. The main station sends the firmware file through FoE.

  • The file name must match the agreed value.(such as Revo2EC_0.0.1_2506231346.bin)

3. Receiving and Verifying from the Station

  • Check if the authentication code matches
  • Write to the corresponding Flash area

4. Upgrade Completed

  • It is recommended that the master station reset the device or the system to rescan

6.3 Precautions

  • Filename is case-sensitive and must match exactly
  • PDO communication will be interrupted during the slave write process
  • The device will automatically restart with the new firmware after upgrading
  • It is recommended to restart the EtherCAT bus after the upgrade is complete

6.4 Upgrade timing diagram

img

6.5 Firmware file header structure

To ensure the legality and version identification of the firmware upgrade files.,All .bin files upgraded through FoE,The following header structure has been automatically added by the packaging tool.(A total of 16 bytes):

Field NameLengthDescription
Magic Number8 bytesFixed identifier used to identify device type:
wrist board → "BRCW2025"
Control panel → "BRCC2025"
Firmware Version4 bytesThe structure of the firmware version number is as follows:
The highest byte is a reserved field.(0x00),
The last three bytes correspond to the major version number.(Major)、
Minor version number(Minor)、Revision number(Patch)。
For example, the version number 1.2.3 Represented as:0x00010203
Reserved field4 bytesReserved field, currently 0x00, reserved for future expansion.

This structure is automatically written to the file header by the packaging tool, and users do not need to add it manually, nor should they modify it.

** Upgrade Verification Logic**

  • After the FoE file is received, first check if the Magic Number matches the current upgrade type;
  • If it does not match, the upgrade is rejected; if it matches, proceed to the burning process.
  • The firmware header data is used for upgrade determination and will not be written into the Flash application area.