본문 바로가기

Sim-to-Real 격차는 왜 생기고 어떻게 줄이나: 도메인 랜덤화·동역학 랜덤화·적응 모듈 정리

시뮬레이션에서 학습한 로봇 정책이 실제 하드웨어에서 실패하는 시각·동역학 격차의 원인과, 도메인 랜덤화·동역학 랜덤화·자동 랜덤화(ADR)·적응 모듈(RMA) 같은 해법을 원 논문 기준으로 정리하고 적용 순서를 안내합니다.

목차

핵심 요약

  1. Sim-to-Real 격차는 크게 시각 격차(조명·질감·카메라 노이즈)와 동역학 격차(질량·마찰·모터 특성·지연)로 나뉘며, 해법도 두 갈래로 나눠 적용해야 한다.
  2. Tobin 외(2017)는 렌더링을 무작위화한 가짜 같은 질감의 시뮬레이션 이미지만으로 실제 물체 위치를 1.5cm 정확도로 찾는 검출기를 학습했다.
  3. Peng 외(2017)는 시뮬레이터 동역학을 무작위화해 학습한 정책이 실제 로봇 팔의 물체 밀기 작업에서 실제 데이터 학습 없이 비슷한 성능을 유지했다고 보고했다.
  4. OpenAI의 자동 도메인 랜덤화(ADR)는 난이도를 점점 높이는 무작위 환경을 자동으로 만들어, 시뮬레이션만으로 학습한 로봇 손이 루빅스 큐브를 풀게 했다.
  5. RMA는 기본 정책과 적응 모듈을 시뮬레이션에서만 학습해 A1 4족 로봇이 미세조정 없이 바위·모래·계단 등에서 1초도 안 되는 시간에 적응하도록 했다.

시뮬레이션에서는 완벽하게 걷던 로봇이 실제 바닥에서는 휘청거리는 일이 흔합니다. 이 차이를 Sim-to-Real 격차(reality gap)라고 부릅니다. 이 글은 격차가 생기는 두 가지 원인을 구분하고, 각각에 대응하는 대표 기법을 원 논문이 보고한 결과와 함께 정리합니다. 시뮬레이션 기반 학습을 처음 설계하는 엔지니어가 어떤 기법부터 적용할지 판단하는 데 목적이 있습니다.

격차의 두 가지 원인: 보이는 것과 움직이는 것

시뮬레이션이 Physical AI 학습의 기본 도구가 된 이유는 실제 로봇으로 수백만 번 시행착오를 할 수 없기 때문입니다. 그런데 시뮬레이터는 현실을 근사할 뿐이고, 그 차이는 두 종류로 나타납니다.

구분무엇이 다른가대표 증상대표 해법
시각 격차조명, 그림자, 질감, 반사, 카메라 노이즈·왜곡물체를 못 찾거나 위치를 잘못 추정도메인 랜덤화(렌더링)
동역학 격차질량, 관성, 접촉 마찰, 모터 토크 특성, 제어 지연동작이 흔들리거나 미끄러지고 넘어짐동역학 랜덤화, 적응 모듈

두 격차는 원인이 다르므로 해법도 따로 적용해야 합니다. 시각 랜덤화만 하고 동역학을 그대로 두면 “잘 보는데 잘 못 움직이는” 정책이 됩니다.

해법 1: 렌더링을 무작위화하는 도메인 랜덤화

Tobin 외(2017)는 시뮬레이터의 렌더링을 무작위로 바꿔 학습하면 실제 이미지를 따로 쓰지 않아도 현실에서 동작하는 모델을 만들 수 있음을 보였습니다. 이 연구의 물체 검출기는 일부러 비현실적인 무작위 질감을 입힌 시뮬레이션 RGB 이미지로만 학습했는데도, 실제 환경에서 물체 위치를 1.5cm 정확도로 찾았고 방해 물체와 부분 가림에도 견뎠습니다. 저자들은 이 검출기로 어수선한 환경에서 실제 로봇 파지까지 수행했습니다.

핵심 아이디어는 “현실처럼 보이게 만드는 것"이 아니라 “다양하게 만들어 현실을 그 다양성 중 하나로 보이게 하는 것"입니다. 사실적인 렌더링에 많은 비용을 쓰기 전에 변화의 폭을 넓히는 쪽이 효과적일 수 있다는 점을 보여 준 연구입니다.

해법 2: 물리 파라미터를 무작위화하는 동역학 랜덤화

Peng 외(2017)는 같은 아이디어를 동역학에 적용했습니다. 학습 중 시뮬레이터의 동역학을 무작위로 바꿔, 학습 분포와 다른 동역학에도 적응하는 정책을 만들었습니다. 로봇 팔로 물체를 목표 위치까지 미는 과제에서, 시뮬레이션에서만 학습한 정책이 실제 로봇에서도 비슷한 성능을 유지했고 큰 보정 오차에도 견뎠다고 보고합니다.

실무에서는 아래처럼 기준값과 범위를 함께 관리하는 설정 파일 형태로 정리하는 경우가 많습니다. 값은 형식 예시이며, 실제 범위는 내 로봇의 측정값을 기준으로 정합니다.

# 동역학 랜덤화 설정 예시 (값은 형식 예시)
randomization:
  link_mass_scale:      [0.8, 1.2]    # 기준 질량 대비 배율
  joint_friction:       [0.5, 1.5]    # 기준 마찰 계수 대비 배율
  motor_strength_scale: [0.9, 1.1]
  action_latency_ms:    [0, 40]       # 제어 명령 지연
  ground_friction:      [0.4, 1.2]
  observation_noise_std: 0.01

link_mass_scale, joint_friction, action_latency_ms처럼 항목별로 범위를 분리해 두면, 실제 로봇에서 실패가 났을 때 어떤 항목의 범위를 넓히거나 좁힐지 추적하기 쉽습니다.

해법 3: 난이도를 스스로 올리는 자동 도메인 랜덤화(ADR)

랜덤화 범위를 사람이 정하면 너무 좁거나 너무 넓게 잡기 쉽습니다. OpenAI의 루빅스 큐브 연구는 자동 도메인 랜덤화(ADR)로 이 문제를 풀었습니다. ADR은 정책이 현재 범위를 잘 처리하면 범위를 넓혀 점점 어려운 무작위 환경을 자동으로 만듭니다. 연구진은 ADR과 학습용 로봇 플랫폼을 결합해 시뮬레이션에서만 학습한 사람형 로봇 손이 실제 루빅스 큐브를 풀게 했고, 메모리를 가진 제어 정책에서 일종의 메타 학습이 나타났다고 보고합니다.

해법 4: 실제 환경을 추정해 보정하는 적응 모듈

랜덤화가 “어떤 환경에서도 무난한 정책"을 노린다면, 적응 방식은 “지금 환경을 빠르게 알아채고 맞추는 정책"을 노립니다. RMA(Rapid Motor Adaptation)는 기본 정책과 적응 모듈 두 부분으로 구성되며, 사전 지식이나 기준 궤적 없이 시뮬레이션에서만 학습했습니다. A1 4족 로봇에 미세조정 없이 배포해 바위, 미끄러운 바닥, 모래, 계단, 풀밭 같은 지형에서 1초도 안 되는 시간에 새 상황에 적응했다고 보고합니다.

적응 모듈의 장점은 실제 로봇이 운용 중에 겪는 하중 변화나 마모에도 대응할 수 있다는 점입니다. 보행 제어 전반의 흐름은 이족보행과 전신 제어에서 이어서 볼 수 있습니다.

시뮬레이터 선택: Isaac Lab과 MuJoCo의 출발점

항목Isaac LabMuJoCo
성격Isaac Sim 기반 로봇 학습 프레임워크범용 물리 엔진
물리PhysX접촉을 볼록 최적화 문제로 푸는 자체 모델(소프트 접촉 지원)
렌더링사실적 장면, 타일 렌더링 API기본 시각화 중심
도메인 랜덤화기능으로 제공사용자가 모델·코드로 구성
라이선스BSD-3-Clause(일부 Apache-2.0)오픈소스(2022년 공개, Google DeepMind)

Isaac Lab 문서는 강화학습, 시연 학습, 모션 플래닝을 대상 워크플로로 들고 도메인 랜덤화를 지원한다고 밝힙니다. MuJoCo 문서는 로보틱스와 생체역학 연구를 주요 용도로 설명합니다. 카메라 인식까지 함께 학습해 시각 격차가 중요하다면 Isaac Lab, 동역학 실험을 빠르게 반복하는 것이 중심이면 MuJoCo가 출발점으로 자주 쓰입니다.

적용 순서: 실제 로봇 측정에서 시작하기

  1. 실제 로봇의 질량, 관절 마찰, 모터 지연, 카메라 노이즈를 측정하거나 데이터시트로 확인해 기준값을 만든다.
  2. 시뮬레이터 모델을 기준값에 맞춘다(시스템 식별).
  3. 시각·동역학 랜덤화 범위를 기준값 중심으로 잡고 학습한다. 범위 결정이 어렵다면 ADR처럼 점진적으로 넓히는 방식을 검토한다.
  4. 실제 로봇에서 짧은 시험으로 성공률 차이를 측정하고, 실패 유형(인식 실패인지 동작 실패인지)에 따라 해당 랜덤화 항목을 조정한다.
  5. 운용 중 환경 변화가 크다면 적응 모듈을 추가한다.

시뮬레이션 데이터만으로 부족할 때 실제 원격조작 데이터와 어떻게 섞을지는 합성 데이터 파이프라인에서 다룹니다.

자주 하는 실수

  • 모든 물리 파라미터를 최대한 넓게 무작위화하는 경우 — 범위가 지나치게 넓으면 정책이 보수적으로 변하거나 학습이 수렴하지 않으므로 실측값 중심으로 범위를 잡는다.
  • 시각 랜덤화만 하고 모터 지연·마찰 같은 동역학 차이는 그대로 두는 경우 — 인식은 되는데 동작이 흔들리는 실패로 이어진다.
  • 실제 로봇 검증 없이 시뮬레이션 성공률만으로 배포를 결정하는 경우 — 소량의 실제 시험으로 격차를 측정하는 단계를 생략하면 원인을 찾기 어렵다.

적용 전 체크리스트

  • 실제 로봇의 질량·관절 마찰·모터 지연 같은 기준값을 측정하거나 데이터시트로 확인했는가
  • 시각 랜덤화 대상(조명·질감·카메라 위치·노이즈)과 동역학 랜덤화 대상을 따로 목록화했는가
  • 랜덤화 범위를 기준값 대비 어느 정도로 잡을지 정하고 기록했는가
  • 실제 로봇에서 짧은 시험으로 시뮬레이션 대비 성공률 차이를 측정할 계획이 있는가
  • 사용할 시뮬레이터의 라이선스와 GPU 병렬 학습 지원 여부를 확인했는가

자주 묻는 질문

Isaac Lab과 MuJoCo 중 무엇으로 시작해야 하나요?
Isaac Lab은 Isaac Sim 위에서 사실적인 렌더링과 도메인 랜덤화 기능을 제공하는 학습 프레임워크(BSD-3 라이선스)이고, MuJoCo는 접촉을 볼록 최적화 문제로 푸는 범용 물리 엔진으로 Google DeepMind가 오픈소스로 공개했습니다. 카메라 기반 인식까지 함께 학습한다면 Isaac Lab, 빠른 동역학 실험이 중심이면 MuJoCo로 시작하는 경우가 많습니다.
합성 데이터와 도메인 랜덤화는 같은 말인가요?
도메인 랜덤화는 합성 데이터를 만들 때 쓰는 기법 중 하나입니다. 합성 데이터는 시뮬레이션이나 생성 모델로 만든 학습 데이터 전체를 가리키며, 비용과 성능 비교는 합성 데이터 파이프라인에서 다룹니다.

참고 자료 · 검증 기준

  1. Tobin et al., Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World (arXiv:1703.06907)
  2. Peng et al., Sim-to-Real Transfer of Robotic Control with Dynamics Randomization (arXiv:1710.06537)
  3. OpenAI et al., Solving Rubik's Cube with a Robot Hand (arXiv:1910.07113)
  4. Kumar et al., RMA: Rapid Motor Adaptation for Legged Robots (arXiv:2107.04034)
  5. Isaac Lab documentation
  6. MuJoCo documentation — Overview

마지막 검증일: