콘텐츠로 건너뛰기
한국어 - 대한민국
  • 검색 필드가 비어 있으므로 제안 사항이 없습니다.

AIDIN-hand TCP/IP 통신 매뉴얼

✅ 2025.09.15

개요

  • AIDIN-hand를 TCP/IP 통신을 통해 상위 제어기에서 제어할 수 있습니다.

  • AIDIN-hand는 server 노드이며, 제공되는 예시 코드는 client 노드입니다.

TCP/IP 통신 정보

  • 포트번호: 8000

  • 버퍼사이즈: 2048

  • JSON 형식 사용

  • KEY값과 VALUE값 정보

    • 핸드 명령 정보 (핸드 기준 수신값)

      • “hand_mode” : v1 (data type: uint16_t)

        > 작동 모드 설정 변수

      • “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])

        > 모터 엔코더값 기반 위치 제어 설정값

        > v1, v2, v3: 엄지손가락 1,2,3번 모터 엔코더값 / v4, v5, v6: 검지손가락 1,2,3번 모터 엔코더값 / v7, v8, v9: 중지손가락 1,2,3번 모터 엔코더값/ v10, v11, v12: 약지손가락 1,2,3번 모터 엔코더값 / v13, v14, v15: 새끼손가락 1,2,3번 모터 엔코더값

      • “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])

        > 손가락 관절 각도 기반 위치 제어 설정값 (라디안)

        > v1, v2, v3, v4: 엄지손가락 q1, q2, q3, q4 관절 각도값 / v5, v6, v7, v8: 검지손가락 q1, q2, q3, q4 관절 각도값 / v9, v10, v11, v12: 중지손가락 q1, q2, q3, q4 관절 각도값 / v13, v14, v15, v16: 약지손가락 q1, q2, q3, q4 관절 각도값 / v17, v18, v19, v20: 새끼손가락 q1, q2, q3, q4 관절 각도값

        (q3, q4는 커플링 되어 있어 q3값만 입력 필요)

      • “hand_taskspace_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])

        > 손가락 끝점 좌표 기반 위치 제어 설정값

        > v1, v2, v3: 엄지손가락 x, y, z 끝점 좌표값 / v4, v5, v6: 검지손가락 x, y, z 끝점 좌표값 / v7, v8, v9: 중지손가락 x, y, z 끝점 좌표값 / v10, v11, v12: 약지손가락 x, y, z 끝점 좌표값 / v13, v14, v15: 새끼손가락 x, y, z 끝점 좌표값

      • “hand_TT_cmd” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int[15])

        > 전류 제어 설정값

        > v1, v2, v3: 엄지손가락 1,2,3번 모터 전류값 / v4, v5, v6: 검지손가락 1,2,3번 모터 전류값 / v7, v8, v9: 중지손가락 1,2,3번 모터 전류값 / v10, v11, v12: 약지손가락 1,2,3번 모터 전류값 / v13, v14, v15: 새끼손가락 1,2,3번 모터 전류값

    • 핸드 위치/센서 데이터 정보 (핸드 기준 송신값)

      • “motor_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int32_t[15])

        > 각 손가락 모터 엔코더값

        > v1, v2, v3: 엄지손가락 1,2,3번 모터 엔코더값 / v4, v5, v6: 검지손가락 1,2,3번 모터 엔코더값 / v7, v8, v9: 중지손가락 1,2,3번 모터 엔코더값/ v10, v11, v12: 약지손가락 1,2,3번 모터 엔코더값 / v13, v14, v15: 새끼손가락 1,2,3번 모터 엔코더값

      • “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])

        > 각 손가락 관절 각도값 (라디안)

        > v1, v2, v3, v4: 엄지손가락 q1, q2, q3, q4 관절 각도값 / v5, v6, v7, v8: 검지손가락 q1, q2, q3, q4 관절 각도값 / v9, v10, v11, v12: 중지손가락 q1, q2, q3, q4 관절 각도값 / v13, v14, v15, v16: 약지손가락 q1, q2, q3, q4 관절 각도값 / v17, v18, v19, v20: 새끼손가락 q1, q2, q3, q4 관절 각도값

      • “task_space_pos” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: double[15])

        > 각 손가락 끝점 좌표값

        > v1, v2, v3: 엄지손가락 x, y, z 끝점 좌표값 / v4, v5, v6: 검지손가락 x, y, z 끝점 좌표값 / v7, v8, v9: 중지손가락 x, y, z 끝점 좌표값 / v10, v11, v12: 약지손가락 x, y, z 끝점 좌표값 / v13, v14, v15: 새끼손가락 x, y, z 끝점 좌표값

      • “current_state” : {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15} (data type: int16_t[15])

        각 손가락 모터 전류값

        v1, v2, v3: 엄지손가락 1,2,3번 모터 전류값 / v4, v5, v6: 검지손가락 1,2,3번 모터 전류값 / v7, v8, v9: 중지손가락 1,2,3번 모터 전류값 / v10, v11, v12: 약지손가락 1,2,3번 모터 전류값 / v13, v14, v15: 새끼손가락 1,2,3번 모터 전류값

      • “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])

        > 각 손가락의 힘/토크 센서값

        > v1, v2, v3, v4, v5, v6: 엄지손가락 핑거팁 센서의 Fx, Fy, Fz, Tx, Ty, Tz 센싱값 / v7, v8, v9, v10, v11, v12: 검지손가락 핑거팁 센서의 Fx, Fy, Fz, Tx, Ty, Tz 센싱값 / v13, v14, v15, v16, v17, v18: 중지손가락 핑거팁 센서의 Fx, Fy, Fz, Tx, Ty, Tz 센싱값 / v19, v20, v21, v22, v23, v24: 약지손가락 핑거팁 센서의 Fx, Fy, Fz, Tx, Ty, Tz 센싱값 / v25, v26, v27, v28, v29, v30: 새끼손가락 핑거팁 센서의 Fx, Fy, Fz, Tx, Ty, Tz 센싱값

로봇핸드 조작 정보 (모드선택 및 입력정보)

  • 로봇핸드를 조작하기 위해 적절한 모드선택 및 이에 상응하는 데이터를 입력해야 합니다.

  • 각 모드의 설명 및 입력정보는 아래와 같습니다.

    • Homing mode

      • “hand_mode” : 1

      • “hand_mode” key의 value 값을 1로 설정하고 3초간 입력값 유지

      • 로봇핸드의 모든 손가락을 펼쳐서 해당 위치를 원점으로 셋팅하는 홈잉모드 (3초간 전류제어로 손가락을 펼친 뒤 증분엔코더값을 리셋시켜 해당 지점을 0점으로 만드는 작업)

    • Initial position mode

      • “hand_mode” : 2

      • 홈잉모드로 셋팅된 원점 지점으로 다섯 손가락의 위치 제어를 실행하는 초기위치모드

    • Stop mode

      • “hand_mode” : 3

      • 모터의 전원을 내리고 외력으로 손가락을 자유롭게 움직일 수 있는 스탑모드 (손가락 티칭 시, 각도/좌표값을 모니터링 하기위해 사용)

    • Sensor bias mode

      • “hand_mode” : 4

      • 초기 센서값이 환경변화(온도/외력 등)로 인해 0이 아닌 다른 값들이 반영되어 있을 때, 센서값을 초기화하여 0으로 만들어주는 센서 바이어스 모드

    • Maxtorque setup mode

      • “hand_mode” : 5

      • “maxtorque” key의 value 값을 원하는 값으로 설정

      • 최대 출력 전류를 셋팅하는 모드. Maxtorque의 셋팅값 범위는 0 ~ 1000이며, 1 당 0.1%를 의미함. (700-1000 범위를 권장)

    • Encoder position command mode

      • “hand_mode” : 10

      • “hand_TP_cmd” key의 value 값을 원하는 손가락 모터 엔코더 값으로 설정

      • 각 손가락의 엔코더 위치 명령을 주어 제어하는 위치 제어 모드

    • Joint angle command mode

      • “hand_mode” : 22

      • “hand_joint_cmd” key의 value 값을 원하는 손가락 관절 각도값(라디안)으로 설정

      • 손가락의 관절 각도 명령을 주어 제어하는 위치 제어 모드

    • Taskspace command mode

      • “hand_mode” : 32

      • “hand_taskspace_cmd” key의 value 값을 원하는 손가락 끝점 좌표값으로 설정

      • 각 손가락의 task space 좌표 명령을 주어 제어하는 위치 제어 모드

    • Current control mode

      • “hand_mode” : 41

      • “hand_TT_cmd” key의 value 값을 원하는 각 모터의 전류값으로 설정

      • 각 손가락의 전류 명령을 주어 제어하는 전류 제어 모드

    • 각 변수의 범위는 다음과 같음

      • maxtorque: 0 – 1000 (1 => 0.1%, 1000 => 100%)

      • m1, m2: 0 – 280000 (엄지), 0 – 440000 (검지/중지/약지/새끼)

      • m3: 0 – 210000 (엄지), 0 – 170000 (검지/중지/약지/새끼)

      • q1: -13° – 45° (엄지), -45° – 45° (검지/중지/약지/새끼)

      • q2: -30° – 30° (모든 손가락)

      • q3: 82° – 154° (엄지), 115° – 175° (검지/중지/약지/새끼)

      • x: -51mm – 51mm (엄지), -51mm – 51mm (검지/중지/약지/새끼)

      • y: 45.5mm – 115.7mm (엄지), 2.6mm – 100mm (검지/중지/약지/새끼)

      • z: 13mm – 146.7mm (엄지), 0mm – 149.5mm (검지/중지/약지/새끼)

[각 변수 명칭 및 좌표계 위치] 

 

[q1, q2, q3, q4 각도의 좌표계]

[로봇핸드 원점에서의 각 손가락 원점 좌표 (단위: mm)] 

 

^ 처음으로 돌아가기