시뮬레이션에서는 완벽하게 걷던 로봇이 실제 바닥에서는 휘청거리는 일이 흔합니다. 이 차이를 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 Lab | MuJoCo |
|---|---|---|
| 성격 | Isaac Sim 기반 로봇 학습 프레임워크 | 범용 물리 엔진 |
| 물리 | PhysX | 접촉을 볼록 최적화 문제로 푸는 자체 모델(소프트 접촉 지원) |
| 렌더링 | 사실적 장면, 타일 렌더링 API | 기본 시각화 중심 |
| 도메인 랜덤화 | 기능으로 제공 | 사용자가 모델·코드로 구성 |
| 라이선스 | BSD-3-Clause(일부 Apache-2.0) | 오픈소스(2022년 공개, Google DeepMind) |
Isaac Lab 문서는 강화학습, 시연 학습, 모션 플래닝을 대상 워크플로로 들고 도메인 랜덤화를 지원한다고 밝힙니다. MuJoCo 문서는 로보틱스와 생체역학 연구를 주요 용도로 설명합니다. 카메라 인식까지 함께 학습해 시각 격차가 중요하다면 Isaac Lab, 동역학 실험을 빠르게 반복하는 것이 중심이면 MuJoCo가 출발점으로 자주 쓰입니다.
적용 순서: 실제 로봇 측정에서 시작하기
- 실제 로봇의 질량, 관절 마찰, 모터 지연, 카메라 노이즈를 측정하거나 데이터시트로 확인해 기준값을 만든다.
- 시뮬레이터 모델을 기준값에 맞춘다(시스템 식별).
- 시각·동역학 랜덤화 범위를 기준값 중심으로 잡고 학습한다. 범위 결정이 어렵다면 ADR처럼 점진적으로 넓히는 방식을 검토한다.
- 실제 로봇에서 짧은 시험으로 성공률 차이를 측정하고, 실패 유형(인식 실패인지 동작 실패인지)에 따라 해당 랜덤화 항목을 조정한다.
- 운용 중 환경 변화가 크다면 적응 모듈을 추가한다.
시뮬레이션 데이터만으로 부족할 때 실제 원격조작 데이터와 어떻게 섞을지는 합성 데이터 파이프라인에서 다룹니다.