Sim-to-Real이란? 가상에서는 잘하던 로봇이 현실에서 실수하는 이유
시뮬레이션 속 로봇팔이 부품을 집어 정해진 위치에 내려놓습니다. 여러 번 반복해도 실수 없이 작업을 마칩니다. 그렇다면 가상에서 학습한 행동을 실제 공장의 로봇에 그대로 적용하면 어떨까요?
겉으로는 비슷한 장면이어도 결과는 달라질 수 있습니다. 조명에 반사된 빛 때문에 부품의 위치를 잘못 파악하거나, 예상보다 미끄러운 표면 때문에 부품을 놓칠 수 있습니다. 로봇이 명령에 반응하는 속도가 시뮬레이션과 다를 때도 있습니다.
이처럼 가상환경과 실제 현장 사이의 차이를 ‘Sim-to-Real 갭’, 즉 시뮬레이션과 현실 사이의 격차라고 부릅니다.
시뮬레이션은 로봇이 다양한 작업을 반복해서 배우고 시험할 수 있는 중요한 기반입니다. 그 경험을 현장으로 이어가려면 무엇이 필요할까요? 이번 글에서는 부품을 집는 로봇팔을 따라가며 이 차이가 어디서 생기는지, 어떻게 줄이고 검증하는지 살펴봅니다. 마지막으로 NC AI와 한화오션이 가상환경과 실제 작업을 비교·조율한 사례를 소개합니다.
Sim-to-Real 갭은 어디서 생길까?
로봇팔이 부품 하나를 옮기려면 부품의 위치를 파악하고, 그리퍼로 잡은 뒤, 목표 위치까지 옮겨야 합니다. 하나의 동작처럼 보이지만, 단계마다 가상과 현실이 어긋날 틈이 있습니다.

첫째는 보는 것의 차이입니다. 로봇은 카메라 영상으로 부품의 위치를 판단합니다. 가상에서는 윤곽이 뚜렷하지만, 실제 공장에서는 금속 표면의 반사광이나 주변 설비의 그림자가 윤곽을 가리기도 합니다. 카메라가 시뮬레이션과 조금 다른 위치나 각도로 설치돼 있으면, 로봇이 계산한 부품의 위치도 어긋납니다.
둘째는 접촉의 차이입니다. 위치를 정확히 알았다고 끝이 아닙니다. 잡는 데 필요한 힘은 부품의 무게와 표면의 마찰에 따라 달라지기 때문입니다. 실제 표면이 시뮬레이션보다 미끄럽다면, 가상에서는 충분했던 힘으로 잡아도 들어 올리는 순간 부품이 미끄러지기 쉽습니다.
셋째는 움직임의 차이입니다. 로봇은 명령을 받은 뒤 모터를 움직이기까지 약간의 시간이 걸립니다. 이 반응 속도가 시뮬레이션과 다르면, 그리퍼는 예상보다 한발 늦게 목표 위치에 도착합니다. 컨베이어 위에서 움직이는 부품을 집을 때는 이런 작은 시간 차이가 곧 실패로 이어집니다.
세 가지 차이는 함께 겹치기도 합니다. 위치를 조금 잘못 파악했는데 표면까지 예상보다 미끄럽다면, 각각은 작은 차이여도 결국 부품을 놓치게 됩니다.
시스템 식별: 실제 작업에 중요한 조건부터 맞춘다
가상에서는 잘 잡히던 부품이 실제로는 자꾸 미끄러진다면, 무엇부터 확인해야 할까요? 먼저 시뮬레이션에 입력한 조건이 실제와 얼마나 다른지 살펴봐야 합니다.
예를 들어 시뮬레이션 속 부품이 실물보다 가볍고, 표면도 덜 미끄럽게 설정돼 있었다고 해 봅시다. 그러면 로봇은 처음부터 필요한 것보다 약한 힘으로 잡도록 배운 셈입니다. 실제 부품의 무게와 마찰을 측정해 시뮬레이션에 반영하면 이 차이를 줄일 수 있습니다. 같은 명령에 로봇이 얼마나 빨리 반응하는지도 가상과 현실에서 비교해 맞춥니다.
이렇게 실제 측정값으로 무게, 마찰, 모터의 반응 같은 특성을 추정해 시뮬레이션을 보정하는 과정을 시스템 식별(System Identification)이라고 합니다.
모든 값을 처음부터 정밀하게 맞출 필요는 없습니다. 결과를 크게 좌우하는 조건부터 측정하는 편이 효율적입니다. 부품이 미끄러진다면 마찰을, 목표 위치에 늦게 도착한다면 로봇의 반응 속도를 먼저 살펴보는 식입니다. 보정한 뒤에는 같은 동작을 다시 해 보고 차이가 줄었는지 확인합니다.
실제 공장의 공간과 설비, 그 상태까지 디지털로 옮겨 놓은 디지털 트윈을 활용하면, 이런 보정을 현장과 비슷한 환경에서 시험해 볼 수 있습니다.
다만 한 번 측정한 값이 늘 맞는 것은 아닙니다. 같은 종류의 부품도 무게가 조금씩 다르고, 표면 상태에 따라 마찰도 바뀝니다.
도메인 랜덤화: 남아 있는 차이에도 대응하도록 학습한다
측정한 조건 주변의 변화까지 학습하는 대표적인 방법이 도메인 랜덤화(Domain Randomization)입니다. 학습할 때 가상환경의 조건을 일정한 범위 안에서 계속 바꿔 주는 방법입니다. 실제 현장의 조건이 학습 중 경험한 범위 안에 있다면, 로봇은 현실을 그동안 만난 여러 변화 가운데 하나처럼 다룰 수 있습니다.
부품을 집는 로봇팔이라면 조명의 밝기와 방향, 부품의 위치와 각도를 바꿔 가며 학습합니다. 밝은 조명 아래에서도, 그림자 속에서도, 비스듬히 놓여 있어도 찾아서 집는 경험을 쌓는 것입니다.

부품의 무게나 표면의 마찰, 로봇의 반응 속도도 같은 방식으로 바꿉니다. 조명을 바꾸는 것은 보는 것의 차이에, 무게와 마찰은 접촉의 차이에, 반응 속도는 움직임의 차이에 대비하는 연습입니다.
다만 바꾸는 범위에도 기준이 필요합니다. 범위가 너무 좁으면 실제 현장의 변화를 충분히 경험하지 못합니다. 반대로 너무 넓으면 실제로는 일어나지 않을 상황까지 배우느라 학습이 어려워집니다.

이때 시스템 식별로 측정한 현장 정보가 범위를 정하는 출발점이 됩니다. 처음에는 좁은 범위에서 시작해 점차 넓히는 방법도 있습니다. OpenAI는 로봇 손으로 루빅스 큐브를 맞추는 연구에서, 로봇이 일정 수준 이상 작업을 해내면 조건의 변화 폭을 자동으로 넓히는 방식을 사용했습니다.
실제 환경 검증: 로봇의 실패는 무엇을 알려줄까?
가상에서 다양한 조건을 경험한 로봇도 실제 작업에서는 실패할 수 있습니다. 이런 실패는 무엇을 점검하고 보완해야 하는지 알려주는 단서가 됩니다.
먼저 기본 설정부터 확인합니다. 가상과 실제에서 같은 좌표와 단위를 쓰는지, 명령이 올바른 관절에 제때 전달되는지 같은 것들입니다. 이런 설정이 틀려 있다면 학습을 아무리 바꿔도 문제가 남습니다.
그다음 앞에서 살펴본 세 가지 차이를 기준으로 원인을 찾습니다. 부품의 위치를 제대로 파악했는지(보는 것), 잡고 들어 올리는 동안 미끄러지지 않았는지(접촉), 로봇이 의도한 시점과 경로로 움직였는지(움직임)를 차례로 확인합니다.
원인이 하나가 아닐 수도 있습니다. 이럴 때는 작업 당시의 영상과 센서 기록을 살펴본 뒤, 다른 조건은 그대로 두고 의심되는 조건만 하나씩 바꿔 가며 다시 시험하면 원인을 좁힐 수 있습니다.
원인을 찾았다면 그에 맞게 보완합니다. 실제와 다르게 설정된 값이 있었다면 시스템 식별로 시뮬레이션을 보정하고, 특정 조건에서 실패가 반복된다면 도메인 랜덤화의 학습 범위에 그 조건을 포함합니다. 그리고 다시 시험합니다.

이 과정이 제대로 돌아가려면 무엇을 성공으로 볼지 먼저 정해야 합니다. 부품을 한 번 옮겼다고 성공은 아닙니다. 예를 들면 이런 기준을 봅니다.
같은 작업을 반복했을 때 성공률
조명이나 배치가 바뀌었을 때의 성능
작업 시간과 품질
사람이 개입해야 했는지 여부
그리고 가상과 실제를 같은 기준으로 평가합니다.
가상과 실제의 성능 차이가 작다고 해서 충분한 것도 아닙니다. 둘 다 성공률이 낮다면 격차가 작아도 현장에 맡길 수 없습니다. 결국 중요한 것은 실제 로봇이 현장이 요구하는 성능과 품질을 내는지입니다.
한화오션 자율용접 사례: 가상환경과 실제 작업을 비교·조율하다
부품 하나를 옮기는 작업에도 이런 과정이 필요하다면, 작업 환경과 대상이 수시로 달라지는 조선소 용접 현장은 어떨까요?
지난 한화오션 인터뷰에서 소개했듯이, 용접 공정은 현장 온도나 부재 공차(선박을 이루는 강재 부품 치수의 허용 오차) 같은 변수가 많아 미리 정한 규칙만으로 대응하기 어렵습니다. 이런 변수 때문에 사전에 가상 시뮬레이션을 원활하게 수행하기 어려운 경우도 많았습니다.
그래서 NC AI는 한화오션과 함께 용접 자동화 시스템을 3D 스캔해 가상환경을 만들고, 공정을 미리 시뮬레이션한 뒤 그 결과를 실제 작업과 비교·조율했습니다. 현장에서 겪을 수 있는 시행착오를 가상에서 먼저 살펴보며 모델을 가다듬을 계기를 마련했습니다.
조선소는 '보는 것'부터 쉽지 않은 환경입니다. 용접할 때 나오는 강한 빛(아크 광)과 불꽃, 용접 분진, 카메라 렌즈 오염이 모두 비전 인식을 방해합니다. NC AI는 올해 6월 프로젝트 착수를 알리며 이러한 조건을 주요 과제로 꼽았고, 실제 현장 데이터와 엔지니어의 피드백을 반영하며 이에 대응하는 연구를 진행하고 있습니다.
가상에서의 성공을 현장의 신뢰로
이전 글에서 다룬 월드모델로 행동의 결과를 예측하고, 로봇 파운데이션 모델(RFM)로 다양한 작업을 학습하더라도, 실제 현장에서의 성능은 따로 확인해야 합니다.
Sim-to-Real의 목표는 현실을 가상에 완벽하게 복제하는 것이 아닙니다. 작업에 영향을 주는 차이를 찾아, 측정할 수 있는 것은 맞추고, 남은 변화에는 대응하도록 학습하는 것입니다. 그리고 실제 검증에서 발견한 문제가 다음 보정과 학습의 근거가 됩니다.
현장에서 신뢰할 수 있는 로봇은 모든 조건에서 완벽한 로봇이 아니라, 어떤 조건에서 작업할 수 있고 어떤 상황에서 보완이 필요한지 확인된 로봇입니다. 가상에서의 성공이 현장의 신뢰로 이어지려면, 무엇이 다르고 어디까지 검증됐는지 설명할 수 있어야 합니다.
[참고자료]
NVIDIA, 「Getting Started With Isaac Lab: Simulation to Reality」
Tan et al., 「Sim-to-Real: Learning Agile Locomotion For Quadruped Robots」 (2018)
OpenAI, 「Solving Rubik’s Cube with a Robot Hand」 (2019.10)


