착용형 안전 1-페이지 — EMG 기반 PhAI-X1 보조제어¶
대상: PhAI-X1(H10 + XM10)을 사람이 착용한 상태에서, 직접 작성한 EMG→토크 코드로 실제 보조력을 인가하는 모든 팀. 원칙: 알고리즘 설계는 자유지만, 아래 가드레일은 반드시 지킵니다. 보조력은 사람 다리에 직접 들어갑니다.
0. 한 줄 원칙¶
벤치에서 검증되지 않은 코드는 절대 착용 상태로 돌리지 않는다.
1. 벤치 우선 (착용 전 필수 검증)¶
토크 출력을 끈 상태(control_ON = 0 또는 XM_CTRL_MONITOR)로 먼저 신호·방향·크기를 확인합니다.
- EMG 센서를 연결하고
xm10도구 (Ex.40 의0xF0채널 Raw/Env/Tau) 또는 Live Expressions 로 raw / envelope 신호를 본다. - 근육 이완 → 안정 캘리브(BTN1), 대표 수축 → 활성 캘리브(BTN2). 순서 반드시 BTN1 → BTN2.
- 이완 시 envelope가 ~0, 수축 시 상승하는지 확인(노이즈가 크면 deadband 상향).
- 방향 확인: 의도한 근육 수축이 의도한 관절 방향(굴곡/신전)으로 매핑되는지 — 부호 규약은 양수(+) = Flexion(굴곡), 음수(−) = Extension(신전).
- 좌우 확인:
XM_SetAssistTorque(R, L)는 오른쪽 먼저. 헷갈리면XM_SetAssistTorqueRH/LH()사용. 좌우 반대로 들어가면 낙상 위험. - 토크를 아주 작은 값부터(예: 0.2~0.5 Nm) 올리며 모터 반응을 거치 상태에서 확인.
- 이완 상태에서 토크가 거의 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 예제에서 알고리즘을 바꿔도 다음은 그대로 둡니다:
- 최종 토크 saturation — 출력 직전 한계 클램프.
- 캘리브레이션 중 zero-torque — 캘리브 동안 토크 0 강제.
- 모드 종료 시 zero-torque —
Active_Exit에서 토크 0 +XM_SetControlMode(XM_CTRL_MONITOR)복귀. 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.
이 문서는 안전 가드레일만 정의합니다. 어떤 근육에서 어떤 의도를 읽고 얼마의 보조를 줄지는 팀이 설계할 영역입니다.