콘텐츠로 이동

착용형 안전 1-페이지 — EMG 기반 PhAI-X1 보조제어

대상: PhAI-X1(H10 + XM10)을 사람이 착용한 상태에서, 직접 작성한 EMG→토크 코드로 실제 보조력을 인가하는 모든 팀. 원칙: 알고리즘 설계는 자유지만, 아래 가드레일은 반드시 지킵니다. 보조력은 사람 다리에 직접 들어갑니다.


0. 한 줄 원칙

벤치에서 검증되지 않은 코드는 절대 착용 상태로 돌리지 않는다.


1. 벤치 우선 (착용 전 필수 검증)

토크 출력을 끈 상태(control_ON = 0 또는 XM_CTRL_MONITOR)로 먼저 신호·방향·크기를 확인합니다.

  1. EMG 센서를 연결하고 xm10 도구 (Ex.40 의 0xF0 채널 Raw/Env/Tau) 또는 Live Expressions 로 raw / envelope 신호를 본다.
  2. 근육 이완 → 안정 캘리브(BTN1), 대표 수축 → 활성 캘리브(BTN2). 순서 반드시 BTN1 → BTN2.
  3. 이완 시 envelope가 ~0, 수축 시 상승하는지 확인(노이즈가 크면 deadband 상향).
  4. 방향 확인: 의도한 근육 수축이 의도한 관절 방향(굴곡/신전)으로 매핑되는지 — 부호 규약은 양수(+) = Flexion(굴곡), 음수(−) = Extension(신전).
  5. 좌우 확인: XM_SetAssistTorque(R, L) 는 오른쪽 먼저. 헷갈리면 XM_SetAssistTorqueRH/LH() 사용. 좌우 반대로 들어가면 낙상 위험.
  6. 토크를 아주 작은 값부터(예: 0.2~0.5 Nm) 올리며 모터 반응을 거치 상태에서 확인.
  7. 이완 상태에서 토크가 거의 0 인지 재확인 → 그 다음에만 control_ON = 1.

2. 토크 한계 (넘기지 말 것)

구분 값 성격
EMG 예제 기본 출력 1.25 Nm (EMG_MAX_TORQUE_NM 2.5 × scale 0.5) 보수적 시작값 — 여기서 출발 권장
예제 소프트 상한 2.5 Nm 예제 코드 내 saturation
XM10 내부 하드 클램프 ±10 Nm 라이브러리(libXM_Lib.a) 내부 — 사용자가 바꿀 수 없음, 그 이상 입력해도 포화
모터드라이버단 보호 14A / 임피던스 10A H10 측 추가 포화

착용자·목적에 맞게 보수적으로 설정하세요. 처음부터 큰 값으로 시작하지 않습니다.


3. 비상 정지 경로 (외우기)

  • 슈트 STANDBY 버튼 — H10 본체 물리 버튼. STANDBY 로 바꾸면 즉시 영-토크 + 부드러운 정지 후 대기. 가장 빠른 정지.
  • 확장 케이블 분리 / CM 연결 끊김 — XM_IsCmConnected() 가 false 가 되면 펌웨어가 자동으로 OFF 전환(토크 0).
  • 전원 차단 — 최후 수단.

⚠️ 워치독은 비상 정지가 아닙니다. v2.6.0 부터 XM10 펌웨어에 하드웨어 워치독(IWDG, 약 8 초)이 들어갔지만, 이것은 펌웨어가 멈췄을 때 보드를 되살리는 장치이지 사람을 지키는 장치가 아닙니다. 8 초는 착용 상황에서 매우 긴 시간이고, 코드가 멈추지 않은 채 잘못된 토크를 계속 내보내는 경우에는 워치독이 아예 동작하지 않습니다(정상 실행 중으로 보이기 때문).

따라서 이상 시 사람이 위 경로로 직접 정지시키는 것이 여전히 1차 안전망입니다. 착용자와 별도로 정지 담당(보조자) 이 항상 손이 닿는 곳에 대기하세요.

참고로 워치독 리셋이 일어나면 보드는 재부팅되고, 재부팅 직후에는 MONITOR 모드(토크 출력 차단) 로 시작합니다. 이후 동작은 여러분의 Control_Setup / Control_Loop 코드가 결정합니다.


4. 제거하면 안 되는 코드 4종

EMG 예제에서 알고리즘을 바꿔도 다음은 그대로 둡니다:

  1. 최종 토크 saturation — 출력 직전 한계 클램프.
  2. 캘리브레이션 중 zero-torque — 캘리브 동안 토크 0 강제.
  3. 모드 종료 시 zero-torque — Active_Exit 에서 토크 0 + XM_SetControlMode(XM_CTRL_MONITOR) 복귀.
  4. XM_SetControlMode — XM_CTRL_CONTROL 진입/MONITOR 복귀 게이트.

5. 착용 전 체크리스트 ✅

  • [ ] 벤치에서 1~7 단계 통과(방향·좌우·크기 확인)
  • [ ] 보조 토크 시작값이 보수적(≈1 Nm 이하)
  • [ ] 비상 정지 경로(슈트 STANDBY) 위치 확인 + 정지 담당 대기
  • [ ] 제거 금지 코드 4종 그대로 유지
  • [ ] 캘리브레이션 순서 BTN1 → BTN2 숙지
  • [ ] 착용 후 첫 동작은 작은 토크 / 천천히

6. 착용 중 모니터링

  • xm10 도구 하나로 envelope · 출력 토크(Ex.40 의 0xF0 탭)를 실시간으로 보며 진행하세요. 관절각은 같은 xm10 창의 Show 0x20 tab(5 Hz 표)에서 볼 수 있습니다. PC 프로그램은 한 번에 하나만 연결하세요.
  • 토크가 의도와 다르게 튀거나 이완 시 0 으로 안 떨어지면 즉시 슈트 STANDBY.

이 문서는 안전 가드레일만 정의합니다. 어떤 근육에서 어떤 의도를 읽고 얼마의 보조를 줄지는 팀이 설계할 영역입니다.