Skip to content

OHand ModBus-RTU Protocol V2.0

1. Overview of ModBus communication protocol

ModBus-RTU protocol uses the Master-Slave Request-Answer communication method. It's protocol frame includes function code, data domain and CRC16 checking. ModBus-RTU's master unit reads and writes internal registers of ROHand to obtain and control the status of ROHand. Read register means that upper system reads the internal registers value of ROHand(Can be read in groups, in groups mean several registers with same name and adjacency address).Upper system sends a read request frame(Includes the first address of register group, the length of register group, etc.) to ROHand. After ROHand receives the request frame and check it successfully, ROHand will send back the answer frame cotaining the contents of the register data to the upper system. Write register means that upper system writes corresponding data in the internal registers of ROHand(Can be written in groups).Upper system sends a request frame(Includes the first address of register group and contents of data to be written) to ROHand. After ROHand receives the request frame and checks it successfully, ROHand will send back answer frame to the upper system.

ROH ModBus protocol supports the opperation of reading holding register(function code '0x03'), presetting single register(function code '0x06') and presetting multiple register(function code '0x10').

2. Parameters of RS232、RS485 Communication

The parameters of RS232 and RS485 communication are all '115200' bps, '8' data bits, '1'stop bits and 'none' parity.

3. Frame of ROH ModBus data frame

3.1. Read holding register(function code '0x03')

The format of Master request frame:

Slave address Function code Start register(high byte) Start register(low byte) Number of registers(high byte) Number of registers(low byte) CRC16
0x11 0x03 0x6B 0x00 0x00 0x02 XXXX

Meaning: read NO.17(0x11) Slave holding register; Start address = 0x006B, Number of registers = 0x0002, end address = 0x006B+2-1 = 0x006C, that is, read NO.17 slave holding register 0x006B-0x006C, two registers in total.

The format of Slave answer frame:

Slave address Function code Byte count Register(high byte) Register(low byte) Register(high byte) Register(low byte) CRC16
0x11 0x03 0x04 0x00 0x01 0x00 0x02 XXXX

Meaning: return NO.17(0x11) Slave holding register 0x006B-0x006C, two registers in total. The value of register 0x006B is 0x0001, register 0x0062 is 0x0002.

When an error occurs in Slave excuting request frame, the format of answer frame is:

Slave address Function code Error code CRC16
0x11 0x83 XX XXXX

Where the function code is the value after the request frame function code executes 'OR' operation with 0x80 bit.

3.2. Preset single register(function code '0x06')

The format of Master request frame:

Slave address Function code Start register(high byte) Start register(low byte) Data content(high byte) Amount of data(low byte) CRC16
0x11 0x06 0x00 0x6B 0x10 0x00 XXXX

Meaning: set NO.17(0x11) Slave holding register, address of register is 0x006B, data content is 0x1000.

The format of Slave answer frame:

Slave address Function code Start register(high byte) Start register(low byte) Data content(high byte) Amount of data(low byte) CRC16
0x11 0x06 0x00 0x6B 0x10 0x00 XXXX

Meaning: the copy of original request frame.

When an error occurs in Slave excuting request frame, the format of answer frame is:

Slave address Function code Error code CRC16
0x11 0x86 XX XXXX

Where the function code is the value after the request frame function code executes 'OR' operation with 0x80 bit.

3.3 Preset multiple registers(function code '0x10')

The format of Master request frame:

Slave address Function code Start register(high byte) Start register(low byte) Amount of data(high byte) Amount of data(low byte) Byte count Data(high byte) Data(low byte) Data(high byte) Data(low byte) CRC16
0x11 0x10 0x00 0x01 0x00 0x02 0x04 0x00 0x0A 0x01 0x02 XXXX

Meaning: set NO.17(0x11) Slave holding register, start address of register is 0x0001, number of register is 0x0002, data content byte count is 0x04, data content is 0x000A and 0x0102.

The format of Slave request frame:

Slave address Function code Start register(high byte) Start register(low byte) Amount of register(high byte) Amount of register(high byte) CRC16
0x11 0x10 0x00 0x01 0x00 0x02 XXXX

Meaning: keep the address, function code, start register and amount of register same with request frame.

When an error occurs in Slave excuting request frame, the format of answer frame is:

Slave address Function code Error code CRC16
0x11 0x90 XX XXXX

Where the function code is the value after the request frame function code executes 'OR' operation with 0x80 bit.

3.4. Error code of ROHand

Error name Code Description
EC01_ILLEGAL_FUNCTION 1 Illegal function code
EC02_ILLEGAL_DATA_ADDRESS 2 Illegal data address
EC03_ILLEGAL_DATA_VALUE 3 Illegal data value(protocol layer, not application layer)
EC04_SERVER_DEVICE_FAILURE 4 Device failure

In case the error code is EC04_SERVER_DEVICE_FAILURE, the register ROH_SUB_EXCEPTION holds the specific error code:

Suberror name Code Description
ERR_STATUS_INIT 1 Waiting for initialization or initializing, the read/write operation is not accepted.
ERR_STATUS_CALI 2 Waiting for calibration, the read/write operation is not accepted.
ERR_INVALID_DATA 3 Invalid register value.
ERR_STATUS_STUCK 4 Motor stuck.
ERR_OP_FAILED 5 Operation failed.
ERR_SAVE_FAILED 6 Save failed.

4. Description of ModBus register

4.1. Table of register

Register name Register address Read/write access Factory defaults for setting items Description
ROH_PROTOCOL_VERSION 1000 R Protocol version number(uint16), high byte is the main version number, low byte is the minor version
ROH_FW_VERSION 1001 R Firmware version number(uint16), high byte is the main version number, low byte is the minor version
ROH_FW_REVISION 1002 R Firmware revision number(uint16)
ROH_HW_VERSION 1003 R Hardware version number(uint16), high byte is the hardware type, low byte is the hardware version.
ROH_BOOT_VERSION 1004 R Boot loader version number(uint6), high byte is the main version number, low byte is the minor version number.
ROH_NODE_ID 1005 R/W 2 ROHand ID, only low byte is valid, ROHand will save and reboot when successfully written.
ROH_SUB_EXCEPTION 1006 R Error subcode
ROH_BATTERY_VOLTAGE 1007 R Voltage value of ROH in mV, temporarily unavailable.
ROH_SELF_TEST_LEVEL 1008 R/W 1 Self-test switch, allowed to self-test when set 1, not to self-test when set 0, saved to Non-Volatile Memory (NVM) when setting.
ROH_BEEP_SWITCH 1009 R/W 1 Buzzer switch, allowed to vocalize when set 1, to be quiet when set 0, saved to Non-Volatile Memory (NVM) when setting.
ROH_BEEP_PERIOD 1010 W Buzzer vocalize period in ms.
ROH_BUTTON_PRESS_CNT 1011 R/W Number of key presses, as a confirmation during calibration for ROH.
ROH_RECALIBRATE 1012 W Recalibration, writing a specific value (not public) will put the ROHand into a calibration state.
ROH_START_INIT 1013 W Start self-test, only valid while waiting for self-test status.
ROH_RESET 1014 W Reset, enter DFU mode when writing non-zero values, restart to working mode when writing 0.
ROH_POWER_OFF 1015 W Power off, temporarily unavailable.
ROH_RESET_FORCE 1016 W Reset force value when write a none zero value
ROH_RESERVED1 1017 R/W Reserved.
ROH_RESERVED2 1018 R/W Reserved.
ROH_RESERVED3 1019 R/W Reserved.
ROH_CALI_END0 1020 R/W Factory calibration value Upper limit (uint16) of thumb operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END1 1021 R/W Factory calibration value Upper limit (uint16) of index finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END2 1022 R/W Factory calibration value Upper limit (uint16) of middle finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END3 1023 R/W Factory calibration value Upper limit (uint16) of ring finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END4 1024 R/W Factory calibration value Upper limit (uint16) of little finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END5 1025 R/W Factory calibration value Upper limit (uint16) of thumb rotation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_END6 1026 R/W Reserved.
ROH_CALI_END7 1027 R/W Reserved.
ROH_CALI_END8 1028 R/W Reserved.
ROH_CALI_END9 1029 R/W Reserved.
ROH_CALI_START0 1030 R/W Factory calibration value Lower limit (uint16) of thumb operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START1 1031 R/W Factory calibration value Lower limit (uint16) of index finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START2 1032 R/W Factory calibration value Lower limit (uint16) of middle finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START3 1033 R/W Factory calibration value Lower limit (uint16) of ring finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START4 1034 R/W Factory calibration value Lower limit (uint16) of little finger operation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START5 1035 R/W Factory calibration value Lower limit (uint16) of thumb rotation interval (absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_START6 1036 R/W Reserved.
ROH_CALI_START7 1037 R/W Reserved.
ROH_CALI_START8 1038 R/W Reserved.
ROH_CALI_START9 1039 R/W Reserved.
ROH_CALI_THUMB_POS0 1040 R/W Factory calibration value Preset position (uint16) of thumb lateral palm position(absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_THUMB_POS1 1041 R/W Factory calibration value Preset position 1 (uint16) of thumb lateral palm position(absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_THUMB_POS2 1042 R/W Factory calibration value Preset position 2 (uint16) of thumb lateral palm position(absolute position), saved to Non-Volatile Memory (NVM) when setting, and no need to be set by the user.
ROH_CALI_THUMB_POS3 1043 R/W Reserved.
ROH_CALI_THUMB_POS4 1044 R/W Reserved.
ROH_FINGER_P0 1045 R/W 500 * 100 P-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P1 1046 R/W 500 * 100 P-value *100 (uint16) of index finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P2 1047 R/W 500 * 100 P-value *100 (uint16) of middle finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P3 1048 R/W 500 * 100 P-value *100 (uint16) of ring finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P4 1049 R/W 500 * 100 P-value *100 (uint16) of little finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P5 1050 R/W 500 * 100 P-value *100 (uint16) of thumb rotation, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_P6 1051 R/W Reserved.
ROH_FINGER_P7 1052 R/W Reserved.
ROH_FINGER_P8 1053 R/W Reserved.
ROH_FINGER_P9 1054 R/W Reserved.
ROH_FINGER_I0 1055 R/W 1 * 100 I-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I1 1056 R/W 1 * 100 I-value *100 (uint16) of index finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I2 1057 R/W 1 * 100 I-value *100 (uint16) of middle finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I3 1058 R/W 1 * 100 I-value *100 (uint16) of ring finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I4 1059 R/W 1 * 100 I-value *100 (uint16) of little finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I5 1060 R/W 1 * 100 I-value *100 (uint16) of thumb rotation, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_I6 1061 R/W Reserved.
ROH_FINGER_I7 1062 R/W Reserved.
ROH_FINGER_I8 1063 R/W Reserved.
ROH_FINGER_I9 1064 R/W Reserved.
ROH_FINGER_D0 1065 R/W 250 * 100 D-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D1 1066 R/W 250 * 100 D-value *100 (uint16) of index finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D2 1067 R/W 250 * 100 D-value *100 (uint16) of middle finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D3 1068 R/W 250 * 100 D-value *100 (uint16) of ring finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D4 1069 R/W 250 * 100 D-value *100 (uint16) of little finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D5 1070 R/W 250 * 100 D-value *100 (uint16) of thumb rotation, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_D6 1071 R/W Reserved.
ROH_FINGER_D7 1072 R/W Reserved.
ROH_FINGER_D8 1073 R/W Reserved.
ROH_FINGER_D9 1074 R/W Reserved.
ROH_FINGER_G0 1075 R/W 1.00 * 100 G-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G1 1076 R/W 1.00 * 100 G-value *100 (uint16) of index finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G2 1077 R/W 1.00 * 100 G-value *100 (uint16) of middle finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G3 1078 R/W 1.00 * 100 G-value *100 (uint16) of ring finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G4 1079 R/W 1.00 * 100 G-value *100 (uint16) of little finger bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G5 1080 R/W 1.00 * 100 G-value *100 (uint16) of thumb rotation, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_G6 1081 R/W Reserved.
ROH_FINGER_G7 1082 R/W Reserved.
ROH_FINGER_G8 1083 R/W Reserved.
ROH_FINGER_G9 1084 R/W Reserved.
ROH_FINGER_STATUS0 1085 R Status (uint16) of thumb.
ROH_FINGER_STATUS1 1086 R Status (uint16) of index finger.
ROH_FINGER_STATUS2 1087 R Status (uint16) of middle finger.
ROH_FINGER_STATUS3 1088 R Status (uint16) of ring finge.
ROH_FINGER_STATUS4 1089 R Status (uint16) of little finger.
ROH_FINGER_STATUS5 1090 R Status (uint16) of thumb rotation.
ROH_FINGER_STATUS6 1091 R Reserved.
ROH_FINGER_STATUS7 1092 R Reserved.
ROH_FINGER_STATUS8 1093 R Reserved.
ROH_FINGER_STATUS9 1094 R Reserved.
ROH_FINGER_CURRENT_LIMIT0 1095 R/W 1178 Current limit value (uint16) of thumb bending motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT1 1096 R/W 1178 Current limit value (uint16) of index finger bending motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT2 1097 R/W 1178 Current limit value (uint16) of middle finger bending motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT3 1098 R/W 1178 Current limit value (uint16) of ring finger bending motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT4 1099 R/W 1178 Current limit value (uint16) of little finger bending motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT5 1100 R/W 1178 Current limit value (uint16) of thumb rotation motor in mA, reset to default value when power up.
ROH_FINGER_CURRENT_LIMIT6 1101 R/W Reserved.
ROH_FINGER_CURRENT_LIMIT7 1102 R/W Reserved.
ROH_FINGER_CURRENT_LIMIT8 1103 R/W Reserved.
ROH_FINGER_CURRENT_LIMIT9 1104 R/W Reserved.
ROH_FINGER_CURRENT0 1105 R Current value (uint16) of thumb bending motor in mA.
ROH_FINGER_CURRENT1 1106 R Current value (uint16) of index finger bending motor in mA.
ROH_FINGER_CURRENT2 1107 R Current value (uint16) of middle finger bending motor in mA.
ROH_FINGER_CURRENT3 1108 R Current value (uint16) of ring finger bending motor in mA.
ROH_FINGER_CURRENT4 1109 R Current value (uint16) of little finger bending motor in mA.
ROH_FINGER_CURRENT5 1110 R Current value (uint16)A of thumb rotation motor in mA.
ROH_FINGER_CURRENT6 1111 R Reserved.
ROH_FINGER_CURRENT7 1112 R Reserved.
ROH_FINGER_CURRENT8 1113 R Reserved.
ROH_FINGER_CURRENT9 1114 R Reserved.
ROH_FINGER_FORCE_TARGET0 1115 R/W 0 Force target value (uint16) of thumb in mN, set 0 to quit force control mode, reset to default value when power up.
ROH_FINGER_FORCE_TARGET1 1116 R/W 0 Force target value (uint16) of index finge in mN, set 0 to quit force control mode, reset to default value when power up.
ROH_FINGER_FORCE_TARGET2 1117 R/W 0 Force target value (uint16) of middle finger in mN, set 0 to quit force control mode, reset to default value when power up.
ROH_FINGER_FORCE_TARGET3 1118 R/W 0 Force target value (uint16) of ring finger in mN, set 0 to quit force control mode, reset to default value when power up.
ROH_FINGER_FORCE_TARGET4 1119 R/W 0 Force target value (uint16) of little finger in mN, set 0 to quit force control mode, reset to default value when power up.
ROH_FINGER_FORCE_TARGET5 1120 R/W Reserved.
ROH_FINGER_FORCE_TARGET6 1121 R/W Reserved.
ROH_FINGER_FORCE_TARGET7 1122 R/W Reserved.
ROH_FINGER_FORCE_TARGET8 1123 R/W Reserved.
ROH_FINGER_FORCE_TARGET9 1124 R/W Reserved.
ROH_FINGER_SPEED0 1125 R/W 65535 Logical speed (uint16) of thumb bending in logical posstion/second, reset to default value when power up.
ROH_FINGER_SPEED1 1126 R/W 65535 Logical speed (uint16) of index finger bending in logical posstion/second, reset to default value when power up.
ROH_FINGER_SPEED2 1127 R/W 65535 Logical speed (uint16) of middle finger in logical posstion/second, reset to default value when power up.
ROH_FINGER_SPEED3 1128 R/W 65535 Logical speed (uint16) of ring finger bending in logical posstion/second, reset to default value when power up.
ROH_FINGER_SPEED4 1129 R/W 65535 Logical speed (uint16) of little finger bending in logical posstion/second, reset to default value when power up.
ROH_FINGER_SPEED5 1130 R/W 65535 Logical speed (uint16)d of thumb rotation in logical posstion/secon, reset to default value when power up.
ROH_FINGER_SPEED6 1131 R/W Reserved.
ROH_FINGER_SPEED7 1132 R/W Reserved.
ROH_FINGER_SPEED8 1133 R/W Reserved.
ROH_FINGER_SPEED9 1134 R/W Reserved.
ROH_FINGER_POS_TARGET0 1135 R/W Logical target position (uint16) of thumb bending.
ROH_FINGER_POS_TARGET1 1136 R/W Logical target position (uint16) of index finger bending.
ROH_FINGER_POS_TARGET2 1137 R/W Logical target position (uint16) of middle finger bending.
ROH_FINGER_POS_TARGET3 1138 R/W Logical target position (uint16) of ring finger bending.
ROH_FINGER_POS_TARGET4 1139 R/W Logical target position (uint16) of little finger bending.
ROH_FINGER_POS_TARGET5 1140 R/W Logical target position (uint16) of thumb rotation.
ROH_FINGER_POS_TARGET6 1141 R/W Reserved.
ROH_FINGER_POS_TARGET7 1142 R/W Reserved.
ROH_FINGER_POS_TARGET8 1143 R/W Reserved.
ROH_FINGER_POS_TARGET9 1144 R/W Reserved.
ROH_FINGER_POS0 1145 R Logical position (uint16) of thumb bending.
ROH_FINGER_POS1 1146 R Logical position (uint16) of index finger bending.
ROH_FINGER_POS2 1147 R Logical position (uint16) of middle finger bending.
ROH_FINGER_POS3 1148 R Logical position (uint16) of ring finger bending.
ROH_FINGER_POS4 1149 R Logical position (uint16) of little finger bending.
ROH_FINGER_POS5 1150 R Logical position (uint16) of thumb rotation.
ROH_FINGER_POS6 1151 R Reserved.
ROH_FINGER_POS7 1152 R Reserved.
ROH_FINGER_POS8 1153 R Reserved.
ROH_FINGER_POS9 1154 R Reserved.
ROH_FINGER_ANGLE_TARGET0 1155 R/W Target angle between the thumb motor axis and the rotation axis (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET1 1156 R/W Target angle between the the first section of the index finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET2 1157 R/W Target angle between the the first section of the middle finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET3 1158 R/W Target angle between the the first section of the ring finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET4 1159 R/W Target angle between the the first section of the little finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET5 1160 R/W Target angle of the thumb rotation (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE_TARGET6 1161 R/W Reserved.
ROH_FINGER_ANGLE_TARGET7 1162 R/W Reserved.
ROH_FINGER_ANGLE_TARGET8 1163 R/W Reserved.
ROH_FINGER_ANGLE_TARGET9 1164 R/W Reserved.
ROH_FINGER_ANGLE0 1165 R Angle between the thumb motor axis and the rotation axis (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE1 1166 R Angle between the the first section of the index finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE2 1167 R Angle between the the first section of the middle finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE3 1168 R Angle between the the first section of the ring finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE4 1169 R Angle between the the first section of the little finger and the palm (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE5 1170 R Angle of the thumb rotation (int16) in degree, equals the actual angle*100.
ROH_FINGER_ANGLE6 1171 R Reserved.
ROH_FINGER_ANGLE7 1172 R Reserved.
ROH_FINGER_ANGLE8 1173 R Reserved.
ROH_FINGER_ANGLE9 1174 R Reserved.
ROH_FINGER_FORCE0 1175 R Force value (uint16) of thumb in mN.
ROH_FINGER_FORCE1 1176 R Force value (uint16) of index finger in mN.
ROH_FINGER_FORCE2 1177 R Force value (uint16) of middle finger in mN.
ROH_FINGER_FORCE3 1178 R Force value (uint16) of ring finger in mN.
ROH_FINGER_FORCE4 1179 R Force value (uint16) of little finger in mN.
ROH_FINGER_FORCE5 1180 R Reserved.
ROH_FINGER_FORCE6 1181 R Reserved.
ROH_FINGER_FORCE7 1182 R Reserved.
ROH_FINGER_FORCE8 1183 R Reserved.
ROH_FINGER_FORCE9 1184 R Reserved.
ROH_FINGER_STOP_SPEED0 1185 R/W
ROH_FINGER_STOP_SPEED1 1186 R/W
ROH_FINGER_STOP_SPEED2 1187 R/W
ROH_FINGER_STOP_SPEED3 1188 R/W
ROH_FINGER_STOP_SPEED4 1189 R/W
ROH_FINGER_STOP_SPEED5 1190 R/W
ROH_FINGER_STOP_SPEED6 1191 R/W
ROH_FINGER_STOP_SPEED7 1192 R/W
ROH_FINGER_STOP_SPEED8 1193 R/W
ROH_FINGER_STOP_SPEED9 1194 R/W
ROH_FINGER_STOP_CURRENT0 1195 R/W 200 Thumb bending motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT1 1196 R/W 200 Index finger bending motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT2 1197 R/W 200 Middle finger bending motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT3 1198 R/W 200 Ring finger bending motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT4 1199 R/W 200 Little finger bending motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT5 1200 R/W 200 Thumb rotation motor stall stop current limit value (uint16), unit mA, resets to default value on startup
ROH_FINGER_STOP_CURRENT6 1201 R/W Reserved
ROH_FINGER_STOP_CURRENT7 1202 R/W Reserved
ROH_FINGER_STOP_CURRENT8 1203 R/W Reserved
ROH_FINGER_STOP_CURRENT9 1204 R/W Reserved
ROH_FINGER_STOP_AFTER_PERIOD0 1205 R/W 300 Thumb bending motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD1 1206 R/W 300 Index finger bending motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD2 1207 R/W 300 Middle finger bending motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD3 1208 R/W 300 Ring finger bending motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD4 1209 R/W 300 Little finger bending motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD5 1210 R/W 300 Thumb rotation motor stall stop time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_AFTER_PERIOD6 1211 R/W Reserved
ROH_FINGER_STOP_AFTER_PERIOD7 1212 R/W Reserved
ROH_FINGER_STOP_AFTER_PERIOD8 1213 R/W Reserved
ROH_FINGER_STOP_AFTER_PERIOD9 1214 R/W Reserved
ROH_FINGER_STOP_RETRY_PERIOD0 1215 R/W 500 Thumb bending motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD1 1216 R/W 500 Index finger bending motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD2 1217 R/W 500 Middle finger bending motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD3 1218 R/W 500 Ring finger bending motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD4 1219 R/W 500 Little finger bending motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD5 1220 R/W 500 Thumb rotation motor stall stop retry time (uint16), unit ms, resets to default value on startup
ROH_FINGER_STOP_RETRY_PERIOD6 1221 R/W Reserved
ROH_FINGER_STOP_RETRY_PERIOD7 1222 R/W Reserved
ROH_FINGER_STOP_RETRY_PERIOD8 1223 R/W Reserved
ROH_FINGER_STOP_RETRY_PERIOD9 1224 R/W Reserved
ROH_FINGER_FORCE_P0 1225 R/W Force control P-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_P1 1226 R/W Force control P-value *100 (uint16) of index finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_P2 1227 R/W Force control P-value *100 (uint16) of middle finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_P3 1228 R/W Force control P-value *100 (uint16) of ring finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_P4 1229 R/W Force control P-value *100 (uint16) of little finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_P5 1230 R/W Reserved
ROH_FINGER_FORCE_P6 1231 R/W Reserved
ROH_FINGER_FORCE_P7 1232 R/W Reserved
ROH_FINGER_FORCE_P8 1233 R/W Reserved
ROH_FINGER_FORCE_P9 1234 R/W Reserved
ROH_FINGER_FORCE_I0 1235 R/W Force control I-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_I1 1236 R/W Force control I-value *100 (uint16) of index finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_I2 1237 R/W Force control I-value *100 (uint16) of middle finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_I3 1238 R/W Force control I-value *100 (uint16) of ring finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_I4 1239 R/W Force control I-value *100 (uint16) of little finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_I5 1240 R/W Reserved
ROH_FINGER_FORCE_I6 1241 R/W Reserved
ROH_FINGER_FORCE_I7 1242 R/W Reserved
ROH_FINGER_FORCE_I8 1243 R/W Reserved
ROH_FINGER_FORCE_I9 1244 R/W Reserved
ROH_FINGER_FORCE_D0 1245 R/W Force control D-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_D1 1246 R/W Force control D-value *100 (uint16) of index finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_D2 1247 R/W Force control D-value *100 (uint16) of middle finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_D3 1248 R/W Force control D-value *100 (uint16) of ring finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_D4 1249 R/W Force control D-value *100 (uint16) of little finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_D5 1250 R/W Reserved
ROH_FINGER_FORCE_D6 1251 R/W Reserved
ROH_FINGER_FORCE_D7 1252 R/W Reserved
ROH_FINGER_FORCE_D8 1253 R/W Reserved
ROH_FINGER_FORCE_D9 1254 R/W Reserved
ROH_FINGER_FORCE_G0 1255 R/W Force control G-value *100 (uint16) of thumb bending, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_G1 1256 R/W Force control G-value *100 (uint16) of index finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_G2 1257 R/W Force control G-value *100 (uint16) of middle finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_G3 1258 R/W Force control G-value *100 (uint16) of ring finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_G4 1259 R/W Force control G-value *100 (uint16) of little finger, saved to Non-Volatile Memory (NVM) when setting.
ROH_FINGER_FORCE_G5 1260 R/W Reserved
ROH_FINGER_FORCE_G6 1261 R/W Reserved
ROH_FINGER_FORCE_G7 1262 R/W Reserved
ROH_FINGER_FORCE_G8 1263 R/W Reserved
ROH_FINGER_FORCE_G9 1264 R/W Reserved
ROH_FINGER_FORCE_EX0 2000 R Head of force senser 0 data register group, see details for different sensor types.
... ... R Force senser 0 data registers.
ROH_FINGER_FORCE_EX0_END 2099 R End of force senser01 data register group.
ROH_FINGER_FORCE_EX1 2100 R Head of force senser 1 data register group,
... ... R Force senser 1 data registers.
ROH_FINGER_FORCE_EX1_END 2199 R End of force senser 1 data register group.
ROH_FINGER_FORCE_EX2 2200 R Head of force senser 2 data register group,
... ... R Force senser 2 data registers.
ROH_FINGER_FORCE_EX2_END 2299 R End of force senser 2 data register group.
ROH_FINGER_FORCE_EX3 2300 R Head of force senser 3 data register group,
... ... R Force senser 3 data registers.
ROH_FINGER_FORCE_EX3_END 2399 R End of force senser 3 data register group.
ROH_FINGER_FORCE_EX4 2400 R Head of force senser 4 data register group,
... ... R Force senser 4 data registers.
ROH_FINGER_FORCE_EX4_END 2499 R End of force senser 4 data register group.
ROH_FINGER_FORCE_EX5 2500 R Head of force senser 5 data register group,
... ... R Force senser 5 data registers.
ROH_FINGER_FORCE_EX5_END 2599 R End of force senser 5 data register group.
ROH_FINGER_FORCE_EX6 2600 R Head of force senser 6 data register group,
... ... R Force senser 6 data registers.
ROH_FINGER_FORCE_EX6_END 2699 R End of force senser 6 data register group.
ROH_FINGER_FORCE_EX7 2700 R Head of force senser 7 data register group,
... ... R Force senser 7 data registers.
ROH_FINGER_FORCE_EX7_END 2799 R End of force senser 7 data register group.
ROH_FINGER_FORCE_EX8 2800 R Head of force senser 8 data register group,
... ... R Force senser 8 data registers.
ROH_FINGER_FORCE_EX8_END 2899 R End of force senser 8 data register group.
ROH_FINGER_FORCE_EX9 2900 R Head of force senser 9 data register group,
... ... R Force senser 9 data registers.
ROH_FINGER_FORCE_EX9_END 2999 R End of force senser 9 data register group.

notes:

ROH_FINGER_FORCE_EX0 to ROH_FINGER_FORCE_EX9 are the starting addresses for the data of individual force sensors. The actual data length for each sensor depends on the hardware, and each data value is of type uint16.

  1. Dot Matrix Version: Thumb: 7 × 5 bytes (corresponding to 18 registers). The high 8 bits of the first register represent the first data byte. Each byte independently indicates the force magnitude in units of mN, and so on. Index finger: 12 × 5 bytes. Middle finger: 12 × 5 bytes. Ring finger: 12 × 5 bytes. Little finger: 8 × 4 bytes. Palm: 11 × 5 bytes.

  2. 3D Force Version: TBD.

  3. 1D Force Version: uint6 data, representing force magnitude in units of mN.

Enclose the C/C++ macro definition of registers:

#define FORCE_GROUP_SIZE              (100)

/* ModBus-RTU registers */   

#define ROH_PROTOCOL_VERSION          (1000) /* R   */
#define ROH_FW_VERSION                (1001) /* R   */
#define ROH_FW_REVISION               (1002) /* R   */
#define ROH_HW_VERSION                (1003) /* R   */
#define ROH_BOOT_VERSION              (1004) /* R   */
#define ROH_NODE_ID                   (1005) /* R/W */
#define ROH_SUB_EXCEPTION             (1006) /* R   */
#define ROH_BATTERY_VOLTAGE           (1007) /* R   */
#define ROH_SELF_TEST_LEVEL           (1008) /* R/W */
#define ROH_BEEP_SWITCH               (1009) /* R/W */
#define ROH_BEEP_PERIOD               (1010) /* W   */
#define ROH_BUTTON_PRESS_CNT          (1011) /* R/W */
#define ROH_RECALIBRATE               (1012) /* W   */
#define ROH_START_INIT                (1013) /* W   */
#define ROH_RESET                     (1014) /* W   */
#define ROH_POWER_OFF                 (1015) /* W   */
#define ROH_RESET_FORCE               (1016) /* W   */
#define ROH_RESERVED1                 (1017) /* R/W */
#define ROH_RESERVED2                 (1018) /* R/W */
#define ROH_RESERVED3                 (1019) /* R/W */
#define ROH_CALI_END0                 (1020) /* R/W */
#define ROH_CALI_END1                 (1021) /* R/W */
#define ROH_CALI_END2                 (1022) /* R/W */
#define ROH_CALI_END3                 (1023) /* R/W */
#define ROH_CALI_END4                 (1024) /* R/W */
#define ROH_CALI_END5                 (1025) /* R/W */
#define ROH_CALI_END6                 (1026) /* R/W */
#define ROH_CALI_END7                 (1027) /* R/W */
#define ROH_CALI_END8                 (1028) /* R/W */
#define ROH_CALI_END9                 (1029) /* R/W */
#define ROH_CALI_START0               (1030) /* R/W */
#define ROH_CALI_START1               (1031) /* R/W */
#define ROH_CALI_START2               (1032) /* R/W */
#define ROH_CALI_START3               (1033) /* R/W */
#define ROH_CALI_START4               (1034) /* R/W */
#define ROH_CALI_START5               (1035) /* R/W */
#define ROH_CALI_START6               (1036) /* R/W */
#define ROH_CALI_START7               (1037) /* R/W */
#define ROH_CALI_START8               (1038) /* R/W */
#define ROH_CALI_START9               (1039) /* R/W */
#define ROH_CALI_THUMB_POS0           (1040) /* R/W */
#define ROH_CALI_THUMB_POS1           (1041) /* R/W */
#define ROH_CALI_THUMB_POS2           (1042) /* R/W */
#define ROH_CALI_THUMB_POS3           (1043) /* R/W */
#define ROH_CALI_THUMB_POS4           (1044) /* R/W */
#define ROH_FINGER_P0                 (1045) /* R/W */
#define ROH_FINGER_P1                 (1046) /* R/W */
#define ROH_FINGER_P2                 (1047) /* R/W */
#define ROH_FINGER_P3                 (1048) /* R/W */
#define ROH_FINGER_P4                 (1049) /* R/W */
#define ROH_FINGER_P5                 (1050) /* R/W */
#define ROH_FINGER_P6                 (1051) /* R/W */
#define ROH_FINGER_P7                 (1052) /* R/W */
#define ROH_FINGER_P8                 (1053) /* R/W */
#define ROH_FINGER_P9                 (1054) /* R/W */
#define ROH_FINGER_I0                 (1055) /* R/W */
#define ROH_FINGER_I1                 (1056) /* R/W */
#define ROH_FINGER_I2                 (1057) /* R/W */
#define ROH_FINGER_I3                 (1058) /* R/W */
#define ROH_FINGER_I4                 (1059) /* R/W */
#define ROH_FINGER_I5                 (1060) /* R/W */
#define ROH_FINGER_I6                 (1061) /* R/W */
#define ROH_FINGER_I7                 (1062) /* R/W */
#define ROH_FINGER_I8                 (1063) /* R/W */
#define ROH_FINGER_I9                 (1064) /* R/W */
#define ROH_FINGER_D0                 (1065) /* R/W */
#define ROH_FINGER_D1                 (1066) /* R/W */
#define ROH_FINGER_D2                 (1067) /* R/W */
#define ROH_FINGER_D3                 (1068) /* R/W */
#define ROH_FINGER_D4                 (1069) /* R/W */
#define ROH_FINGER_D5                 (1070) /* R/W */
#define ROH_FINGER_D6                 (1071) /* R/W */
#define ROH_FINGER_D7                 (1072) /* R/W */
#define ROH_FINGER_D8                 (1073) /* R/W */
#define ROH_FINGER_D9                 (1074) /* R/W */
#define ROH_FINGER_G0                 (1075) /* R/W */
#define ROH_FINGER_G1                 (1076) /* R/W */
#define ROH_FINGER_G2                 (1077) /* R/W */
#define ROH_FINGER_G3                 (1078) /* R/W */
#define ROH_FINGER_G4                 (1079) /* R/W */
#define ROH_FINGER_G5                 (1080) /* R/W */
#define ROH_FINGER_G6                 (1081) /* R/W */
#define ROH_FINGER_G7                 (1082) /* R/W */
#define ROH_FINGER_G8                 (1083) /* R/W */
#define ROH_FINGER_G9                 (1084) /* R/W */
#define ROH_FINGER_STATUS0            (1085) /* R   */
#define ROH_FINGER_STATUS1            (1086) /* R   */
#define ROH_FINGER_STATUS2            (1087) /* R   */
#define ROH_FINGER_STATUS3            (1088) /* R   */
#define ROH_FINGER_STATUS4            (1089) /* R   */
#define ROH_FINGER_STATUS5            (1090) /* R   */
#define ROH_FINGER_STATUS6            (1091) /* R   */
#define ROH_FINGER_STATUS7            (1092) /* R   */
#define ROH_FINGER_STATUS8            (1093) /* R   */
#define ROH_FINGER_STATUS9            (1094) /* R   */
#define ROH_FINGER_CURRENT_LIMIT0     (1095) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT1     (1096) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT2     (1097) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT3     (1098) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT4     (1099) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT5     (1100) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT6     (1101) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT7     (1102) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT8     (1103) /* R/W */
#define ROH_FINGER_CURRENT_LIMIT9     (1104) /* R/W */
#define ROH_FINGER_CURRENT0           (1105) /* R   */
#define ROH_FINGER_CURRENT1           (1106) /* R   */
#define ROH_FINGER_CURRENT2           (1107) /* R   */
#define ROH_FINGER_CURRENT3           (1108) /* R   */
#define ROH_FINGER_CURRENT4           (1109) /* R   */
#define ROH_FINGER_CURRENT5           (1110) /* R   */
#define ROH_FINGER_CURRENT6           (1111) /* R   */
#define ROH_FINGER_CURRENT7           (1112) /* R   */
#define ROH_FINGER_CURRENT8           (1113) /* R   */
#define ROH_FINGER_CURRENT9           (1114) /* R   */
#define ROH_FINGER_FORCE_TARGET0      (1115) /* R/W */
#define ROH_FINGER_FORCE_TARGET1      (1116) /* R/W */
#define ROH_FINGER_FORCE_TARGET2      (1117) /* R/W */
#define ROH_FINGER_FORCE_TARGET3      (1118) /* R/W */
#define ROH_FINGER_FORCE_TARGET4      (1119) /* R/W */
#define ROH_FINGER_FORCE_TARGET5      (1120) /* R/W */
#define ROH_FINGER_FORCE_TARGET6      (1121) /* R/W */
#define ROH_FINGER_FORCE_TARGET7      (1122) /* R/W */
#define ROH_FINGER_FORCE_TARGET8      (1123) /* R/W */
#define ROH_FINGER_FORCE_TARGET9      (1124) /* R/W */
#define ROH_FINGER_SPEED0             (1125) /* R/W */
#define ROH_FINGER_SPEED1             (1126) /* R/W */
#define ROH_FINGER_SPEED2             (1127) /* R/W */
#define ROH_FINGER_SPEED3             (1128) /* R/W */
#define ROH_FINGER_SPEED4             (1129) /* R/W */
#define ROH_FINGER_SPEED5             (1130) /* R/W */
#define ROH_FINGER_SPEED6             (1131) /* R/W */
#define ROH_FINGER_SPEED7             (1132) /* R/W */
#define ROH_FINGER_SPEED8             (1133) /* R/W */
#define ROH_FINGER_SPEED9             (1134) /* R/W */
#define ROH_FINGER_POS_TARGET0        (1135) /* R/W */
#define ROH_FINGER_POS_TARGET1        (1136) /* R/W */
#define ROH_FINGER_POS_TARGET2        (1137) /* R/W */
#define ROH_FINGER_POS_TARGET3        (1138) /* R/W */
#define ROH_FINGER_POS_TARGET4        (1139) /* R/W */
#define ROH_FINGER_POS_TARGET5        (1140) /* R/W */
#define ROH_FINGER_POS_TARGET6        (1141) /* R/W */
#define ROH_FINGER_POS_TARGET7        (1142) /* R/W */
#define ROH_FINGER_POS_TARGET8        (1143) /* R/W */
#define ROH_FINGER_POS_TARGET9        (1144) /* R/W */
#define ROH_FINGER_POS0               (1145) /* R   */
#define ROH_FINGER_POS1               (1146) /* R   */
#define ROH_FINGER_POS2               (1147) /* R   */
#define ROH_FINGER_POS3               (1148) /* R   */
#define ROH_FINGER_POS4               (1149) /* R   */
#define ROH_FINGER_POS5               (1150) /* R   */
#define ROH_FINGER_POS6               (1151) /* R   */
#define ROH_FINGER_POS7               (1152) /* R   */
#define ROH_FINGER_POS8               (1153) /* R   */
#define ROH_FINGER_POS9               (1154) /* R   */
#define ROH_FINGER_ANGLE_TARGET0      (1155) /* R/W */
#define ROH_FINGER_ANGLE_TARGET1      (1156) /* R/W */
#define ROH_FINGER_ANGLE_TARGET2      (1157) /* R/W */
#define ROH_FINGER_ANGLE_TARGET3      (1158) /* R/W */
#define ROH_FINGER_ANGLE_TARGET4      (1159) /* R/W */
#define ROH_FINGER_ANGLE_TARGET5      (1160) /* R/W */
#define ROH_FINGER_ANGLE_TARGET6      (1161) /* R/W */
#define ROH_FINGER_ANGLE_TARGET7      (1162) /* R/W */
#define ROH_FINGER_ANGLE_TARGET8      (1163) /* R/W */
#define ROH_FINGER_ANGLE_TARGET9      (1164) /* R/W */
#define ROH_FINGER_ANGLE0             (1165) /* R   */
#define ROH_FINGER_ANGLE1             (1166) /* R   */
#define ROH_FINGER_ANGLE2             (1167) /* R   */
#define ROH_FINGER_ANGLE3             (1168) /* R   */
#define ROH_FINGER_ANGLE4             (1169) /* R   */
#define ROH_FINGER_ANGLE5             (1170) /* R   */
#define ROH_FINGER_ANGLE6             (1171) /* R   */
#define ROH_FINGER_ANGLE7             (1172) /* R   */
#define ROH_FINGER_ANGLE8             (1173) /* R   */
#define ROH_FINGER_ANGLE9             (1174) /* R   */
#define ROH_FINGER_FORCE0             (1175) /* R   */
#define ROH_FINGER_FORCE1             (1176) /* R   */
#define ROH_FINGER_FORCE2             (1177) /* R   */
#define ROH_FINGER_FORCE3             (1178) /* R   */
#define ROH_FINGER_FORCE4             (1179) /* R   */
#define ROH_FINGER_FORCE5             (1180) /* R   */
#define ROH_FINGER_FORCE6             (1181) /* R   */
#define ROH_FINGER_FORCE7             (1182) /* R   */
#define ROH_FINGER_FORCE8             (1183) /* R   */
#define ROH_FINGER_FORCE9             (1184) /* R   */
#define ROH_FINGER_STOP_SPEED0        (1185) /* R/W */
#define ROH_FINGER_STOP_SPEED1        (1186) /* R/W */
#define ROH_FINGER_STOP_SPEED2        (1187) /* R/W */
#define ROH_FINGER_STOP_SPEED3        (1188) /* R/W */
#define ROH_FINGER_STOP_SPEED4        (1189) /* R/W */
#define ROH_FINGER_STOP_SPEED5        (1190) /* R/W */
#define ROH_FINGER_STOP_SPEED6        (1191) /* R/W */
#define ROH_FINGER_STOP_SPEED7        (1192) /* R/W */
#define ROH_FINGER_STOP_SPEED8        (1193) /* R/W */
#define ROH_FINGER_STOP_SPEED9        (1194) /* R/W */
#define ROH_FINGER_STOP_CURRENT0      (1195) /* R/W */
#define ROH_FINGER_STOP_CURRENT1      (1196) /* R/W */
#define ROH_FINGER_STOP_CURRENT2      (1197) /* R/W */
#define ROH_FINGER_STOP_CURRENT3      (1198) /* R/W */
#define ROH_FINGER_STOP_CURRENT4      (1199) /* R/W */
#define ROH_FINGER_STOP_CURRENT5      (1200) /* R/W */
#define ROH_FINGER_STOP_CURRENT6      (1201) /* R/W */
#define ROH_FINGER_STOP_CURRENT7      (1202) /* R/W */
#define ROH_FINGER_STOP_CURRENT8      (1203) /* R/W */
#define ROH_FINGER_STOP_CURRENT9      (1204) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD0 (1205) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD1 (1206) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD2 (1207) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD3 (1208) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD4 (1209) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD5 (1210) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD6 (1211) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD7 (1212) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD8 (1213) /* R/W */
#define ROH_FINGER_STOP_AFTER_PERIOD9 (1214) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD0 (1215) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD1 (1216) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD2 (1217) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD3 (1218) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD4 (1219) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD5 (1220) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD6 (1221) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD7 (1222) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD8 (1223) /* R/W */
#define ROH_FINGER_STOP_RETRY_PERIOD9 (1224) /* R/W */
#define ROH_FINGER_FORCE_P0           (1225) /* R/W */
#define ROH_FINGER_FORCE_P1           (1226) /* R/W */
#define ROH_FINGER_FORCE_P2           (1227) /* R/W */
#define ROH_FINGER_FORCE_P3           (1228) /* R/W */
#define ROH_FINGER_FORCE_P4           (1229) /* R/W */
#define ROH_FINGER_FORCE_P5           (1230) /* R/W */
#define ROH_FINGER_FORCE_P6           (1231) /* R/W */
#define ROH_FINGER_FORCE_P7           (1232) /* R/W */
#define ROH_FINGER_FORCE_P8           (1233) /* R/W */
#define ROH_FINGER_FORCE_P9           (1234) /* R/W */
#define ROH_FINGER_FORCE_I0           (1235) /* R/W */
#define ROH_FINGER_FORCE_I1           (1236) /* R/W */
#define ROH_FINGER_FORCE_I2           (1237) /* R/W */
#define ROH_FINGER_FORCE_I3           (1238) /* R/W */
#define ROH_FINGER_FORCE_I4           (1239) /* R/W */
#define ROH_FINGER_FORCE_I5           (1240) /* R/W */
#define ROH_FINGER_FORCE_I6           (1241) /* R/W */
#define ROH_FINGER_FORCE_I7           (1242) /* R/W */
#define ROH_FINGER_FORCE_I8           (1243) /* R/W */
#define ROH_FINGER_FORCE_I9           (1244) /* R/W */
#define ROH_FINGER_FORCE_D0           (1245) /* R/W */
#define ROH_FINGER_FORCE_D1           (1246) /* R/W */
#define ROH_FINGER_FORCE_D2           (1247) /* R/W */
#define ROH_FINGER_FORCE_D3           (1248) /* R/W */
#define ROH_FINGER_FORCE_D4           (1249) /* R/W */
#define ROH_FINGER_FORCE_D5           (1250) /* R/W */
#define ROH_FINGER_FORCE_D6           (1251) /* R/W */
#define ROH_FINGER_FORCE_D7           (1252) /* R/W */
#define ROH_FINGER_FORCE_D8           (1253) /* R/W */
#define ROH_FINGER_FORCE_D9           (1254) /* R/W */
#define ROH_FINGER_FORCE_G0           (1255) /* R/W */
#define ROH_FINGER_FORCE_G1           (1256) /* R/W */
#define ROH_FINGER_FORCE_G2           (1257) /* R/W */
#define ROH_FINGER_FORCE_G3           (1258) /* R/W */
#define ROH_FINGER_FORCE_G4           (1259) /* R/W */
#define ROH_FINGER_FORCE_G5           (1260) /* R/W */
#define ROH_FINGER_FORCE_G6           (1261) /* R/W */
#define ROH_FINGER_FORCE_G7           (1262) /* R/W */
#define ROH_FINGER_FORCE_G8           (1263) /* R/W */
#define ROH_FINGER_FORCE_G9           (1264) /* R/W */

#define ROH_FINGER_FORCE_EX0          (2000 + 0 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX1          (2000 + 1 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX2          (2000 + 2 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX3          (2000 + 3 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX4          (2000 + 4 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX5          (2000 + 5 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX6          (2000 + 6 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX7          (2000 + 7 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX8          (2000 + 8 * FORCE_GROUP_SIZE) /* R   */
#define ROH_FINGER_FORCE_EX9          (2000 + 9 * FORCE_GROUP_SIZE) /* R   */
# Define
FORCE_GROUP_SIZE              = (100)  # Max entries count for each force sensor

# ModBus-RTU registers for ROH

ROH_PROTOCOL_VERSION          = (1000) # R
ROH_FW_VERSION                = (1001) # R
ROH_FW_REVISION               = (1002) # R
ROH_HW_VERSION                = (1003) # R
ROH_BOOT_VERSION              = (1004) # R
ROH_NODE_ID                   = (1005) # R/W
ROH_SUB_EXCEPTION             = (1006) # R
ROH_BATTERY_VOLTAGE           = (1007) # R
ROH_SELF_TEST_LEVEL           = (1008) # R/W
ROH_BEEP_SWITCH               = (1009) # R/W
ROH_BEEP_PERIOD               = (1010) # W
ROH_BUTTON_PRESS_CNT          = (1011) # R/W
ROH_RECALIBRATE               = (1012) # W
ROH_START_INIT                = (1013) # W
ROH_RESET                     = (1014) # W
ROH_POWER_OFF                 = (1015) # W
ROH_RESET_FORCE               = (1016) # W
ROH_RESERVED1                 = (1017) # R/W
ROH_RESERVED2                 = (1018) # R/W
ROH_RESERVED3                 = (1019) # R/W
ROH_CALI_END0                 = (1020) # R/W
ROH_CALI_END1                 = (1021) # R/W
ROH_CALI_END2                 = (1022) # R/W
ROH_CALI_END3                 = (1023) # R/W
ROH_CALI_END4                 = (1024) # R/W
ROH_CALI_END5                 = (1025) # R/W
ROH_CALI_END6                 = (1026) # R/W
ROH_CALI_END7                 = (1027) # R/W
ROH_CALI_END8                 = (1028) # R/W
ROH_CALI_END9                 = (1029) # R/W
ROH_CALI_START0               = (1030) # R/W
ROH_CALI_START1               = (1031) # R/W
ROH_CALI_START2               = (1032) # R/W
ROH_CALI_START3               = (1033) # R/W
ROH_CALI_START4               = (1034) # R/W
ROH_CALI_START5               = (1035) # R/W
ROH_CALI_START6               = (1036) # R/W
ROH_CALI_START7               = (1037) # R/W
ROH_CALI_START8               = (1038) # R/W
ROH_CALI_START9               = (1039) # R/W
ROH_CALI_THUMB_POS0           = (1040) # R/W
ROH_CALI_THUMB_POS1           = (1041) # R/W
ROH_CALI_THUMB_POS2           = (1042) # R/W
ROH_CALI_THUMB_POS3           = (1043) # R/W
ROH_CALI_THUMB_POS4           = (1044) # R/W
ROH_FINGER_P0                 = (1045) # R/W
ROH_FINGER_P1                 = (1046) # R/W
ROH_FINGER_P2                 = (1047) # R/W
ROH_FINGER_P3                 = (1048) # R/W
ROH_FINGER_P4                 = (1049) # R/W
ROH_FINGER_P5                 = (1050) # R/W
ROH_FINGER_P6                 = (1051) # R/W
ROH_FINGER_P7                 = (1052) # R/W
ROH_FINGER_P8                 = (1053) # R/W
ROH_FINGER_P9                 = (1054) # R/W
ROH_FINGER_I0                 = (1055) # R/W
ROH_FINGER_I1                 = (1056) # R/W
ROH_FINGER_I2                 = (1057) # R/W
ROH_FINGER_I3                 = (1058) # R/W
ROH_FINGER_I4                 = (1059) # R/W
ROH_FINGER_I5                 = (1060) # R/W
ROH_FINGER_I6                 = (1061) # R/W
ROH_FINGER_I7                 = (1062) # R/W
ROH_FINGER_I8                 = (1063) # R/W
ROH_FINGER_I9                 = (1064) # R/W
ROH_FINGER_D0                 = (1065) # R/W
ROH_FINGER_D1                 = (1066) # R/W
ROH_FINGER_D2                 = (1067) # R/W
ROH_FINGER_D3                 = (1068) # R/W
ROH_FINGER_D4                 = (1069) # R/W
ROH_FINGER_D5                 = (1070) # R/W
ROH_FINGER_D6                 = (1071) # R/W
ROH_FINGER_D7                 = (1072) # R/W
ROH_FINGER_D8                 = (1073) # R/W
ROH_FINGER_D9                 = (1074) # R/W
ROH_FINGER_G0                 = (1075) # R/W
ROH_FINGER_G1                 = (1076) # R/W
ROH_FINGER_G2                 = (1077) # R/W
ROH_FINGER_G3                 = (1078) # R/W
ROH_FINGER_G4                 = (1079) # R/W
ROH_FINGER_G5                 = (1080) # R/W
ROH_FINGER_G6                 = (1081) # R/W
ROH_FINGER_G7                 = (1082) # R/W
ROH_FINGER_G8                 = (1083) # R/W
ROH_FINGER_G9                 = (1084) # R/W
ROH_FINGER_STATUS0            = (1085) # R
ROH_FINGER_STATUS1            = (1086) # R
ROH_FINGER_STATUS2            = (1087) # R
ROH_FINGER_STATUS3            = (1088) # R
ROH_FINGER_STATUS4            = (1089) # R
ROH_FINGER_STATUS5            = (1090) # R
ROH_FINGER_STATUS6            = (1091) # R
ROH_FINGER_STATUS7            = (1092) # R
ROH_FINGER_STATUS8            = (1093) # R
ROH_FINGER_STATUS9            = (1094) # R
ROH_FINGER_CURRENT_LIMIT0     = (1095) # R/W
ROH_FINGER_CURRENT_LIMIT1     = (1096) # R/W
ROH_FINGER_CURRENT_LIMIT2     = (1097) # R/W
ROH_FINGER_CURRENT_LIMIT3     = (1098) # R/W
ROH_FINGER_CURRENT_LIMIT4     = (1099) # R/W
ROH_FINGER_CURRENT_LIMIT5     = (1100) # R/W
ROH_FINGER_CURRENT_LIMIT6     = (1101) # R/W
ROH_FINGER_CURRENT_LIMIT7     = (1102) # R/W
ROH_FINGER_CURRENT_LIMIT8     = (1103) # R/W
ROH_FINGER_CURRENT_LIMIT9     = (1104) # R/W
ROH_FINGER_CURRENT0           = (1105) # R
ROH_FINGER_CURRENT1           = (1106) # R
ROH_FINGER_CURRENT2           = (1107) # R
ROH_FINGER_CURRENT3           = (1108) # R
ROH_FINGER_CURRENT4           = (1109) # R
ROH_FINGER_CURRENT5           = (1110) # R
ROH_FINGER_CURRENT6           = (1111) # R
ROH_FINGER_CURRENT7           = (1112) # R
ROH_FINGER_CURRENT8           = (1113) # R
ROH_FINGER_CURRENT9           = (1114) # R
ROH_FINGER_FORCE_TARGET0      = (1115) # R/W
ROH_FINGER_FORCE_TARGET1      = (1116) # R/W
ROH_FINGER_FORCE_TARGET2      = (1117) # R/W
ROH_FINGER_FORCE_TARGET3      = (1118) # R/W
ROH_FINGER_FORCE_TARGET4      = (1119) # R/W
ROH_FINGER_FORCE_TARGET5      = (1120) # R/W
ROH_FINGER_FORCE_TARGET6      = (1121) # R/W
ROH_FINGER_FORCE_TARGET7      = (1122) # R/W
ROH_FINGER_FORCE_TARGET8      = (1123) # R/W
ROH_FINGER_FORCE_TARGET9      = (1124) # R/W
ROH_FINGER_SPEED0             = (1125) # R/W
ROH_FINGER_SPEED1             = (1126) # R/W
ROH_FINGER_SPEED2             = (1127) # R/W
ROH_FINGER_SPEED3             = (1128) # R/W
ROH_FINGER_SPEED4             = (1129) # R/W
ROH_FINGER_SPEED5             = (1130) # R/W
ROH_FINGER_SPEED6             = (1131) # R/W
ROH_FINGER_SPEED7             = (1132) # R/W
ROH_FINGER_SPEED8             = (1133) # R/W
ROH_FINGER_SPEED9             = (1134) # R/W
ROH_FINGER_POS_TARGET0        = (1135) # R/W
ROH_FINGER_POS_TARGET1        = (1136) # R/W
ROH_FINGER_POS_TARGET2        = (1137) # R/W
ROH_FINGER_POS_TARGET3        = (1138) # R/W
ROH_FINGER_POS_TARGET4        = (1139) # R/W
ROH_FINGER_POS_TARGET5        = (1140) # R/W
ROH_FINGER_POS_TARGET6        = (1141) # R/W
ROH_FINGER_POS_TARGET7        = (1142) # R/W
ROH_FINGER_POS_TARGET8        = (1143) # R/W
ROH_FINGER_POS_TARGET9        = (1144) # R/W
ROH_FINGER_POS0               = (1145) # R
ROH_FINGER_POS1               = (1146) # R
ROH_FINGER_POS2               = (1147) # R
ROH_FINGER_POS3               = (1148) # R
ROH_FINGER_POS4               = (1149) # R
ROH_FINGER_POS5               = (1150) # R
ROH_FINGER_POS6               = (1151) # R
ROH_FINGER_POS7               = (1152) # R
ROH_FINGER_POS8               = (1153) # R
ROH_FINGER_POS9               = (1154) # R
ROH_FINGER_ANGLE_TARGET0      = (1155) # R/W
ROH_FINGER_ANGLE_TARGET1      = (1156) # R/W
ROH_FINGER_ANGLE_TARGET2      = (1157) # R/W
ROH_FINGER_ANGLE_TARGET3      = (1158) # R/W
ROH_FINGER_ANGLE_TARGET4      = (1159) # R/W
ROH_FINGER_ANGLE_TARGET5      = (1160) # R/W
ROH_FINGER_ANGLE_TARGET6      = (1161) # R/W
ROH_FINGER_ANGLE_TARGET7      = (1162) # R/W
ROH_FINGER_ANGLE_TARGET8      = (1163) # R/W
ROH_FINGER_ANGLE_TARGET9      = (1164) # R/W
ROH_FINGER_ANGLE0             = (1165) # R
ROH_FINGER_ANGLE1             = (1166) # R
ROH_FINGER_ANGLE2             = (1167) # R
ROH_FINGER_ANGLE3             = (1168) # R
ROH_FINGER_ANGLE4             = (1169) # R
ROH_FINGER_ANGLE5             = (1170) # R
ROH_FINGER_ANGLE6             = (1171) # R
ROH_FINGER_ANGLE7             = (1172) # R
ROH_FINGER_ANGLE8             = (1173) # R
ROH_FINGER_ANGLE9             = (1174) # R
ROH_FINGER_FORCE0             = (1175) # R
ROH_FINGER_FORCE1             = (1176) # R
ROH_FINGER_FORCE2             = (1177) # R
ROH_FINGER_FORCE3             = (1178) # R
ROH_FINGER_FORCE4             = (1179) # R
ROH_FINGER_FORCE5             = (1180) # R
ROH_FINGER_FORCE6             = (1181) # R
ROH_FINGER_FORCE7             = (1182) # R
ROH_FINGER_FORCE8             = (1183) # R
ROH_FINGER_FORCE9             = (1184) # R
ROH_FINGER_STOP_SPEED0        = (1185) # R/W
ROH_FINGER_STOP_SPEED1        = (1186) # R/W
ROH_FINGER_STOP_SPEED2        = (1187) # R/W
ROH_FINGER_STOP_SPEED3        = (1188) # R/W
ROH_FINGER_STOP_SPEED4        = (1189) # R/W
ROH_FINGER_STOP_SPEED5        = (1190) # R/W
ROH_FINGER_STOP_SPEED6        = (1191) # R/W
ROH_FINGER_STOP_SPEED7        = (1192) # R/W
ROH_FINGER_STOP_SPEED8        = (1193) # R/W
ROH_FINGER_STOP_SPEED9        = (1194) # R/W
ROH_FINGER_STOP_CURRENT0      = (1195) # R/W
ROH_FINGER_STOP_CURRENT1      = (1196) # R/W
ROH_FINGER_STOP_CURRENT2      = (1197) # R/W
ROH_FINGER_STOP_CURRENT3      = (1198) # R/W
ROH_FINGER_STOP_CURRENT4      = (1199) # R/W
ROH_FINGER_STOP_CURRENT5      = (1200) # R/W
ROH_FINGER_STOP_CURRENT6      = (1201) # R/W
ROH_FINGER_STOP_CURRENT7      = (1202) # R/W
ROH_FINGER_STOP_CURRENT8      = (1203) # R/W
ROH_FINGER_STOP_CURRENT9      = (1204) # R/W
ROH_FINGER_STOP_AFTER_PERIOD0 = (1205) # R/W
ROH_FINGER_STOP_AFTER_PERIOD1 = (1206) # R/W
ROH_FINGER_STOP_AFTER_PERIOD2 = (1207) # R/W
ROH_FINGER_STOP_AFTER_PERIOD3 = (1208) # R/W
ROH_FINGER_STOP_AFTER_PERIOD4 = (1209) # R/W
ROH_FINGER_STOP_AFTER_PERIOD5 = (1210) # R/W
ROH_FINGER_STOP_AFTER_PERIOD6 = (1211) # R/W
ROH_FINGER_STOP_AFTER_PERIOD7 = (1212) # R/W
ROH_FINGER_STOP_AFTER_PERIOD8 = (1213) # R/W
ROH_FINGER_STOP_AFTER_PERIOD9 = (1214) # R/W
ROH_FINGER_STOP_RETRY_PERIOD0 = (1215) # R/W
ROH_FINGER_STOP_RETRY_PERIOD1 = (1216) # R/W
ROH_FINGER_STOP_RETRY_PERIOD2 = (1217) # R/W
ROH_FINGER_STOP_RETRY_PERIOD3 = (1218) # R/W
ROH_FINGER_STOP_RETRY_PERIOD4 = (1219) # R/W
ROH_FINGER_STOP_RETRY_PERIOD5 = (1220) # R/W
ROH_FINGER_STOP_RETRY_PERIOD6 = (1221) # R/W
ROH_FINGER_STOP_RETRY_PERIOD7 = (1222) # R/W
ROH_FINGER_STOP_RETRY_PERIOD8 = (1223) # R/W
ROH_FINGER_STOP_RETRY_PERIOD9 = (1224) # R/W
ROH_FINGER_FORCE_P0           = (1225) # R/W
ROH_FINGER_FORCE_P1           = (1226) # R/W
ROH_FINGER_FORCE_P2           = (1227) # R/W
ROH_FINGER_FORCE_P3           = (1228) # R/W
ROH_FINGER_FORCE_P4           = (1229) # R/W
ROH_FINGER_FORCE_P5           = (1230) # R/W
ROH_FINGER_FORCE_P6           = (1231) # R/W
ROH_FINGER_FORCE_P7           = (1232) # R/W
ROH_FINGER_FORCE_P8           = (1233) # R/W
ROH_FINGER_FORCE_P9           = (1234) # R/W
ROH_FINGER_FORCE_I0           = (1235) # R/W
ROH_FINGER_FORCE_I1           = (1236) # R/W
ROH_FINGER_FORCE_I2           = (1237) # R/W
ROH_FINGER_FORCE_I3           = (1238) # R/W
ROH_FINGER_FORCE_I4           = (1239) # R/W
ROH_FINGER_FORCE_I5           = (1240) # R/W
ROH_FINGER_FORCE_I6           = (1241) # R/W
ROH_FINGER_FORCE_I7           = (1242) # R/W
ROH_FINGER_FORCE_I8           = (1243) # R/W
ROH_FINGER_FORCE_I9           = (1244) # R/W
ROH_FINGER_FORCE_D0           = (1245) # R/W
ROH_FINGER_FORCE_D1           = (1246) # R/W
ROH_FINGER_FORCE_D2           = (1247) # R/W
ROH_FINGER_FORCE_D3           = (1248) # R/W
ROH_FINGER_FORCE_D4           = (1249) # R/W
ROH_FINGER_FORCE_D5           = (1250) # R/W
ROH_FINGER_FORCE_D6           = (1251) # R/W
ROH_FINGER_FORCE_D7           = (1252) # R/W
ROH_FINGER_FORCE_D8           = (1253) # R/W
ROH_FINGER_FORCE_D9           = (1254) # R/W
ROH_FINGER_FORCE_G0           = (1255) # R/W
ROH_FINGER_FORCE_G1           = (1256) # R/W
ROH_FINGER_FORCE_G2           = (1257) # R/W
ROH_FINGER_FORCE_G3           = (1258) # R/W
ROH_FINGER_FORCE_G4           = (1259) # R/W
ROH_FINGER_FORCE_G5           = (1260) # R/W
ROH_FINGER_FORCE_G6           = (1261) # R/W
ROH_FINGER_FORCE_G7           = (1262) # R/W
ROH_FINGER_FORCE_G8           = (1263) # R/W
ROH_FINGER_FORCE_G9           = (1264) # R/W

ROH_FINGER_FORCE_EX0          = (2000 + 0 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX1          = (2000 + 1 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX2          = (2000 + 2 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX3          = (2000 + 3 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX4          = (2000 + 4 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX5          = (2000 + 5 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX6          = (2000 + 6 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX7          = (2000 + 7 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX8          = (2000 + 8 * FORCE_GROUP_SIZE) # R
ROH_FINGER_FORCE_EX9          = (2000 + 9 * FORCE_GROUP_SIZE) # R

4.2. Angle of ROH_FINGER_ANGLE_TARGET and ROH_FINGER_POS

Description of angle definition and motion range:

Angle Legend Angle range
Index finger

Middle finger

Ring finger

Little finger
Finger Screen 100.22°~178.37°

97.81° ~ 176.06°

101.38° ~ 176.54°

98.84° ~ 174.86°
Thumb bending Finger Screen 2.26° ~ 36.76°
Thumb rotation Finger Screen 0° ~ 90°

4.3. Status code of ROH_FINGER_STATUS

Status name Status code Description
STATUS_OPENING 0 Spreading
STATUS_CLOSING 1 Grasping
STATUS_POS_REACHED 2 Position reached stop
STATUS_OVER_CURRENT 3 Current protection stop
STATUS_FORCE_REACHED 4 Force control reached stop
STATUS_STUCK 5 Motor stuck stop