G1-29DoF PhaseTrack PT18 — 배포 킹 (v0.1.0)
Unitree G1 29-DoF 속도추종 보행 정책 (PhaseTrack: 위상 시계 + Bézier 발높이 절차적 보행, 모션 데이터·discriminator 없음). 실기 G1 검증 완료 — clobot 사내용 (private).
⚠️ 평지 전용 학습: 이 정책은 평지(flat terrain)에서만 학습되었습니다. 지형 관측(높이 스캔) 없이 고유수용 감각만 사용하며, 요철·경사·턱은 학습 분포 밖입니다. 실측 참고: 낮은 요철/턱(≤6cm)·완경사 지형에 무개조 투입 시 sim 낙상률 4%(easy)~17%(고난도+강외란) — 어느 정도 버티지만 보장 없음. 특히 작은 턱을 사선(비정방향)으로 넘을 때 불안정이 실기에서 관찰됨. 지형 대응 정책은 별도 캠페인(PTR 시리즈, 진행 중)에서 학습.
실기 검증 상태 (2026-07-15 기준)
| 능력 | 상태 |
|---|---|
| 전진 / 후진 / 정지 | ✅ 실기 확인 (sim2real DR: CoM·게인·관절영점) |
| 회전 (명령 상한 ±0.7 rad/s) | ✅ 실기 확인 — 학습범위(±0.5) 외삽, sim은 1.0까지 검증 |
| 우측 yaw 사행 | ✅ heading-hold(명령계층 트림, deploy.yaml)로 실기 억제 확인 |
| push 회복 / 정지 회복 | ✅ (sim ±1.0 push, 실기 확인) |
알려진 한계: 게걸음(lateral) 약함(vy~0.17), 작은 턱 사선 진입 불안정, 사행 근본원인(HW 비대칭)
미해결(트림으로 억제), 제자리 피벗 질감, 정지 미세 jitter. 상세: 코드 저장소
docs/worklogs/CAMPAIGN_HISTORY_phasetrack.md의 "PT18 알려진 한계" 섹션.
파일
| 경로 | 용도 |
|---|---|
deploy/policy.onnx | 실기 배포용 (md5 a7a86c86...) — C++ 스택 v1 슬롯에 교체 투입 |
deploy/deploy.yaml | 배포 파라미터 (게인/heading_hold/ang ±0.7 — obs 계약의 한 축) |
checkpoints/model_23200.pt | rsl-rl 체크포인트 = 웜스타트 씨앗 (PT22/23/PTR2/3의 부모). onnx로는 재학습 불가 — 이 파일이 혈통의 원본 |
config/env.yaml, agent.yaml | 학습 당시 resolved 설정 (재현성) |
eval/ | sim 검증 영상 + 정량 지표(전진 vx 0.426, 후진 -0.372, lateral 0.166, 낙상 0) + 20s 지속-명령 드리프트 클린 |
계약 (배포 시 3자 일치 필수)
- obs 500-dim = 100-dim × 5-frame history (term-major, oldest-first):
base_ang_vel(3) | projected_gravity(3) | velocity_commands(3) | joint_pos_rel(29) | joint_vel_rel(29) | actions(29) | gait_phase_legs(4)× 5 - 액션 29 (per-joint scale, deploy.yaml
scale), 50 Hz - deploy.yaml = 학습 cfg = C++ obs builder 3자 일치 확인 후 배포
계보
- 코드: clobot_rl_lab git tag v0.1.0 (가중치↔코드 앵커. 이 태그 없이 재현 불가)
- 학습: V18 태스크 스크래치 (평지 타일만 — 지형 없음), 23.2k iters에서 조기종료(=최종본, σ 0.120 수렴 확인 후 실기 검증)
- 라이선스 혈통: Apache-2.0/BSD-3 (holosoma 기법 참조, NC 데이터 미사용 — 2026-07-07 감사)