AIDIN-hand TCP/IP Communication Manual
✅ 2025.09.15
Overview
- AIDIN-hand can be controlled from the high-level controller via TCP/IP communication.
- AIDIN-hand is a server node, and the provided example code is a client node.
TCP/IP communication information
- Port number: 8000
- Buffer size: 2048
- JSON data types
- KEY and VALUE information
-
- Hand command information (received value based on hand)
-
-
- “hand_mode” : v1 (data type: uint16_t)
-> operating mode setting variable
- “hand_mode” : v1 (data type: uint16_t)
-
-
-
- “maxtorque” : v1 (data type: uint16_t)
-> maximum output current setting variable
- “maxtorque” : v1 (data type: uint16_t)
-
-
-
- “hand_TP_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int[15])
-> position control setting value based on motor encoder value
-> v1, v2, v3: Thumb 1,2,3 motor encoder values / v4, v5, v6: Index finger 1,2,3 motor encoder values / v7, v8, v9: Middle finger 1,2,3 motor encoder values / v10, v11, v12: Ring finger 1,2,3 motor encoder values / v13, v14, v15: little finger 1,2,3 motor encoder values
- “hand_TP_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int[15])
-
-
-
- “hand_joint_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20} (data type: double[20])
-> position control setting value based on finger joint angle value (radians)
-> v1, v2, v3, v4: Thumb q1, q2, q3, q4 joint angle values / v5, v6, v7, v8: Index finger q1, q2, q3, q4 joint angle values / v9, v10, v11, v12: Middle finger q1, q2, q3, q4 joint angle values / v13, v14, v15, v16: Ring finger q1, q2, q3, q4 joint angle values / v17, v18, v19, v20: little finger q1, q2, q3, q4 joint angle values
(q3, q4 are coupled, so only q3 value needs to be entered)
- “hand_joint_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20} (data type: double[20])
-
-
-
- “hand_taskspace_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])
-> position control setting value based on fingertip coordinate val.
-> v1, v2, v3: Thumb x, y, z fingertip coordinates / v4, v5, v6: Index finger x, y, z fingertip coordinates / v7, v8, v9: Middle finger x, y, z fingertip coordinates / v10, v11, v12: Ring finger x, y, z fingertip coordinates / v13, v14, v15: little finger x, y, z fingertip coordinates
- “hand_taskspace_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])
-
-
-
- “hand_TT_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int[15])
-> Current control setting value
-> v1, v2, v3: Thumb 1,2,3 motor current value / v4, v5, v6: Index finger 1,2,3 motor current value / v7, v8, v9: Middle finger 1,2,3 motor current value / v10, v11, v12: Ring finger 1,2,3 motor current value / v13, v14, v15: little finger 1,2,3 motor current value
- “hand_TT_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int[15])
-
-
- Hand position/current/sensor data information
(transmission value based on hand)
- Hand position/current/sensor data information
-
-
- “motor_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int32_t[15])
-> encoder values for each finger motor
-> v1, v2, v3: Thumb 1,2,3 motor encoder values / v4, v5, v6: Index finger 1,2,3 motor encoder values / v7, v8, v9: Middle finger 1,2,3 motor encoder values / v10, v11, v12: Ring finger 1,2,3 motor encoder values / v13, v14, v15: little finger 1,2,3 motor encoder values
- “motor_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int32_t[15])
-
-
-
- “joint_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20} (data type: double[20])
-> joint angle value for each finger (radians)
-> v1, v2, v3, v4: Thumb q1, q2, q3, q4 joint angle values / v5, v6, v7, v8: Index finger q1, q2, q3, q4 joint angle values / v9, v10, v11, v12: Middle finger q1, q2, q3, q4 joint angle values / v13, v14, v15, v16: Ring finger q1, q2, q3, q4 joint angle values / v17, v18, v19, v20: little finger q1, q2, q3, q4 joint angle values
- “joint_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20} (data type: double[20])
-
-
-
- “task_space_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])
-> coordinates of each fingertip
-> v1, v2, v3: Thumb x, y, z fingertip coordinates / v4, v5, v6: Index finger x, y, z fingertip coordinates / v7, v8, v9: Middle finger x, y, z fingertip coordinates / v10, v11, v12: Ring finger x, y, z fingertip coordinates / v13, v14, v15: little finger x, y, z fingertip coordinates
- “task_space_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])
-
-
-
- “current_state” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int16_t[15])
-> current value of each finger motor
-> v1, v2, v3: Thumb 1,2,3 motor current value / v4, v5, v6: Index finger 1,2,3 motor current value / v7, v8, v9: Middle finger 1,2,3 motor current value / v10, v11, v12: Ring finger 1,2,3 motor current value / v13, v14, v15: little finger 1,2,3 motor current value
- “current_state” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int16_t[15])
-
-
-
- “sensor_state” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30} (data type: double[30])
-> force/torque sensor values for each finger
-> v1, v2, v3, v4, v5, v6: Thumb fingertip sensor Fx, Fy, Fz, Tx, Ty, Tz values / v7, v8, v9, v10, v11, v12: Index fingertip sensor Fx, Fy, Fz, Tx, Ty, Tz values / v13, v14, v15, v16, v17, v18: middle fingertip sensor Fx, Fy, Fz, Tx, Ty, Tz values / v19, v20, v21, v22, v23, v24: Ring fingertip sensor Fx, Fy, Fz, Tx, Ty, Tz values / v25, v26, v27, v28, v29, v30: little fingertip sensor Fx, Fy, Fz, Tx, Ty, Tz values
- “sensor_state” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30} (data type: double[30])
-
Robot hand operating information
(mode selection and input information)
- To operate the robot hand, you must select the appropriate mode and enter the corresponding data.
- The description and input information for each mode are as follows.
-
- Homing mode
-
-
- “hand_mode” : 1
-
-
-
- Set the value of the “hand_mode” key to 1 and maintain the input value for 3 seconds
-
-
-
- Homing mode that opens all the fingers of the robot hand and sets the open position as the origin
(the task of opening the fingers with current control for 3 seconds and then resetting the incremental encoder value to make the origin point)
- Homing mode that opens all the fingers of the robot hand and sets the open position as the origin
-
-
- Initial position mode
-
-
- “hand_mode” : 2
-
-
-
- Initial position mode that executes position control of the five fingers to the origin position set in the homing mode
-
-
- Stop mode
-
-
- “hand_mode” : 3
-
-
-
- Stop mode that turns off the motor power and allows the fingers to move freely with external force
(used to monitor angle/coordinate values when teaching fingers)
- Stop mode that turns off the motor power and allows the fingers to move freely with external force
-
-
- Sensor bias mode
-
-
- “hand_mode” : 4
-
-
-
- Sensor bias mode that initializes the sensor value to 0 when the initial sensor value reflects values other than 0 due to environmental changes (temperature/external force, etc.)
-
-
-
- Maxtorque setup mode
-
-
-
- “hand_mode” : 5
-
-
-
- Set the value of the “maxtorque” key to the desired value.
-
-
-
- Mode for setting the maximum output current. The setting value range of maxtorque is 0 ~ 1000, and 1 means 0.1%.
(range of 700-1000 is recommended)
- Mode for setting the maximum output current. The setting value range of maxtorque is 0 ~ 1000, and 1 means 0.1%.
-
-
- Encoder position command mode
-
-
- “hand_mode” : 10
-
-
-
- Set the value of the “hand_TP_cmd” key to the desired finger motor encoder value.
-
-
-
- Position control mode that controls by giving the encoder position command for each finger
-
-
- Joint angle command mode
-
-
- “hand_mode” : 22
-
-
-
- Set the value of the “hand_joint_cmd” key to the desired finger joint angle value (radians).
-
-
-
- Position control mode that controls by giving joint angle commands for each finger
- Position control mode that controls by giving joint angle commands for each finger
-
-
- Taskspace command mode
-
-
- “hand_mode” : 32
-
-
-
- Set the value of the “hand_taskspace_cmd” key to the desired fingertip coordinate value.
-
-
-
- Position control mode that controls by giving task space coordinate commands for each finger
-
-
- Current control mode
-
-
- “hand_mode” : 41
-
-
-
- Set the value of the “hand_TT_cmd” key to the desired current value for each motor.
-
-
-
- Current control mode that controls by giving current commands for each finger (Required: Set maxtorque to 1000 when controlling)
-
-
-
- The range of each variable is as follows
- maxtorque: 0 – 1000 (1 => 0.1%, 1000 => 100%)
- m1, m2: 0 – 280000 (thumb), 0 – 440000 (idx./mid./rig./lit.)
- m3: 0 – 210000 (thumb), 0 – 170000 (idx./mid./rig./lit.)
- q1: -13° – 45° (thumb), -45° – 45° (idx./mid./rig./lit.)
- q2: -30° – 30° (all fingers)
- q3: 82° – 154° (thumb), 115° – 175° (idx./mid./rig./lit.)
- x: -51mm – 51mm (thumb), -51mm – 51mm (idx./mid./rig./lit.)
- y: 45.5mm – 115.7mm (thumb), 2.6mm – 100mm (idx./mid./rig./lit.)
- z: 13mm – 146.7mm (thumb), 0mm – 149.5mm (idx./mid./rig./lit.)
- The range of each variable is as follows
-

[Definition of each variable and coordinate system location]

[Coordinate system of angle q1, q2, q3, q4]

[Coordinates of each finger origin from the robot hand origin (unit: mm)]