sxngt

MuJoCo 4족보행 제어·강화학습 구현과 랩 세미나

2025.04 — 2025.06 · 단독 연구·구현, SC Lab 내부 세미나 진행

MuJoCo 3, PyTorch, Stable-Baselines3, Gymnasium, NumPy, wandb, uv

GitHub

문제 정의

  • 4족보행 논문은 결과만 제시 — 보상 함수의 형태, 치팅 차단, 학습 안정화는 재현해 본 사람만 아는 영역.
  • 목표는 이론의 밑바닥부터 강화학습까지 직접 재현하고, 그 경험을 연구실의 공유 자산으로 전환.

구현 스펙트럼 (Unitree GO2, 12-DOF)

  • 고전 제어 — Forward Kinematics 기반 관절 직접 제어, 관절 타입별 차등 게인(hip/thigh/calf) PD 제어기, 토크 직접 제어와 위치 명령 제어의 이원화.
  • Gait 생성 — trot·walk·pace·gallop 4종 보행의 위상차 테이블과 swing/stance 사인 궤적을 생성하는 위상 기반 gait 생성기(CPG 계열). 참조 모션을 모방 보상(imitation reward)으로 연결.
  • 강화학습 — PPO를 PyTorch로 from-scratch 구현(GAE, clipped surrogate, Actor-Critic 공유망) 후 Stable-Baselines3 구현과 비교. SubprocVecEnv 12병렬 학습, RTX 4080 기준 96병렬 환경 + 혼합정밀도(AMP) 대용량 학습 파이프라인 구성.
  • 관찰·보상 설계 — projected gravity, 속도 명령 추종, 발 공중시간 보상 등 Isaac Lab 계열 정석 설계를 단계적으로 도입.

해결한 문제들 (현상 → 원인 → 해결 구조로 전부 문서화)

  • 호핑 치팅 — 전진 보상을 수직 점프로 갈취하는 지역해를 수직 속도 페널티로 차단.
  • 조기종료 — 학습 초기 즉시 넘어져 데이터가 쌓이지 않는 문제를 gait 활동 감지 시 임계값 완화로 해결.
  • 정지 지역해 — 서서 버티기만 하는 정책을 gait 강제 혼합(80% gait + 20% RL)과 정지 페널티로 탈출.
  • 헤드리스 렌더링 — GPU 서버의 MuJoCo 렌더링 부재를 X11 포워딩·Xvfb 가상 디스플레이로 해결, OS별(macOS/Linux) 렌더링 분기 구현.

성과와 배움

  • 약 16,000줄, 62커밋, 문서 16편 — 6세대에 걸친 환경·보상의 진화를 코드 스냅샷과 연구보고서로 보존, 이를 본론으로 연구실 전체 세미나 진행.
  • 보상 설계는 명세가 아니라 협상 — 에이전트는 보상의 빈틈을 반드시 발견하며, 좋은 보상 함수는 여러 세대의 치팅을 막아낸 흔적의 축적.
  • from-scratch와 라이브러리(SB3) 구현의 병행 — 라이브러리가 감춘 수치 안정성 처리(클리핑·NaN 방어)의 가치를 정확히 체득.