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
▪
“maxtorque” : v1 (data type: uint16_t)
> maximum output current setting variable
▪
“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_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_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_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 position/current/sensor data information
(transmission value based on hand)
▪
“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
▪
“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
▪
“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
▪
“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
▪
“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
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)
◦
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)
◦
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)
◦
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
◦
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.)
[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)]