Unitree SDK를 사용해서 동작 모드 변경하기

G1 모드 제어

G1의 내장 컨트롤러 모드를 MotionSwitcherClient를 통해 확인하고 전환할 수 있습니다.

API

from unitree_sdk2py.core.channel import ChannelFactoryInitialize
from unitree_sdk2py.comm.motion_switcher.motion_switcher_client import MotionSwitcherClient

ChannelFactoryInitialize(0, "enp4s0") # 네트워크 인터페이스명
msc = MotionSwitcherClient()
msc.SetTimeout(5.0)
msc.Init()

메서드 설명
CheckMode() 현재 활성 모드 이름 반환. {'name': '모드명'}
SelectMode(name) 지정한 이름의 모드로 전환
ReleaseMode() 현재 모드 해제 → 디버그(저수준 제어) 상태

확인된 모드

모드 이름 CheckMode 결과 설명
ai {'name': 'ai'} G1 기본 동작 모드 (보행, 균형 유지). 전원 켠 후 정상 구동 상태
(없음) {'name': ''} ReleaseMode 후 상태. 내장 컨트롤러 해제, 저수준 DDS 제어 가능

normal 모드는 code=7004 오류로 진입 불가 (G1 23DOF 모델에서 지원하지 않는 것으로 추정)


모드 전환 흐름

ai 모드 (보행/균형 활성)
  ↓ ReleaseMode()
디버그 상태 (name='', LED 노란색)
  → rt/lowcmd 로 직접 모터 제어 가능
  ↓ SelectMode("ai")
ai 모드 복귀


저수준 제어 시 주의사항

  • ReleaseMode() 후에는 G1이 균형을 스스로 유지하지 않습니다.

  • 저수준 제어 스크립트(LowCmd) 실행 전 반드시 ReleaseMode()가 필요합니다.

  • 저수준 제어 종료 후 SelectMode("ai")로 복귀하려면 로봇이 안전한 직립 자세여야 합니다.

  • 스크립트가 비정상 종료되면 모터 명령이 끊기므로 크레인 체결 상태를 유지하세요.