도메인 랜덤화(Domain Randomization)는 시뮬레이션의 시각·물리·센서·제어 조건을 현실에서 달라질 수 있는 범위 안에서 바꾸며 모델을 학습시키는 방법입니다. 조명과 배경만 바꾸는 이미지 기법으로 알려져 있지만, 로봇 제어에서는 질량, 마찰, 관절 특성, 센서 오차와 동작 지연까지 함께 다룹니다.
목표는 가상환경을 무작정 어지럽히는 데 있지 않습니다. 실제 현장에서 만날 조건이 학습 범위 안에 들어오게 하고, 로봇이 특정 시뮬레이션 장면보다 여러 환경에서 유지되는 단서를 사용하도록 만드는 것이 목적입니다. 범위를 근거 없이 넓히거나 현실에 없는 조합을 만들면 오히려 학습이 느려지고 정상 조건의 성능도 낮아질 수 있습니다.
현실을 똑같이 복제하는 대신 변화의 범위를 학습시킨다
도메인 랜덤화라는 표현이 널리 알려진 계기 중 하나는 2017년 발표된 Tobin 연구진의 논문입니다. 연구진은 시뮬레이션의 질감, 조명, 카메라와 물체 배치를 다양하게 바꾸고, 현실의 영상도 학습 중 만난 변형 중 하나처럼 보이게 하는 접근을 제시했습니다. 이 연구의 대상은 RGB 영상에서 물체 위치를 찾는 문제였으므로, 결과를 모든 로봇 작업에 그대로 확대해서 읽어서는 안 됩니다.
같은 해 공개된 동역학 랜덤화 연구는 제어 정책을 현실로 옮기기 위해 질량과 마찰 같은 물리 파라미터를 바꾸는 방향을 다뤘습니다. 하나는 카메라에 보이는 세계의 차이, 다른 하나는 로봇이 힘을 주고 접촉할 때 생기는 차이에 가깝습니다. 둘 다 Sim2Real 간격을 줄이는 방법이지만 막으려는 실패가 다릅니다.
시각과 물리는 서로 다른 실패를 막는다
시각 랜덤화
카메라 기반 인식이 흔들리는 조건을 바꿉니다. 조명의 방향과 밝기, 물체와 바닥의 재질, 배경, 카메라 위치와 각도, 렌즈 특성, 노출, 그림자와 가림이 여기에 들어갑니다. Isaac Sim의 UR10 팔레타이징 예제도 조명, 재질과 질감, 카메라 자세를 서로 다른 주기로 바꾸며 데이터를 수집합니다.

시각 랜덤화는 물체를 찾거나 자세를 추정하는 모델에는 직접적인 영향을 줍니다. 그러나 컵의 색을 아무리 많이 바꿔도 그리퍼가 미끄러지는 문제까지 해결되지는 않습니다.
물리 랜덤화
접촉과 움직임의 차이를 다룹니다. 물체 질량과 무게중심, 정지·동마찰, 반발계수, 관절 마찰과 감쇠, 모터 게인, 중력, 외력 같은 값이 대상입니다. 집기, 밀기, 보행처럼 힘과 접촉이 결과를 바꾸는 작업에서는 시각 조건만큼 중요합니다.
센서와 제어 랜덤화
현실의 센서는 참값을 그대로 내놓지 않습니다. 깊이 카메라의 거리 오차, 관절 엔코더의 편향, 프레임 누락, 시간 동기화 오차를 넣을 수 있습니다. 제어 쪽에서는 명령 지연, 통신 주기 흔들림, 모터 백래시, 동작 크기 오차를 바꿉니다. OpenAI의 로봇 손 연구도 시뮬레이터 물리뿐 아니라 동작 지연, 모터 백래시, 관측 노이즈와 시각 조건을 구분해 다뤘습니다.
무엇을 바꿀지는 실제 실패에서 정한다
시뮬레이터가 제공하는 랜덤화 항목을 전부 켜는 방식은 출발점이 되기 어렵습니다. 먼저 실제 작업에서 무엇이 달라지고 어떤 실패가 생기는지 봐야 합니다.
- 아침과 오후에 검출률이 달라지면 조명, 노출과 그림자를 먼저 확인합니다.
- 무거운 물체를 들 때 경로가 지나치면 질량, 무게중심과 제어 게인을 봅니다.
- 포장 재질이 바뀔 때 미끄러지면 마찰, 그립 힘과 접촉 모델을 확인합니다.
- 네트워크가 느려질 때 진동하거나 목표를 지나치면 관측·동작 지연을 재현합니다.
범위는 공급사 공차, 센서 로그, 캘리브레이션 결과, 실제 물체 표본과 실패 기록에서 잡는 편이 낫습니다. 정확히 알 수 없는 값이라도 최소·정상·최대 조건을 측정하면 근거 없는 추측보다 좁은 출발 범위를 만들 수 있습니다. 어떤 센서와 로그가 필요한지는 로봇 센서 종류와 역할에서 이어서 볼 수 있습니다.

범위가 넓을수록 강해지는 것은 아니다
범위가 너무 좁으면 실제 값이 학습 분포 밖으로 나갑니다. 반대로 지나치게 넓으면 서로 다른 세계를 한 정책으로 모두 해결해야 하므로 학습 자체가 어려워집니다. 마찰을 현실에서 나올 수 없는 값까지 흔들거나 카메라를 작업 공간 밖에 배치하면 강건성을 높이기보다 잘못된 문제를 학습시키게 됩니다.
처음에는 측정한 정상값 주변에서 시작하고, 정책이 안정되면 실패가 생기는 방향으로 범위를 넓히는 방식이 실용적입니다. OpenAI가 로봇 손에 사용한 자동 도메인 랜덤화(ADR)는 성능을 보면서 랜덤화 경계를 점차 확장한 사례입니다. 다만 특정 연구 시스템에서 효과가 있었다는 뜻이지, 모든 로봇 프로젝트가 같은 알고리즘을 써야 한다는 의미는 아닙니다.
모든 변수를 따로 뽑으면 현실에 없는 조합이 생긴다
질량, 무게중심과 관성은 서로 연결돼 있습니다. 조명이 어두워지면 노출 시간과 영상 노이즈도 함께 달라질 수 있습니다. 적재 중량이 늘면 허용 가속도와 모터 전류 제한이 같이 바뀌기도 합니다. 이 값을 모두 독립적인 난수로 뽑으면 현실에서는 거의 나오지 않는 조합이 만들어집니다.
그래서 작업 조건을 묶은 시나리오 단위가 필요합니다. 예를 들어 ‘무거운 물체·낮은 가속도’, ‘어두운 조명·긴 노출·큰 모션 블러’처럼 연관된 변수를 함께 움직입니다. 물리적으로 지켜야 할 제약은 샘플링 뒤에 검사하고, 불가능한 조합은 학습 데이터에서 제외해야 합니다.
값을 언제 바꾸는지도 결과에 영향을 준다
같은 변수라도 로봇 한 대의 고정 특성인지, 작업마다 달라지는 조건인지, 동작 중 순간적으로 생기는 변화인지에 따라 바꾸는 시점이 달라집니다.
- 시작할 때: 로봇 링크 질량, 센서 장착 오차처럼 한 장비 안에서는 고정되는 값을 설정합니다.
- 에피소드가 바뀔 때: 물체 위치, 적재 중량, 바닥 마찰, 조명 조건처럼 작업마다 달라지는 값을 다시 뽑습니다.
- 동작 중 일정 간격으로: 센서 노이즈, 통신 지연, 외란처럼 시간에 따라 변하는 요소를 적용합니다.
Isaac Lab의 이벤트 API에는 질량, 중력, 액추에이터 게인, 관절 파라미터, 물리 재질과 외력을 바꾸는 함수가 나뉘어 있습니다. 다만 물리 값을 실행 중에 자주 바꾸는 것이 항상 안전한 것은 아닙니다. Isaac Lab의 재현성 문서는 GPU에서 물리 재질을 런타임에 바꾸면 결정성과 시뮬레이션 문제가 생길 수 있어 설정 단계에서 적용할 것을 권합니다.
난수 시드와 샘플링된 값을 함께 저장해야 같은 실패를 다시 만들 수 있습니다. ‘랜덤하게 학습했다’는 기록만 남으면 어느 조건에서 정책이 무너졌는지 되짚기 어렵습니다.
컵 집기 작업에 적용하면 이렇게 나눈다
컨베이어 위 컵을 카메라로 찾아 집는 작업을 예로 들면, 먼저 성공과 실패를 ‘검출 실패·접근 충돌·미끄러짐·들기 중 낙하·시간 초과’로 나눕니다. 그다음 각 실패에 영향을 주는 변수를 연결합니다.
- 실제 카메라 영상과 컵 표본에서 밝기, 위치, 크기, 표면 반사와 가림 범위를 측정합니다.
- 컵의 질량, 무게중심, 접촉면 재질과 그리퍼 힘의 변화를 기록합니다.
- 깊이 오차, 영상 지연, 제어 주기와 그리퍼 닫힘 시간을 로그로 남깁니다.
- 각 변수를 실패 원인과 연결하고, 정상 범위부터 랜덤화를 시작합니다.
- 한 번에 모든 범위를 넓히지 말고, 실패가 남는 조건을 중심으로 다음 학습 분포를 조정합니다.
이 과정에서 시각 모델만 학습한다면 물리 랜덤화는 직접 필요하지 않을 수 있습니다. 반대로 집기 정책까지 학습한다면 인식 성공률만으로 검증을 끝내서는 안 됩니다. 접촉 뒤의 미끄러짐과 낙하까지 봐야 합니다.
현실 검증은 세 층으로 나누는 편이 낫다
학습에 사용한 랜덤 시드로 다시 평가하면 분포를 외운 모델도 좋아 보일 수 있습니다. 평가는 다음 세 층으로 분리합니다.
- 기준 시뮬레이션: 캘리브레이션한 정상 조건에서 기본 성능이 떨어지지 않았는지 봅니다.
- 홀드아웃 시뮬레이션: 학습에 쓰지 않은 시드뿐 아니라 다른 범위, 극단 조합과 새로운 배치를 시험합니다.
- 실제 로봇: 반복 성공률, 조건별 실패율, 사이클타임, 복구 성공과 사람 개입 횟수를 기록합니다.
랜덤화를 적용하지 않은 기준 모델과 같은 조건에서 비교해야 효과를 분리할 수 있습니다. 실제 로봇 시험은 안전 정지, 속도와 힘 제한, 충돌 회피를 갖춘 상태에서 진행해야 하며, 도메인 랜덤화가 안전 검증이나 인증을 대신하지는 않습니다. 현실에서 자주 무너지는 지점은 Sim2Real이 실패하는 이유와 함께 보면 더 선명합니다.
합성 데이터와 같은 말은 아니다
합성 데이터는 가상환경에서 만든 이미지, 상태, 행동과 라벨을 뜻합니다. 도메인 랜덤화는 그 데이터를 만들거나 정책을 학습할 때 어떤 조건을 어떻게 바꿀지 정하는 방법입니다. 합성 데이터 없이 물리 파라미터를 흔들며 강화학습 정책을 훈련할 수도 있고, 도메인 랜덤화 없이 고정된 장면에서 합성 이미지를 만들 수도 있습니다.
영상에 노이즈를 뒤늦게 더하는 데이터 증강과도 범위가 다릅니다. 데이터 증강은 이미 만들어진 관측을 바꾸는 경우가 많고, 도메인 랜덤화는 카메라 자세, 조명, 접촉과 동역학을 포함한 시뮬레이션 생성 과정 자체를 바꿀 수 있습니다.
시스템 식별은 실제 로봇과 물체의 파라미터를 더 정확히 추정해 기준 시뮬레이션을 맞추는 작업입니다. 도메인 랜덤화는 그 추정값 주변의 불확실성까지 학습에 넣습니다. 둘 중 하나를 고르기보다 기준 모델을 맞춘 뒤 남는 오차를 랜덤화하는 편이 낫습니다.
설정 파일에서는 다섯 가지를 확인한다
Isaac Lab이나 다른 로봇 학습 프레임워크의 설정을 읽을 때는 함수 이름보다 아래 항목을 먼저 봅니다.
- 대상: 시각, 물체, 로봇 링크, 관절, 센서, 관측과 동작 중 무엇을 바꾸는가
- 범위와 단위: 절대값인지 기준값에 더하거나 곱하는 값인지, 단위가 맞는가
- 분포: 균등·가우시안·로그 균등 중 무엇을 쓰며 실제 표본과 맞는가
- 시점: 시작, 리셋, 일정 간격 중 언제 다시 뽑는가
- 재현 기록: 시드, 샘플 값, 소프트웨어와 물리 엔진 버전을 남기는가
시각 데이터 생성이 목적이라면 Isaac Sim Replicator 문서처럼 랜덤화와 라벨 수집을 함께 보는 편이 좋습니다. 제어 정책이 목적이라면 물리·센서·동작 조건과 폐루프 평가가 중심입니다. 도구별 역할은 Isaac Sim·MuJoCo·Gazebo 비교에서 이어집니다.
도메인 랜덤화는 불확실성을 학습 범위로 바꾸는 방법이다
도메인 랜덤화는 현실을 아무렇게나 흉내 내는 기술이 아니라, 실제 작업에서 생기는 불확실성을 측정 가능한 학습 범위로 바꾸는 방법입니다. 무엇을 바꿀지보다 왜 그 변수를 바꾸는지, 범위가 현실을 포함하는지, 학습에 쓰지 않은 조건과 실제 로봇에서 효과가 남는지를 함께 봐야 합니다.
도메인 랜덤화에서 자주 묻는 질문
모든 Sim2Real 작업에 꼭 필요한가요?
가상과 현실의 차이가 작고 기존 제어기가 충분히 견디는 작업이라면 복잡한 랜덤화가 필요하지 않을 수 있습니다. 실제 시험에서 반복되는 차이가 확인될 때 해당 변수부터 넣는 편이 낫습니다.
도메인 랜덤화를 쓰면 실제 데이터가 필요 없나요?
아닙니다. 범위를 정하고 결과를 검증하려면 실제 센서 로그, 물체 표본과 반복 시험이 필요합니다. 현실 데이터는 학습뿐 아니라 시뮬레이션이 무엇을 놓쳤는지 찾는 데 쓰입니다.
강화학습에만 쓰는 방법인가요?
아닙니다. 물체 검출과 자세 추정 같은 인식 모델, 모방학습 데이터 생성, 강화학습 제어 정책에 모두 사용할 수 있습니다. 다만 인식과 제어에서 바꿔야 할 변수와 평가 지표가 다릅니다.
랜덤화한 시뮬레이션에서 성공하면 현실에서도 성공하나요?
보장되지 않습니다. 시뮬레이션이 놓친 접촉, 센서 오류, 지연과 안전 조건이 남을 수 있습니다. 홀드아웃 시뮬레이션과 실제 로봇의 반복 성공률을 따로 확인해야 합니다.
마지막 확인: 2026년 7월 13일. 이 글은 도메인 랜덤화와 동역학 랜덤화의 초기 연구, OpenAI의 자동 도메인 랜덤화 연구, NVIDIA Isaac Sim·Isaac Lab 공식 문서를 확인해 작성했습니다. 연구 사례의 성능은 각 논문의 로봇과 평가 조건에 한정되며 특정 현장의 성공률이나 안전성을 보장하지 않습니다.