🧪 새 튜토리얼이 계속 업데이트 중 — 로봇 팔부터 센서까지
본문으로 건너뛰기

SCS0009 데스크톱 제어 프로그램(GUI와 CLI) ​

이 페이지는 SCS0009 시리얼 버스 버전의 데스크톱 제어 튜토리얼입니다. 웹 제어는 SCS0009 웹 제어, 하드웨어 배선은 SCS0009 배선을 참고하세요.

빠른 시작 ​

  1. Python 3.10+와 의존성 설치: 설치.
  2. 버스 드라이버 보드를 연결하고 시리얼 포트 확인: 환경 요구 사항.
  3. GUI 실행: amazing-hand-gui 또는 python amazing_hand_gui.py.
  4. 캘리브레이션에 따라 왼손/오른손, 각도, 중간 위치를 점검.
  5. 손가락별 슬라이더, 프리셋 포즈, 시퀀스로 동작.

AmazingHand Python 제어 도구(왼손과 오른손 지원) ​

Python으로 작성된 GUI와 명령줄 도구로, 시리얼 버스 서보 드라이버 보드를 통해 Feetech SCS0009 서보 8개를 제어하여 Pollen Robotics의 AmazingHand 로봇 손을 구동합니다.

왼손과 오른손을 모두 지원합니다. 시작 시 오른손(서보 ID 1-8) 또는 왼손(서보 ID 11-18)을 선택하며, --hand로 질문을 건너뛸 수 있습니다. 포즈 라이브러리는 왼손/오른손이 공유하고, 각 손은 data/config.yaml에서 서보 매핑, 장착 오프셋, 원시값 목표를 각각 유지합니다. 자세한 내용은 왼손/오른손 선택을 참고하세요.

AmazingHand 제어 도구 메인 화면


프로젝트 구조 ​

text
amazing_hand_gui.py   – GUI 메인 프로그램
amazing_hand_cmd.py   – 명령줄 도구
hand_logic.py         – 공용 비즈니스 로직(UI 비의존)
pyproject.toml        – 패키지 메타데이터, 의존성, pytest 설정
data/
  config.yaml         – 애플리케이션 설정(시리얼, 제한, 원시값 목표)
  hand_config.yaml    – 저장된 포즈와 시퀀스
docs/
  REQUIREMENTS.md       – 요구 사항과 인수 기준
  CONFIG_FORMAT.md      – 설정 파일 형식 설명
  scs_servo_protocol.md – SCS0009 레지스터 참고
  CHANGES.md            – 원본 대비 변경 사항과 이유
  user_manual.md        – 중앙 튜토리얼로 이전된 리디렉션 페이지
tests/
  test_hand_logic.py      – hand_logic 단위 테스트(155개)
  test_gui_utils.py       – GUI 유틸리티 함수 단위 테스트(51개)
  test_cmd.py             – CLI 단위 테스트(42개)
  test_integration.py     – 통합 테스트(14개)
  test_system.py          – 서브프로세스 시스템 테스트(22개)
  test_system_hardware.py – 하드웨어 테스트(33개, --hardware 필요)
  test_cmd_hardware.py    – CLI 하드웨어 테스트(21개, --hardware 필요)

환경 요구 사항 ​

  • Python 3.10 이상(GUI는 Tkinter 포함 필요)
  • 서보 8개용 독립 5V 외부 전원
  • 드라이버가 설치된 USB 시리얼 버스 어댑터

설치 ​

pip 설치 권장(pyproject.toml 읽음):

bash
pip install -e .

또는 의존성 직접 설치:

bash
pip install -r requirements.txt

개발 및 테스트 환경:

bash
pip install -r requirements-dev.txt

캘리브레이션 ​

서보의 각도 체계, 포즈 프리셋, 중간 위치는 구체적인 로봇 손에 따라 달라집니다. 이 파라미터는 모두 data/config.yaml에 모여 있습니다.

왼손/오른손 선택 ​

두 손은 사용하는 서보와 기계 구조가 달라 UI가 뜨기 전에 먼저 선택합니다:

text
  AmazingHand — which hand?
    1 = right hand  (servo IDs 1-8)
    2 = left hand   (servo IDs 11-18)
  Enter 1 or 2 [1]:
  LEFT hand — servo IDs 11-18
    Ring (11, 12)  Middle (13, 14)  Pointer (15, 16)  Thumb (17, 18)
    middle position raw: [571, 451, 571, 451, 571, 451, 571, 451]

질문 건너뛰기:

bash
python amazing_hand_gui.py --hand left
python amazing_hand_cmd.py --pose victory --hand left

--hand를 지정하지 않으면 data/config.yaml의 hand: 값을 사용합니다.

왜 한 손이 단순히 ID 그룹을 바꾸는 것이 아닌가. 서보 번호(오른손 1-8, 왼손 11-18, 왼손은 손가락 번호가 미러링되어 약지가 먼저) 외에도 왼손에는 기계적 차이 두 가지가 더 있으며, 프로그램이 모두 자동으로 처리합니다:

오른손왼손
서보 ID1-811-18
손가락 → ID검지 1,2 / 중지 3,4 / 약지 5,6 / 엄지 7,8약지 11,12 / 중지 13,14 / 검지 15,16 / 엄지 17,18
제조사 MiddlePos[451, 571, …][571, 451, …]
장착 오프셋0°−35.16°(hands.left.angle_offset)
같은 손가락 두 서보(a, b)(b, a)(hands.left.mirror_pose)

위 두 항목 중 하나라도 빠지면 제스처가 틀어집니다: 장착 오프셋이 빠지면 손가락마다 35°씩 어긋나고, 같은 손가락 두 서보 교환이 빠지면 펼침 방향이 완전히 반대로 됩니다(V자 제스처에서 두 손가락이 모이고, 모여야 할 세 손가락이 오히려 벌어짐).

data/hand_config.yaml은 왼손/오른손이 공유하며 항상 오른손 순서로 저장되고, 왼손은 읽을 때 변환하고 저장할 때 되돌립니다.

새 손을 캘리브레이션합니다. hands.left의 값을 템플릿으로 삼은 뒤 다음 순서로 검증하세요:

  1. Middle position을 눌러 Current (0-1023) 행에서 예상 원시값이 읽히는지 확인
  2. Open All / Close All — 스트로크가 기계적 제한까지 가고 걸리지 않아야 함
  3. 펼침 제스처 시도(victory는 V자, greeting은 세 손가락 모음)

어느 항목이 잘못되었으면 어떤 파라미터를 조정할까요:

현상수정할 곳
Middle position 판독값이 잘못됨hands.<이름>.raw_positions.middle
펼침 방향이 반대hands.<이름>.mirror_pose
스트로크가 부족하거나 과함hands.<이름>.raw_positions.open / close

각도 체계 ​

GUI와 CLI 모두 각도 값을 사용하며, rustypot 드라이버가 서보 내부 원시값으로 변환합니다:

text
raw = 1024 × angle / 300° + 511        (0.29297°/step, 원시값 범위 0–1023)
각도의미
−35°완전 펼침(신전)
0°중간 위치, 손가락이 자연스럽게 약간 굽음
+75°완전히 쥠(주먹)

손가락마다 두 서보는 나란히, 축 중심이 일직선입니다: 같은 방향 회전은 벌림, 반대 방향 회전은 굴곡/신전을 만듭니다. 짝수 ID 서보는 홀수 ID 대비 부호가 반전되므로 같은 개폐 값으로 두 서보가 반대 방향으로 움직입니다; 이는 프로그램이 자동 처리하므로 직접 변환할 필요가 없습니다.

제한 ​

text
limits:
  servo_min: -75      # 모든 서보 명령의 절대 스트로크 상하한
  servo_max: 75
  base_min: -75       # 개폐 슬라이더 범위
  base_max: 75
  side_min: -35       # 좌우 슬라이더 범위
  side_max: 35

side_min/side_max는 좌우 벌림을 제어합니다. 프로그램이 정규화(u = |side_offset| / |side_min|)하므로 이 범위만 바꿔도 실제 벌림 폭은 변하지 않고 슬라이더 눈금만 압축됩니다. 손가락 벌림 각도를 실제로 바꾸려면 auto_extremes도 함께 수정해야 합니다.

원시값 목표 ​

전역 위치 버튼 세 개는 각도 모델을 거치지 않고 서보를 정확한 원시값으로 구동합니다:

text
raw_positions:              # 인덱스 0 -> 서보 ID 1 …… 인덱스 7 -> 서보 ID 8
  open:   [260, 760, 260, 760, 260, 760, 260, 760]
  close:  [760, 260, 760, 260, 760, 260, 760, 260]
  middle: [451, 571, 451, 571, 451, 571, 451, 571]
  • open / close — 기계 스트로크 양 끝. 제조사의 Feetech 디버깅 도구로 서보를 개별 구동해 측정합니다.
  • middle — 캘리브레이션된 기계 중간 위치(즉 제조사 Arduino 데모 프로그램의 MiddlePos). open과 close의 중점이 아니라 raw 511에서 약 ±60 raw(±17.6°) 벗어난 값입니다.

이는 손마다 개별 캘리브레이션 값입니다. 제조사 원문은 *"replace values by your calibration results"*입니다.

검증 방법: Servo Feedback 패널에 Current (0-1023) 행이 있어 원시 위치를 실시간 표시합니다. Middle position 버튼을 누르면 이 행이 451, 571, 451, 571, …로 읽혀야 합니다.

컨트롤 범위 치트시트 ​

컨트롤범위
개폐 슬라이더(세로)−75 … +75
좌우 슬라이더(가로)−35 … +35
속도1(느림) … 6(빠름)

속도 값은 드라이버가 rad/s로 서보에 전달하므로 1–6은 대략 57–344 °/s에 대응합니다. 부하가 걸리면 실제 속도는 이 값의 약 **70%**이므로 시퀀스 지연을 정할 때 이를 계산에 넣어야 합니다.


GUI 실행(amazing_hand_gui.py) ​

AHC 메인 화면: 손가락별 제어, 전역 버튼, 텔레메트리와 로그

화면은 네 영역으로 나뉩니다:

  • 왼쪽 열: 네 손가락의 손가락별 제어 패널, 개폐/벌림 슬라이더, Auto/Raw 모드, 속도, Open/Close/Center 포함.
  • 가운데 열: 전역 제어 버튼(Open All / Close All / Center All / Middle position)과 포즈 관리.
  • 오른쪽 열: 텔레메트리 곡선과 Servo Feedback 피드백 표(위치, 부하, 온도, 전압).
  • 하단: 실행 로그와 상태 표시줄, 연결 상태, 동작 진행률과 오류 메시지 표시.

pip 설치 후 바로 호출할 수 있습니다:

text
amazing-hand-gui
amazing-hand-gui --port /dev/ttyUSB0

또는 직접 실행:

bash
python amazing_hand_gui.py
python amazing_hand_gui.py --port /dev/ttyUSB0

포트 드롭다운에는 이 컴퓨터에 실제로 존재하는 시리얼 포트가 나열됩니다(pyserial 우선, 없으면 Windows 레지스트리 읽음). 따라서 번호가 뒤인 어댑터도 표시됩니다. 드롭다운에 포트 번호를 직접 입력할 수도 있습니다. 설정의 기본 포트가 연결되어 있지 않으면 GUI가 첫 번째 실제 포트에서 자동 시작됩니다; 포트를 고정하려면 --port를 명시하세요.

기능 ​

손가락별 제어 패널: Auto/Raw 모드, 속도와 Open/Close/Center 바로가기 버튼

  • 손가락별 슬라이더로 개폐와 좌우를 제어하며, Auto(개폐 + 좌우)와 Raw(두 서보 각도 직접 제어) 두 모드 지원

    Auto 모드의 두 슬라이더는 제어축이며 프로그램이 자동으로 차동 합성합니다; Raw 모드에서만 두 서보 각도를 직접 지정합니다. 손가락마다 두 서보는 나란히, 축 중심이 일직선입니다: 같은 방향 회전은 벌림, 반대 방향 회전은 굴곡/신전.

  • 손가락별 Open / Close / Center 바로가기 버튼

  • 손가락별 속도 선택(1–6), 별도의 전역 속도 동기화 드롭다운

  • 정밀 미세 조정을 위한 키보드 단축키

  • 전역 위치 버튼: Open All, Close All, Center All, Middle position

  • data/hand_config.yaml 기반 포즈와 시퀀스 관리

  • 저장된 포즈를 화면에서 직접 삭제 가능(🗑 Delete 버튼)

  • 실시간 서보 텔레메트리 곡선(위치, 부하, 온도, 전압)

  • Servo Feedback 표, 실시간 원시 위치(0–1023) 포함, 캘리브레이션 검증에 사용 가능

키보드 조작 ​

  • 1-4: 손가락 선택(Ring 약지, Middle 중지, Pointer 검지, Thumb 엄지)
  • 방향키: 선택한 손가락 이동
    • 위/아래: 쥐기 / 펼치기
    • 왼쪽/오른쪽: 좌우 이동
  • 보조키:
    • 없음: 1°씩(정밀)
    • Shift: 5°씩(일반)
    • Ctrl: 10°씩(빠름)
  • 바로가기 동작:
    • Q: 선택한 손가락 완전히 쥐기
    • E: 선택한 손가락 완전히 펼치기
    • C: 좌우 위치 중앙 정렬

전역 버튼 ​

버튼개폐좌우
✋ Open All모든 손가락을 원시값 open으로중앙 정렬
✊ Close All모든 손가락을 원시값 close로중앙 정렬
⊙ Center All변경 없음중앙 정렬
⊙ Middle position모든 손가락을 원시값 middle로중앙 정렬

Global Speed 드롭다운(1–6)은 선택한 속도를 모든 손가락 컨트롤에 즉시 적용하고 각 손가락 슬라이더 표시도 동기화합니다.

세 원시값 버튼(Open All, Close All, Middle position)은 각도 모델을 우회하므로 실행 후 슬라이더에는 정확한 값이 아니라 가장 가까운 표현 가능한 값이 표시됩니다. 이후 슬라이더를 다시 만지면 손이 원시 목표에서 최대 약 0.3° 벗어납니다 — 이는 캘리브레이션 위치를 정확히 맞추기 위한 의도적 절충입니다.

알려진 문제: Center All은 Raw 모드에 있는 손가락을 건너뛰지 않으며, 직접 설정한 원시 각도를 덮어씁니다. 손가락별 ⊙ Center 버튼은 그렇지 않습니다.


CLI 실행(amazing_hand_cmd.py) ​

독립 명령줄 도구로, GUI를 시작하지 않고 포즈를 적용하고 시퀀스를 재생할 수 있습니다. GUI와 같은 data/hand_config.yaml을 읽고 저장된 포즈 값을 그대로 전송하며, GUI가 보내는 값과 완전히 동일합니다.

Linux: 시리얼 권한 ​

USB 시리얼 어댑터는 보통 /dev/ttyACM0(Waveshare / CDC-ACM) 또는 /dev/ttyUSB0(FTDI / CH340)로 나타납니다.

확인 방법:

bash
ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null
# 또는
dmesg | grep -E 'ttyACM|ttyUSB' | tail -5

Permission denied가 나오면 현재 사용자를 dialout 그룹에 추가한 뒤 다시 로그인하세요:

bash
sudo usermod -aG dialout $USER

pip 설치 후 ​

text
amazing-hand-cmd --list
amazing-hand-cmd --pose open
amazing-hand-cmd --sequence demo --loop
amazing-hand-cmd --pose open --speed 6
# 필요 시 시리얼 포트 덮어쓰기:
amazing-hand-cmd --pose open --port /dev/ttyUSB0

직접 실행 ​

bash
python amazing_hand_cmd.py --list
python amazing_hand_cmd.py --pose open
python amazing_hand_cmd.py --pose close --speed 6
python amazing_hand_cmd.py --sequence demo
python amazing_hand_cmd.py --sequence wave --loop
python amazing_hand_cmd.py --port /dev/ttyUSB0 --pose open
python amazing_hand_cmd.py --list --config /path/to/hand_config.yaml

파라미터 ​

파라미터기본값설명
--pose NAME–지정한 이름의 포즈 적용
--sequence NAME–지정한 이름의 시퀀스 재생
--list–모든 포즈와 시퀀스 나열
--loop끔Ctrl+C까지 시퀀스 반복 재생
--speed N3서보 속도 1(느림)… 6(빠름)
--port PORTLinux /dev/ttyACM0
Windows COM9
시리얼 포트 번호
--baudrate N1000000보드레이트
--config PATHdata/hand_config.yaml다른 설정 파일 지정
--handconfig.yaml의 hand사용할 손 지정(오른손 1-8, 왼손 11-18)

스크립트 종료 시(Ctrl+C 포함) 모든 서보의 토크가 자동으로 해제됩니다.

CLI에는 data/config.yaml에 대응하는 --config 파라미터가 없으며, 이 파일은 항상 프로젝트 디렉터리에서 로드됩니다.


설정 파일 ​

data/config.yaml ​

섹션용도
serial플랫폼별 기본 시리얼 포트, 보드레이트, 선택 가능한 보드레이트 목록
servos손가락마다 대응하는 서보 ID
limits서보와 두 슬라이더의 각도 범위
speeds1–6 속도 스케일의 기본값/최소/최대
auto_extremes좌우 슬라이더가 극한일 때의 서보 위치
raw_positions전역 위치 버튼의 정확한 원시값 목표
paths포즈/시퀀스 파일 위치

서보와 손가락의 대응 관계 ​

손가락서보 ID포즈 배열 인덱스
Pointer 검지1, 24, 5
Middle 중지3, 42, 3
Ring 약지5, 60, 1
Thumb 엄지7, 86, 7

포즈 배열 순서는 약지, 중지, 검지, 엄지이며 서보 ID 순서가 아닙니다. hand_config.yaml을 직접 편집할 때 가장 틀리기 쉬운 부분입니다.

amazing_hand_cmd.py 상단 주석에는 "index 0→servo1 … 7→servo8"이라고 적혀 있지만 그 주석은 잘못되었으며, 위 표가 코드의 실제 동작입니다.


포즈와 시퀀스 ​

포즈 관리 패널

모든 포즈와 시퀀스는 data/hand_config.yaml에 저장됩니다. 파일이 없으면 GUI가 자동으로 생성합니다.

포즈 저장 ​

  1. 슬라이더나 키보드로 손을 목표 포즈에 맞춥니다
  2. "Name:" 입력란에 이름을 입력합니다
  3. Pose Management 영역의 "➕ Add New"를 클릭합니다

속도는 슬라이더 이동 속도에만 영향을 주며, 저장되는 포즈는 서보 위치 8개만 기록합니다.

포즈 불러오기 / 삭제 ​

  • 드롭다운에서 선택한 뒤 ✓ Apply를 클릭하면 손이 해당 포즈로 이동합니다
  • Apply 오른쪽의 🗑 Delete를 클릭하고 확인하면 영구 삭제됩니다

시퀀스 관리 ​

  1. Sequence Player에서 "🔧 Manage"를 클릭해 시퀀스 관리자를 엽니다
  2. Saved Sequences(왼쪽 열)
  • 기존 시퀀스 보기, 실행, 편집, 삭제
  • 더블 클릭 또는 "▶ Execute" 클릭으로 한 번 실행
  1. Sequence Builder(오른쪽 열)
  • "Available Poses"의 포즈를 더블 클릭하면 한 단계로 추가됩니다
  • 단계마다 서보 8개의 속도와 지연을 개별 설정할 수 있으며, 단계는 "pose:s1,s2,...,s8|delay" 형식으로 저장됩니다
  • ↑/↓로 순서를 바꾸거나 "⏱ Delay" 버튼으로 독립 일시정지를 삽입합니다
  • 이름을 입력한 뒤 "💾 Save Sequence"를 클릭해 저장하고, "▶ Execute"로 저장 없이 먼저 시험 실행할 수 있습니다
  1. 메인 창으로 돌아와 연속 재생이 필요하면 Sequence Player의 Loop를 체크합니다

시퀀스 편집기

단계 형식 ​

text
pose_name:speed1,speed2,...,speed8|delay
  • speed1..speed8 — 포즈 순서대로 배열한 서보 속도 8개(1–6)
  • delay — 다음 단계까지의 대기 시간, 예: 0.6s. 생략 가능; 생략하면 GUI가 고정 자동 대기로 돌아갑니다
  • 독립 일시정지는 SLEEP:1.0s로 작성합니다(쉼표로 구분한 속도 목록 없음)

지연 선택. 드라이버 자체는 서보가 멈췄는지 읽을 수 있지만, 시퀀스 재생은 고정 지연을 사용합니다. 대략 스트로크 각도 / (속도 × 57.3 × 0.7)초로 추정하고 여유를 두세요 — 부하가 걸린 손에서는 약 130°를 넘는 동작이 속도 3에서 1.0초 이상 필요합니다.

YAML 형식 예시 ​

text
poses:
  open:
    positions: [-35, -35, -35, -35, -35, -35, -35, -35]
  close:
    positions: [75, 75, 75, 75, 75, 75, 75, 75]
  ring_close:                 # 약지 쥐기, 나머지 펼침
    positions: [75, 75, -35, -35, -35, -35, -35, -35]

sequences:
  demo:
    steps:
      - "open:3,3,3,3,3,3,3,3|2.0s"
      - "close:6,6,6,6,6,6,6,6|2.0s"
      - "ok:3,3,3,3,3,3,3,3|1.0s"
      - "victory:3,3,3,3,3,3,3,3|1.0s"
      - "greeting:3,3,3,3,3,3,3,3|1.5s"
      - "close:6,6,6,6,6,6,6,6|2.0s"
  wave:
    steps:
      - "open:6,6,6,6,6,6,6,6|0.8s"
      - "wave_r:5,5,5,5,5,5,5,5|0.6s"
      - "wave_l:5,5,5,5,5,5,5,5|0.6s"
      - "open:5,5,5,5,5,5,5,5|0.8s"
  finger_roll:
    steps:
      - "open:6,6,6,6,6,6,6,6|0.5s"
      - "ring_close:5,5,5,5,5,5,5,5|0.6s"
      - "open:5,5,5,5,5,5,5,5|0.5s"
      - "middle_close:5,5,5,5,5,5,5,5|0.6s"
      - "open:5,5,5,5,5,5,5,5|0.5s"

반복 재생은 런타임(GUI 체크박스)에서 제어하며 YAML에 더 이상 기록되지 않습니다.


테스트 ​

프로젝트에는 단위/통합/시스템 테스트 284개와 하드웨어 테스트 54개가 포함되어 있습니다.

전체 테스트 실행(하드웨어 불필요) ​

text
pytest

GUI + CLI 하드웨어 테스트 실행(서보 연결 필요) ​

text
pytest tests/test_system_hardware.py --hardware --port /dev/ttyACM0
pytest tests/test_cmd_hardware.py --hardware --port /dev/ttyACM0
# 또는 둘 다:
pytest tests/test_system_hardware.py tests/test_cmd_hardware.py --hardware

test_system_hardware.py는 연결, 포즈 적용, 텔레메트리 읽기, 손가락별 개폐/흔들기, 속도 제어, 시퀀스 실행과 운동 감지를 검증합니다.

test_cmd_hardware.py는 CLI 계층을 엔드투엔드로 검증합니다: 포즈 위치, 속도 파라미터, 시퀀스 단계, wait_for_motion, --list 출력, 종료 시 토크 해제.

전체 인수 기준은 인수 요구 사항과 테스트를 참고하세요.

주의: 비하드웨어 테스트는 hand_logic.py의 폴백 기본값을 검증하며, 그 기본값은 여전히 원본의 −40…110 스케일입니다. 런타임에 data/config.yaml이 이를 덮어쓰므로 캘리브레이션과 무관하게 테스트가 통과합니다 — 즉 테스트가 현재 캘리브레이션 파라미터를 검증하지는 않습니다.


서보 ID 설정 ​

Feetech 공식 소프트웨어와 시리얼 버스 드라이버로 서보 ID를 설정하는 튜토리얼: https://www.robot-maker.com/forum/tutorials/article/168-brancher-et-controler-le-servomoteur-feetech-sts3032-360/

Feetech 소프트웨어 다운로드: https://github.com/Robot-Maker-SAS/FeetechServo



텔레메트리와 피드백 ​

  • 지표 선택: 위치, 부하, 속도, 온도, 전압, 이동 플래그.
  • 차트 모드: Multi-Servo(다중 서보 곡선)와 Scope(단일 채널 오실로스코프).
  • 확대/이동: Y Zoom / Pan, Time Zoom / Pan.
  • 피드백 표: Goal, Position, Speed, Load, Voltage, Temperature, Status, Moving.

텔레메트리 곡선

서보 피드백 표

시퀀스 편집기 ​

  1. Sequence Player에서 Manage를 클릭합니다.
  2. Available Poses로 단계를 추가하고, 손가락별 속도, 단계 지연을 조정하거나 슬립을 삽입합니다.
  3. ↑/↓로 순서를 조정하고 이름을 입력해 저장합니다; Execute로 먼저 시험 실행할 수도 있습니다.
  4. 메인 창으로 돌아와 시퀀스를 선택하고 Play; Loop를 켜면 연속 재생합니다.

시퀀스 정의는 data/hand_config.yaml의 sequences 키 아래에 있습니다.

문제 해결 ​

현상권장 사항
시리얼 포트가 나열되지 않음USB 어댑터를 다시 꽂거나, 드라이버를 설치하거나, GUI를 재시작합니다.
Connect 버튼이 회색으로 표시됨이미 연결되어 있으므로 먼저 Disconnect를 클릭합니다.
창 크기 조정 시 버벅임불필요한 창을 닫습니다; resize는 디바운스/스로틀 처리됨.
시퀀스가 모든 손가락을 구동하지 않음단계별 속도를 확인하고 각 포즈에 서보 값 8개가 모두 포함되는지 확인합니다.
차단 표시가 계속됨기계적 간섭을 점검합니다; 목표와 실제 위치 차이가 크고 움직임이 없으면 차단이 트리거됩니다.

관련 개발 문서 ​

감사의 말 ​

원본 프로젝트: Betatester777 하드웨어와 참고 펌웨어: Pollen Robotics