블록 앞에 서기를 짧은 시간에 배웠다 — 성공률 100%를 의심하는 법
교육용 AMR로봇암이 블록 앞에 바로 서는 법을, 물리 엔진 없이 간단한 계산 환경에서 짧은 시간에 배웠습니다. 학습에 쓰지 않은 100가지 조건에서 100번 모두 성공했지만, 그 100%가 무엇을 뜻하는지부터 따졌습니다. 3D 물리 엔진으로 옮기자 한 번은 로봇이 날아갔고, 고친 뒤에야 한 조건에서 성공했습니다.

성공률 100%가 나왔을 때 가장 먼저 한 일은 기뻐하는 게 아니라, "무엇에 대한 100%인가"를 적는 일이었습니다. 교육용 AMR로봇암이 블록 앞에 바로 서는 법을 간단한 계산 환경에서 짧은 시간에 배웠고, 학습에 쓰지 않은 100가지 조건에서 100번 모두 성공했습니다. 하지만 그 100%는 잡음이 없는 계산 환경 안에서의 100%였습니다.
연재 1편부터 4편까지 가상 로봇을 세우고, 센서를 달고, 연습장을 만들었습니다. 이번 편은 처음으로 작은 문제 하나를 실제로 학습시킨 기록입니다.
무엇을 배우게 했나요?
로봇이 블록을 집으려면 먼저 블록 바로 앞, 팔이 닿는 자리에 정면으로 서야 합니다. 이번에 배우게 한 것은 이 한 동작입니다.
- 로봇이 아는 것: 블록이 어느 쪽에, 얼마나 떨어져 있는지
- 로봇이 정하는 것: 앞으로 얼마나 갈지, 얼마나 돌지
이 단계는 블록을 찾는 단계와 실제로 집는 단계 사이에 있습니다. 실제 시연에서는 사람이 짠 규칙으로 이 단계를 처리하고 있었고, 강화학습은 그 규칙을 대신할 수 있는지 시험해 보는 후보였습니다.
왜 물리 엔진 없이 학습했나요?
로봇이 보는 것도 숫자 두 개, 정하는 것도 숫자 두 개뿐인 작은 문제였습니다. 그래서 무거운 3D 물리 엔진을 쓰지 않고, 로봇이 명령을 받으면 얼마 뒤 얼마만큼 움직이는지를 식으로 흉내 낸 간단한 계산 환경을 만들었습니다.
이렇게 하면 그래픽카드 없이 일반 PC의 CPU만으로 학습할 수 있습니다. 다른 실습이 그래픽카드를 쓰고 있어도 겹치지 않습니다.
학습 방법도 가장 단순한 쪽을 골랐습니다. 여러 후보를 시험해 잘한 것들 근처에서 다시 후보를 뽑는 교차 엔트로피법(CEM)으로 작은 신경망을 학습시켰습니다.
학습 전에 무엇을 확인했나요?
학습을 돌리기 전에 연습 환경부터 시험했습니다. 사람이 짠 간단한 규칙("먼저 블록 쪽으로 돌고, 정면이 되면 앞으로 간다")으로 30번 돌려 30번 모두 성공하는지 봤습니다. 규칙으로도 성공하지 못하는 환경이라면, 학습이 실패했을 때 원인이 학습인지 환경인지 가릴 수 없기 때문입니다.
결과는 어땠나요?
| 단계 | 결과(계산 환경) |
|---|---|
| 학습 시간 | 일반 PC의 CPU로, 짧은 시간 안 |
| 학습 중 성공률 | 0%에서 시작해 100%까지 올라감 |
| 학습에 쓰지 않은 100가지 조건 | 100번 중 100번 성공 |
100번 중 몇 번은 한 번씩 궤적을 열어 봤습니다. 처음 거리가 짧든 길든, 처음 방향이 비뚤었든 아니든 모두 먼저 방향을 맞추고 그다음 다가가는 모양이었고, 다가가는 시간은 처음 거리가 멀수록 길었습니다. 우연히 맞힌 것이 아니라 "정렬한 뒤 접근"이라는 동작을 배운 것으로 판단했습니다.
그 100%는 무엇을 뜻하나요?
그래서 이 100%에는 조건이 셋 붙습니다.
- 잡음이 없습니다. 계산 환경이 주는 "블록의 방향과 거리"는 언제나 정확한 값입니다. 실제 카메라는 블록이 가려지거나 조명이 바뀌면 값이 흔들리고, 엉뚱한 것을 블록으로 볼 때도 있습니다.
- 움직임은 식으로 흉내 낸 것입니다. 로봇이 명령에 어떻게 반응하는지를 실물 시험 값으로 맞췄는데, 그 시험에서 쓴 로봇의 이동 기록이 실제 움직임이 아니라 보낸 명령으로 계산한 값이었습니다. 이 흉내가 실물과 얼마나 같은지는 실물 시험으로 따로 확인해야 합니다.
- 물리가 없습니다. 바퀴가 미끄러지거나 차체가 흔들리는 일은 이 환경에 없습니다.
그래서 이 100%는 "잡음 없는 계산 환경 안에서는 정렬하고 다가가는 법을 배웠다"는 뜻으로만 씁니다.

3D 물리 엔진으로 옮기자 무슨 일이 있었나요?
같은 정책을 Isaac Sim 3D 물리 엔진 위의 가상 로봇에 넣어 봤습니다.
첫 시도는 실패했습니다. 몇 걸음 만에 로봇이 갑자기 크게 돌더니, 다음 순간 화면 밖으로 날아갔습니다. 1편에서 겪은 "로봇이 하늘로 날아간" 증상과 같았습니다.
원인은 정책이 아니라 새로 짠 시험 프로그램이었습니다. 1편에서 찾아낸 그리퍼 관절 설정 수정을, 다른 프로그램에는 다 넣어 놓고 이 프로그램에만 빠뜨렸습니다.
수정한 뒤 다시 돌리자 성공했습니다. 블록이 약 0.9m 떨어져 있고 비스듬한 조건에서, 약 7초 만에 정해 둔 자리와 방향 안으로 들어왔고 궤적도 튀지 않았습니다. 다만 이것은 한 가지 조건에서 한 번 확인한 결과입니다.
이 과정에서 배운 것
- 100%가 나오면 "무엇에 대한 100%인지"부터 적습니다. 이번 100%는 잡음 없는 계산 환경 안의 값이었습니다.
- 학습 전에 연습 환경을 규칙으로 먼저 시험합니다. 그래야 실패했을 때 원인을 가를 수 있습니다.
- 한 번 찾은 필수 설정도 새 프로그램에는 저절로 따라오지 않습니다. 검증된 설정은 공통으로 꺼내 쓰는 곳에 모아 두어야 같은 실수를 되풀이하지 않습니다.
- 작은 문제는 작은 도구로 풉니다. 숫자 두 개짜리 문제에는 3D 물리 엔진이 필요 없었습니다.
자주 묻는 질문
성공률 100%면 실제 로봇에서도 되나요?
그렇게 말할 수 없습니다. 이 100%는 잡음이 없는 계산 환경 안의 결과입니다. 실제 카메라의 흔들림과 오탐, 바퀴 미끄러짐은 들어 있지 않고, 3D 물리 엔진에서는 한 조건에서 한 번만 확인했습니다.
그래픽카드가 없어도 강화학습을 할 수 있나요?
이번처럼 로봇이 보는 것과 정하는 것이 아주 적은 작은 문제는 일반 PC의 CPU로도 짧은 시간에 학습했습니다. 로봇 수천 대를 동시에 돌리는 학습이나 3D 화면이 필요한 학습은 그래픽카드가 필요합니다.
3D 물리 엔진에서 로봇이 날아간 건 학습이 잘못된 건가요?
아닙니다. 시험 프로그램에서 그리퍼 관절 설정 수정을 빠뜨린 것이 원인이었고, 고친 뒤에는 같은 정책으로 성공했습니다.
이 정책을 실제 시연에 썼나요?
아니요. 실제 시연에서는 사람이 짠 규칙으로 이 단계를 처리했습니다. 이 정책은 그 규칙을 대신할 수 있는지 시험한 후보였습니다.
이런 과정을 수업에서 다룰 수 있나요?
수업에서 다루는 범위와 방법은 교육 상담에서 안내합니다.
이 글의 100%는 잡음 없는 계산 환경 기준이며, 3D 물리 엔진(Isaac Sim 5.1.0)에서는 한 조건만 확인했습니다. 실제 로봇에서의 동작은 다루지 않습니다. 가상 로봇은 바퀴를 굴리지 않고 차체에 속도를 직접 주는 방식이라 메카넘 바퀴의 옆 미끄러짐은 재현되지 않습니다.
다음 단계
다음 편에서는 이 작은 학습에서 한 걸음 더 나아가, 블록까지 멀리서 다가가는 단계를 가상 로봇 수천 대로 학습시킨 과정을 적을 예정입니다. 수업에서 다루는 방법은 교육 상담에서 안내합니다.
사용한 버전: Isaac Sim 5.1.0(3D 검증)
출처: 저희가 직접 진행한 교육용 AMR로봇암 블록 앞 정렬 강화학습(2026-09-23). 학습 환경의 세부 설정(성공 판정 거리·각도, 점수 설계, 학습 설정값)은 이 글에 싣지 않았습니다.
이 글과 그림의 저작권은 SV로보틱스에 있습니다. 원문 링크를 밝힌 인용은 환영하며, 전문 복제·재배포와 교육 자료로의 전재는 허락이 필요합니다.