MENU

피지컬 AI

Isaac Lab에서 배운 걸음, MuJoCo에서도 걸을까요?

Isaac Lab에서 학습한 Booster K1 걷기 정책을 MuJoCo로 옮겨 보니, 앞으로 걷기와 회전은 그대로 됐고 옆걸음에서 넘어졌습니다. 무작위화 학습(v2)으로 넘어짐은 없앴지만 몸이 195° 돌아갔고, 걸음 모양 점수를 더한 v4에서 방향 틀어짐이 -11.6°로 줄었습니다. 옮기는 방법과 결과를 그대로 적었습니다.

Isaac Lab에서 학습한 K1 걷기 정책을 MuJoCo로 옮긴 결과표. 첫 학습 v1은 옆걸음에서 1.7초에 넘어졌고, 무작위화 v2는 넘어지지 않았지만 방향이 195° 돌아갔으며, 걸음 모양 점수를 더한 v4는 세 명령 모두 넘어짐 0에 옆걸음 방향 -11.6°.

피지컬 AI, 직접 해 봤습니다 · 4회 · 앞 글: Isaac Lab 윈도우 설치 오류 5가지와 해결법

이 글은 실습 과정과 결과만 공개합니다. 대신 도입 기관에는 교재 본문과 지도서를 제공합니다.

걷습니다. 다만 세 번 학습했습니다. Isaac Lab에서 학습한 Booster K1 걷기 정책을 MuJoCo로 옮기자 첫 학습(v1)의 옆걸음이 1.7초 만에 넘어졌고, 마찰·밀기·몸통 무게를 무작위로 바꿔 다시 학습(v2)하자 넘어지지는 않았지만 몸이 195° 돌아갔습니다. 걸음 모양 점수를 더한 v4에서 세 명령 모두 넘어지지 않았고, 옆걸음 방향 틀어짐도 -11.6°로 줄었습니다.

Isaac Lab에서 학습한 K1 걷기 정책을 MuJoCo로 옮긴 결과표. 첫 학습 v1은 옆걸음에서 1.7초에 넘어졌고, 무작위화 v2는 넘어지지 않았지만 방향이 195° 돌아갔으며, 걸음 모양 점수를 더한 v4는 세 명령 모두 넘어짐 0에 옆걸음 방향 -11.6°.
Isaac Lab에서 학습한 K1 걷기 정책을 MuJoCo로 옮긴 결과표. 첫 학습 v1은 옆걸음에서 1.7초에 넘어졌고, 무작위화 v2는 넘어지지 않았지만 방향이 195° 돌아갔으며, 걸음 모양 점수를 더한 v4는 세 명령 모두 넘어짐 0에 옆걸음 방향 -11.6°.

여러 시뮬레이터로 확인하는 이유가 바로 이런 차이를 실제 로봇에 올리기 전에 찾기 위해서입니다. 저희가 직접 옮기고 잰 기록입니다.


왜 다른 시뮬레이터로 옮겨 보나요?

한 시뮬레이터에서만 걷는 정책인지 가려내기 위해서입니다. 강화학습으로 얻은 동작은 학습한 시뮬레이터의 물리 계산에 맞춰지기 쉽습니다. 물리 엔진이 다른 곳에서도 걸으면, 그 시뮬레이터에만 기댄 동작일 가능성이 줄어듭니다.

MuJoCo를 고른 이유는 두 가지입니다.

  • Booster가 MuJoCo용 K1 모델을 공식 제공합니다. 관절 22개, 모터 힘 한계와 재질까지 들어 있어 변환 없이 씁니다
  • 빠릅니다. 로봇 1대 기준 5초 시뮬레이션이 0.1~0.2초에 끝났습니다

Booster도 자사 학습 저장소 설명서에 MuJoCo 교차 시뮬레이션 시험 기능과 방법을 안내합니다. ⟪추천안: 원문 대조는 IsaacSim 실습 창이 확인 중⟫


어떻게 옮겼나요?

학습한 신경망의 가중치만 꺼내, MuJoCo에서 같은 입력과 같은 제어로 돌렸습니다.

  1. MuJoCo 설치 — 작업 폴더 전용 가상 환경에 pip install mujoco==3.13.0
  2. Booster 공식 K1 모델(K1_22dof.xml) 준비 — 메시 폴더는 앞서 URDF에 쓴 것을 같이 씀
  3. Isaac Lab 학습 결과에서 행동 신경망 가중치만 numpy 파일로 추출 — MuJoCo 쪽에는 PyTorch가 필요 없음
  4. 명령별로 10초씩 실행 — 제자리, 앞으로 0.5m/s, 앞으로 0.3m/s + 회전 0.8rad/s, 옆으로 0.3m/s

여기서 하나라도 어긋나면 로봇이 바로 넘어집니다. 맞춰야 했던 것은 이렇습니다.

맞춰야 할 것이번에 맞춘 값
제어 주기50Hz(MuJoCo 0.001초 × 20스텝)
관측 입력78개, 학습 때와 같은 순서(몸통 속도·중력 방향·명령·관절 상태·직전 행동 묶음)
관절 순서Isaac Lab 쪽 관절 순서를 그대로
목표 관절각기본 자세 + 0.5 × 행동
관절 게인학습 때와 같은 PD 게인(값은 교육과정 자료에서 다룹니다)

관절 순서가 두 시뮬레이터에서 다르게 매겨지는 점을 특히 조심해야 합니다.


첫 학습(v1) 결과는 어땠나요?

앞으로 걷기와 회전은 통과, 옆걸음만 MuJoCo에서 넘어졌습니다.

MuJoCo에서 Booster K1이 Isaac Lab에서 학습한 걷기 정책으로 걷는 네 장면. 체크무늬 바닥 위에서 넘어지지 않고 서서 걷는다.
MuJoCo에서 Booster K1이 Isaac Lab에서 학습한 걷기 정책으로 걷는 네 장면. 체크무늬 바닥 위에서 넘어지지 않고 서서 걷는다.
명령(10초)Isaac LabMuJoCo
제자리통과통과
앞으로 0.5m/s넘어짐 0, 4.26m넘어짐 0, 4.84m
앞으로 0.3m/s + 회전 0.8rad/s넘어짐 0, 누적 452.5°넘어짐 0, 누적 468.2°
옆으로 0.3m/s넘어짐 0, 2.66m1.7초에 넘어짐

같은 정책, 같은 명령인데 옆걸음만 결과가 갈렸습니다. MuJoCo 쪽 바닥 마찰을 0.4에서 1.0으로 올려 보고, 관절 회전 관성(armature)을 0.01로 바꿔 봐도 옆걸음은 여전히 넘어졌습니다. 어느 하나만의 원인은 아니었다는 뜻입니다.


다시 학습(v2)하니 무엇이 달라졌나요?

넘어지지는 않게 됐지만, 옆으로 가라는 명령에 몸이 돌아갔습니다.

v2는 같은 규모(K1 4,096대·1,000회)로 다시 학습하면서 이렇게 바꿨습니다.

  • Booster 공식 MJCF의 관절 회전 관성(armature) 값을 반영
  • 바닥 마찰을 0.4~1.2 사이에서 무작위로
  • 5~10초마다 ±0.5m/s로 로봇을 밀기
  • 몸통 무게를 -1~+2kg 사이에서 무작위로
MuJoCo에서 무작위화 학습(v2) 정책으로 옆걸음 명령을 준 네 장면. 넘어지지는 않지만 몸 방향이 돌아간다.
MuJoCo에서 무작위화 학습(v2) 정책으로 옆걸음 명령을 준 네 장면. 넘어지지는 않지만 몸 방향이 돌아간다.
명령(10초)v2 Isaac Labv2 MuJoCo
제자리통과(0.05m)
앞으로 0.5m/s넘어짐 0, 4.62m넘어짐 0, 3.68m, 방향 35° 틀어짐
앞으로 0.3m/s + 회전 0.8rad/s넘어짐 0, 누적 483.6°넘어짐 0, 누적 544.1°(명령보다 더 돎)
옆으로 0.3m/s넘어짐 0, 2.31m, 방향 24°넘어짐 0, 1.31m, 방향 195° 돌아감

v2의 최종 평균 보상은 28.95로 v1(32.0)보다 낮습니다. 무작위화로 과제가 어려워졌기 때문이라 점수만으로 v1과 비교하지 않습니다.

정리하면 v2로 MuJoCo 옆걸음의 넘어짐은 없어졌지만, 명령대로 옆으로 가지는 못했습니다. 앞으로 걷기도 MuJoCo에서는 방향이 35° 틀어졌습니다.


걸음 모양 점수를 더한 v4는 어땠나요?

세 명령 모두 넘어지지 않았고, 방향 틀어짐이 크게 줄었습니다.

v4는 원래 걸음 모양을 고치려고 만든 정책입니다. v1은 1초에 발을 15.2번 딛는 종종걸음이었고, v2의 무작위화 위에 걸음 박자에 맞춰 발을 번갈아 드는 점수를 더해 1초 3.6걸음이 됐습니다(연재 1회). 이 v4를 같은 방법으로 MuJoCo에 옮겼습니다.

명령(10초) → MuJoCov2v4
앞으로 0.5m/s넘어짐 0, 3.68m, 방향 35°넘어짐 0, 4.16m, 방향 9.9°
앞으로 0.3m/s + 회전 0.8rad/s(목표 458°)넘어짐 0, 544.1°넘어짐 0, 470.4°
옆으로 0.3m/s넘어짐 0, 1.31m, 방향 195°넘어짐 0, 2.00m, 방향 -11.6°

박자에 맞춰 발을 번갈아 딛는 걸음이 물리 엔진이 바뀌어도 덜 흔들린다는 해석이 자연스럽지만, 원인을 나눠 보는 시험은 하지 않았습니다. 그래서 "걸음 모양 점수가 옆걸음을 고쳤다"고 단정하지 않습니다. 이제 교차 검증의 기준 정책은 v4입니다.


다음에 무엇을 시험하나요?

v4의 남은 오차(옆걸음 방향 -11.6°)를 줄이기 위한, 아직 시험하지 않은 후보입니다.

  • 발 충돌 모양 맞추기 — MuJoCo 공식 모델은 발을 단순한 도형으로, Isaac Lab 쪽은 메시를 감싼 볼록 껍질로 계산합니다
  • 제어 지연 무작위화 — 명령이 늦게 들어가는 상황을 학습에 넣기
  • 학습 늘리기 — 반복 횟수 늘리기

결과가 나오면 이 기록을 이어서 적겠습니다.


MuJoCo에서 막히는 곳은 없었나요?

두 곳이 있었습니다.

  • Could not find module ... mujoco.dll — PC의 Visual C++ 런타임이 오래되어 msvcp140_atomic_wait.dll이 없었습니다. Microsoft Visual C++ 재배포 패키지(2015-2022) 최신판을 설치하면 해결됩니다
  • Image width 1280 > framebuffer width 640 — 화면 없이 캡처할 때 나는 오류입니다. 모델의 model.vis.global_.offwidthoffheight를 캡처 크기 이상으로 지정합니다

자주 묻는 질문

한 시뮬레이터에서 잘 걸으면 실제 로봇에서도 걷나요?

보장되지 않습니다. 저희 기록에서도 같은 정책이 Isaac Lab에서는 옆걸음을 했지만 MuJoCo에서는 넘어졌습니다. 여러 시뮬레이터로 확인한 뒤에도 실제 로봇 적용에는 추가 검증이 필요합니다.

무작위화 학습을 하면 문제가 해결되나요?

저희 기록에서는 무작위화(v2)만으로 옆걸음의 넘어짐은 없어졌지만 몸이 195° 돌아갔습니다. 걸음 모양 점수를 더한 v4에서 -11.6°로 줄었습니다. 무엇을 바꾸느냐에 따라 결과가 달라지므로 조건을 바꿔 가며 확인합니다.

MuJoCo 쪽에 PyTorch가 필요한가요?

저희는 학습한 신경망 가중치만 numpy 파일로 뽑아 계산해서 MuJoCo 쪽에는 PyTorch를 설치하지 않았습니다.

학생 실습으로 해도 되나요?

옆걸음처럼 결과가 갈리는 지점이 있어 오히려 토의 주제로 좋습니다. 관측 입력 순서나 관절 순서가 하나라도 틀리면 바로 넘어지니 그 부분을 먼저 안내하세요.


확인한 버전: Isaac Sim 5.1.0 · Isaac Lab 2.3.2 · MuJoCo 3.13.0 · booster_assets 커밋 3c2dfa9(K1_22dof.xml)

출처: 에스브이로보틱스 Isaac Sim 실습 기록(K1 걷기 강화학습 절차서 부록 B, 시뮬레이터 3종 사용 후기 v1/v2/v4 표, 2026-09-17~18). 모든 결과는 평지 시뮬레이션이며 실제 로봇에서는 확인하지 않았습니다.


이 글과 그림의 저작권은 SV로보틱스에 있습니다. 원문 링크를 밝힌 인용은 환영하며, 전문 복제·재배포와 교육 자료로의 전재는 허락이 필요합니다.

  • #sim-to-sim
  • #MuJoCo
  • #Isaac Lab
  • #강화학습
  • #Booster K1
  • #교차 검증