15. 로봇 학습 스택 — 대규모 병렬 시뮬레이션
로봇 강화학습의 판을 바꾼 것은 새 알고리즘이 아니라 GPU 위에서 도는 시뮬레이터다
이 장에서 처음 나오는 말6개
물리 시뮬레이터Physics Simulator- 강체·접촉·마찰을 수치적으로 푸는 엔진. 환경
P를 우리가 만드는 도구다. GPU 병렬 시뮬GPU-Parallel Simulation- 수천 개 환경을 GPU 메모리 안에서 동시에 굴리는 방식. CPU 왕복이 없어 처리량이 자릿수로 오른다.
URDF · USD · MJCF로봇 기술 포맷- 로봇의 링크·관절·질량·충돌 형상을 적은 파일. 시뮬레이터마다 선호 포맷이 다르다.
도메인 무작위화 파이프라인Randomization Pipeline- 에피소드마다 물성치를 바꿔 주는 코드 경로. 프레임워크가 기본 기능으로 제공한다.
ONNXOpen Neural Network Exchange- 학습된 신경망을 프레임워크 밖으로 내보내는 표준 포맷. 로봇 온보드 추론에 흔히 쓴다.
ROS 2Robot Operating System 2- 로봇 소프트웨어의 사실상 표준 미들웨어. 센서·제어 노드를 잇는다. 학습된 정책은 결국 여기에 실린다.
판을 바꾼 것 — 환경을 GPU 안에 넣기
섹션 제목: “판을 바꾼 것 — 환경을 GPU 안에 넣기”전통적인 구조는 이랬다. CPU에서 물리 시뮬 → 관측을 GPU로 복사 → 신경망 추론 → 행동을 CPU로 복사. 환경 수를 늘려도 이 왕복이 병목이라 처리량이 안 올랐다.
환경·관측·보상 계산까지 전부 GPU 텐서로 두면 복사가 사라진다. 그러면 PPO의 “샘플을 펑펑 쓰는” 성질이 단점이 아니라 장점이 된다 — 6장에서 말한 대량 병렬 수집이 쉬운 조건이 여기서 만들어진다.
시뮬레이터 고르기
섹션 제목: “시뮬레이터 고르기”| 도구 | 성격 | 고를 때 |
|---|---|---|
| MuJoCo 3.11 | 범용 강체·접촉 시뮬레이션, 가볍고 빠르다 | 알고리즘 연구, 벤치마크, 학습용 |
| MuJoCo의 GPU 경로(MJX) | 같은 모델을 GPU에서 대량 병렬로 | MuJoCo 자산을 그대로 대규모 학습에 |
| Isaac Sim 6.0 + Isaac Lab 3.0 | GPU 네이티브 + 사실적 렌더링 + 로봇 자산 생태계 | 실물 배포를 노리는 보행·조작, 카메라가 필요한 과제 |
| 게임 엔진 기반 | 렌더링이 강점 | 지각 중심 과제 |
둘을 같이 쓰는 팀이 많다 — 알고리즘 실험은 MuJoCo에서 빠르게, 실물로 갈 과제는 Isaac Lab에서. 자산 포맷(MJCF ↔ USD/URDF) 변환이 실무의 잔업이다.
학습 라이브러리
섹션 제목: “학습 라이브러리”Isaac Lab은 알고리즘을 직접 갖지 않고 외부 학습 라이브러리를 꽂아 쓴다.
| 라이브러리 | 성격 |
|---|---|
| RSL-RL | 보행 연구에서 널리 쓰인 가벼운 PPO 구현. 대규모 병렬에 맞춰져 있다 |
| rl_games | 고성능 GPU 학습에 최적화 |
| skrl | 여러 시뮬레이터·알고리즘을 아우르는 통합 계층 |
| Stable-Baselines3 | 익숙하지만 대규모 GPU 병렬에는 덜 맞는다 |
시작은 예제가 가장 많은 조합으로 한다. 보행이라면 Isaac Lab + RSL-RL 예제가 출발점이다.
학습에서 실물까지 — 파이프라인
섹션 제목: “학습에서 실물까지 — 파이프라인”-
로봇 자산을 준비한다.
URDF/USD로 링크·관절·질량·관성·충돌 형상을 기술한다. 질량과 관성이 실물과 다르면 여기서부터 sim-to-real 격차가 시작된다.
-
환경을 정의한다.
관측·행동·보상·종료·무작위화. Isaac Lab은 이것들을 설정 클래스로 나눠 두어 보상 항을 켜고 끄기 쉽게 되어 있다 — 절제 실험(10장)에 유리하다.
-
보상과 커리큘럼을 짠다.
평지 → 경사 → 계단 → 자갈 순으로 지형 난이도를 올리고, 성공률에 따라 자동으로 조절한다 (8장).
-
대규모로 학습한다.
환경을 수천 개(2048~8192) 띄우고 PPO를 돌린다. 보행 학습 시간은 로봇·환경 수·GPU·목표 성능에 따라 수십 분에서 여러 시간 이상까지 달라진다.
-
시뮬 안에서 평가한다.
학습에 안 쓴 지형·물성치 범위, 외란 밀치기, 극단 명령. 시드 여러 개 (10장).
-
정책을 내보낸다.
ONNX나 TorchScript로 추출. 관측 정규화 통계도 같이 내보낸다 (9장).
-
실물에 올린다.
온보드 컴퓨터에서 50Hz로 추론 → 목표 관절 각도 → PD 제어기. ROS 2 노드로 감싸는 것이 일반적이다. 안전 감시 루프를 별도로 둔다.
-
격차를 측정해 되먹인다.
같은 명령에 대한 시뮬과 실물의 궤적 차이를 재고, 액추에이터 모델·지연·무작위화 범위를 고쳐 다시 학습한다 (14장).
프로젝트 구조
섹션 제목: “프로젝트 구조”디렉터리assets/
- robot.usd 로봇 자산 — 질량·관성이 실물과 맞는지가 출발점
디렉터리envs/
- locomotion_env.py 관측·행동·종료
- rewards.py 보상 항을 함수로 분리 — 절제 실험용
- randomization.py 물성치·지연·외란
디렉터리configs/
- ppo_rsl.yaml
- curriculum.yaml
디렉터리deploy/
- export_onnx.py 정책 + 정규화 통계
- ros2_node.py 온보드 추론 루프
- safety_monitor.py 정책 밖의 안전 층
조작 쪽 스택은 다르다
섹션 제목: “조작 쪽 스택은 다르다”보행이 위 파이프라인이라면, 조작은 시뮬보다 실물 데이터 쪽에 무게가 있다.
| 보행 | 조작 | |
|---|---|---|
| 주 학습 방식 | 시뮬 RL → 실물 | 실물 시연 → 모방학습 (16장) |
| 데이터 | 시뮬에서 생성 | 사람이 원격 조종으로 수집 |
| 대표 스택 | Isaac Lab + RSL-RL | LeRobot 0.6 등 |
| 병목 | sim-to-real 격차 | 데이터 수집 비용 |
LeRobot은 데이터셋·정책·실기 제어를 한 스택으로 묶은 것이고, 확인 시점(v0.6.1)에는 π0 계열·SmolVLA 등 여러 VLA 정책이 공용 부품으로 통합돼 있다. 저가 로봇 팔로 시작할 수 있어 개인이 실물 경험을 쌓기에 현실적인 진입로다.
하드웨어와 비용 감각
섹션 제목: “하드웨어와 비용 감각”| 항목 | 감각 |
|---|---|
| 학습 GPU | 단순 보행 예제는 단일 GPU에서도 가능. 조작·픽셀 입력은 메모리와 시간이 크게 늘어난다 |
| VRAM | 병렬 환경 수와 렌더링 여부에 좌우된다. 렌더가 붙으면 급증 |
| 시뮬 없는 실물 학습 | 연구 사례는 있지만 수집 비용·안전 때문에 평가와 미세조정에 집중하는 경우가 많다 |
| 로봇 실물 | 저가 팔(수십만 원대)부터 사족·이족 플랫폼(수천만 원대)까지 폭이 넓다 |
| 클라우드 | GPU 인스턴스로 학습, 로컬에서 배포하는 조합이 흔하다 |
개인이 밟을 수 있는 경로
섹션 제목: “개인이 밟을 수 있는 경로”| 단계 | 무엇 | 산출물 |
|---|---|---|
| 1 | Gymnasium + SB3로 연속 제어 과제 (MuJoCo) | 기준선 재현, 시드 분포 보고 |
| 2 | 보상 항을 바꿔 가며 절제 실험 | 보상 설계를 이해했다는 증거 |
| 3 | Isaac Lab 예제로 사족 보행 학습 | 대규모 병렬 학습 경험 |
| 4 | 도메인 무작위화 범위를 바꿔 가며 견고함 측정 | sim-to-real 감각 |
| 5 | 저가 로봇 팔 + LeRobot로 시연 수집·모방학습 | 실물 경험 |
| 6 | ONNX 내보내기 + 실시간 추론 루프 | 배포 경험 |
3번까지가 “시뮬을 돌려 봤다”, 5~6번이 “실물을 안다” 다. 후자가 이 분야에서 훨씬 희소하다.
참고 자료
섹션 제목: “참고 자료”- MuJoCo Documentation — 모델링·시뮬레이션·MJX 공식 문서
- MuJoCo Releases — 현재 버전과 변경 사항
- Isaac Lab Reinforcement Learning Guide — 지원 학습 라이브러리와 병렬 환경 구조
- Isaac Lab Releases — Isaac Sim 호환성을 포함한 릴리스 정보
- LeRobot Documentation — 데이터셋·정책·실기 제어 스택
15장 요약
섹션 제목: “15장 요약”- 로봇 RL의 판을 바꾼 것은 환경을 GPU 안에 넣어 CPU 왕복을 없앤 것이다
- 환경 4096개는 64개와 다른 결과를 낸다. SPS를 올리는 일이 곧 연구다
- MuJoCo는 연구·알고리즘용, Isaac Sim + Isaac Lab은 실물 배포를 노리는 대규모 학습용
- 알고리즘은 외부 라이브러리를 꽂는다 — RSL-RL · rl_games · skrl. 예제가 많은 조합으로 시작한다
- 설치에서 버전 조합이 가장 자주 막힌다. 공식 도커로 시작한다
- 파이프라인은 자산 → 환경 → 보상·커리큘럼 → 대규모 학습 → 시뮬 평가 → 내보내기 → 실물 → 격차 되먹임
- 마지막 되먹임 루프를 빠르게 도는 것이 실력이다. 업무의 실체는 시뮬과 실물을 맞추는 계측이다
- 조작은 스택이 다르다 — 시뮬 RL이 아니라 실물 시연 + 모방학습(LeRobot 등)이 중심이다
- 실물을 만져 본 경험이 희소하고, 채용에서 실제 변별점이 된다