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")로 복귀하려면 로봇이 안전한 직립 자세여야 합니다. -
스크립트가 비정상 종료되면 모터 명령이 끊기므로 크레인 체결 상태를 유지하세요.