Booster K1 걷기 학습, Isaac Lab으로 32분 걸렸습니다
GPU 한 장으로 K1 4,096대를 동시에 돌려 32분 만에 넘어지지 않는 걸음이 나왔습니다. 그런데 1초에 발을 15.2번 딛는 종종걸음이었습니다. 걸음 모양 점수를 넣어 다시 학습한 v4는 1초 3.6걸음으로 걸었습니다. 설치하며 막힌 곳과 아직 확인하지 않은 한계까지 그대로 적었습니다.

피지컬 AI, 직접 해 봤습니다 · 1회
이 글은 실습 과정과 결과만 공개합니다. 대신 도입 기관에는 교재 본문과 지도서를 제공합니다.
GPU 한 장으로 K1 4,096대를 동시에 학습시켜 1,000회 반복, 약 32분 만에 넘어지지 않는 정책이 나왔습니다. 10초 동안 걸려 봤을 때 한 번도 넘어지지 않았습니다.
그런데 걸음 모양은 합격이 아니었습니다. 1초에 발을 15.2번 딛는 종종걸음이었고, 영상을 본 저희 대표의 평가는 "빵점"이었습니다. 걸음 모양에 점수를 주도록 고쳐 다시 학습한 v4는 1초에 3.6번 딛는, 무릎을 들어 번갈아 걷는 걸음이 됐습니다.
중간의 v2는 바닥 마찰·밀기·몸통 무게를 무작위로 바꿔, 다른 시뮬레이터에서도 넘어지지 않게 한 학습입니다(연재 4회). v3는 v2에서 회전 따라가기 점수만 높여 본 시험입니다. MuJoCo에서 옆걸음 방향은 잘 지켰지만 앞으로 가는 거리가 줄어 기준으로 삼지 않았고, 이 글에서는 걸음 모양이 달라진 v1과 v4만 비교합니다.
모두 평지, 시뮬레이션 안에서만 확인한 결과입니다. 실제 로봇에 올리는 단계는 아직 하지 않았습니다. 아래는 저희가 직접 설치하고 학습시킨 기록입니다.
어떤 환경에서 했나요?
윈도우 PC 한 대, 화면 없이 원격 터미널 명령만으로 진행했습니다.
| 항목 | 이번에 쓴 것 |
|---|---|
| PC | Windows 11 Pro, RTX 4060 Ti 16GB, i7-13700F, RAM 32GB |
| 시뮬레이터 | NVIDIA Isaac Sim 5.1.0 |
| 학습 프레임워크 | Isaac Lab 2.3.2 |
| 학습 알고리즘 | PPO (rsl-rl-lib 3.1.2) |
| 로봇 모델 | Booster 공식 저장소 booster_assets의 K1_22dof.urdf와 메시 |
Isaac Sim·Isaac Lab·로봇 모델은 모두 공개된 파일입니다. Booster 모델 저장소는 BSD-3-Clause 라이선스입니다.
K1 모델은 제대로 들어오나요?
들어옵니다. URDF를 USD로 바꾸자 관절 22개가 원본과 이름·개수 모두 같게 들어왔고, 처음 자세에서 키 약 0.955m로 바닥 위에 똑바로 섰습니다.

그런데 중력만 켜면 2~3초 안에 넘어집니다. 모델이 잘못된 게 아니라, 균형을 잡는 제어가 아직 없기 때문입니다. 이걸 학습으로 채우는 것이 이번 실습입니다.
변환 중에 Unresolved reference ... head_realsense_rgb_link 같은 경고가 뜨는데, 모양이 없는 카메라 부착용 링크라서 무시해도 됩니다.
학습은 어떻게 설정했나요?
Isaac Lab에 들어 있는 휴머노이드 평지 걷기 예제 과제를 K1에 맞게 옮겼습니다. 설정 파일 네 개(과제 등록, 로봇 설정, 환경·보상, PPO 설정)입니다.
- 걷기 명령 — 앞 0~0.8 m/s, 옆 ±0.3 m/s, 회전 ±1 중에서 무작위로 줍니다
- 서 있는 자세 — 시작 높이 0.56m, 엉덩이 -0.2 · 무릎 0.4 · 발목 -0.2 rad
- 종료 조건 — 몸통이 바닥에 닿으면 그 로봇의 에피소드를 끝냅니다
- 신경망 — 256-128-128, 학습률 1e-3
관절을 목표 각도로 당기는 힘(PD 게인)은 Booster 공개 학습 저장소의 T1 값을 참고해 K1 무게에 맞게 낮췄습니다.
게인은 다리에 가장 크게, 발목·팔·머리로 갈수록 작게 넣었습니다. 값 전체는 교육과정 자료에서 다룹니다.
이 게인은 제조사 공식 값이 아니라 저희가 정한 추정치입니다.
학습은 얼마나 걸렸나요?
처음 결과(v1)는 K1 4,096대를 동시에 돌려 1,000회 반복에 약 32분이 걸렸습니다. 1회에 약 1.9초, 전체 약 9,830만 스텝입니다.
학습 중 GPU 사용률은 약 56%, GPU 메모리는 약 4.9GB였습니다. 50회마다 중간 결과가 저장돼서, 도중에 멈춰도 이어서 쓸 수 있습니다.
보상은 어떻게 변했나요?
처음 학습(v1)에서는 -0.28에서 시작해 1,000회째 32.0(최고 32.5)까지 올랐습니다.

| 반복 | 평균 보상 | 평균 에피소드 길이(최대 1,000스텝 = 20초) |
|---|---|---|
| 0 | -0.28 | 13 — 0.3초 만에 넘어짐 |
| 약 85 | 약 -21(최저) | 급상승 시작 |
| 131 | — | 처음으로 1,000 도달 |
| 999 | 32.0 | 992 |
곡선은 이렇게 읽습니다. 초반에는 넘어지지 않는 법부터 배우느라 보상이 잠깐 내려갑니다. 서는 법을 익힌 뒤에는 명령 속도대로 걷기 점수가 꾸준히 오르고, 800회 이후로는 거의 평평해집니다.
학습 전과 처음 결과(v1)는 얼마나 다른가요?
같은 조건(앞으로 0.5 m/s 명령)에서 비교했습니다. 넘어지던 로봇이 서서 앞으로 갑니다.

| 학습 전 | 처음 결과 v1(1,000회) | |
|---|---|---|
| 넘어짐 | 5초 동안 2~3번 | 10초 동안 0번 |
| 몸통 최저 높이 | 0.08~0.10m(바닥에 누움) | 0.53m(서서 걸음) |
| 이동 거리 | 0.7m(쓰러지며 밀림) | 4.26m(약 0.43 m/s) |
넘어지지 않는데 왜 "빵점"이었나요?
걸음 모양에는 점수를 주지 않았기 때문입니다. v1에게는 "넘어지지 말고 명령 속도를 맞춰라"만 가르쳤습니다. 그러자 로봇은 점수를 가장 쉽게 따는 방법, 발을 아주 빠르게 조금씩 딛는 종종걸음을 찾아냈습니다. 1초에 15.2번, 사람이 2~3번 딛는 것과 비교하면 튀듯이 걷는 셈입니다.
AI는 시킨 것만 합니다. 그래서 v4에서는 걸음 모양을 점수로 가르쳤습니다. Booster 공개 학습 저장소(booster_gym)의 걸음 점수 방식을 참고했습니다.
- 걸음 박자 — 일정한 박자를 로봇에게 알려 주고, 박자에 맞춰 왼발·오른발을 번갈아 들어 올리면 점수
- 두 발 간격·몸통 높이 — 두 발이 너무 붙거나 몸통이 내려앉으면 벌점
- 급한 동작 벌점 강화 — 관절 명령이 갑자기 바뀌면 전보다 크게 벌점
- 바탕 — 마찰·무게를 무작위로 바꾸고 로봇을 밀어 보는 학습 조건 위에 더함
점수 값 전체는 교육과정 자료에서 다룹니다. 같은 PC에서 4,096대로 2,500회, 약 1시간 40분 학습했습니다.

| 10초, 앞으로 0.5 m/s | 처음 결과 v1 | v4 |
|---|---|---|
| 1초에 발 딛는 횟수 | 15.2번 | 3.6번(사람 2~3번) |
| 동작 급변 정도 | 0.199 | 0.062(작을수록 부드러움) |
| 이동 거리 | 4.26m | 5.02m(목표 5.0m) |
| 넘어짐 | 0번 | 0번 |
v4는 저희 대표가 영상을 보고 합격 판정을 내렸고, 지금 저희 실습의 기준 정책입니다. 회전 명령에서도 목표 458°에 479°로 따라왔습니다. 다른 물리 엔진(MuJoCo)으로 옮긴 결과는 이 연재 4회에서 다룹니다.
설치하다 막힌 곳은 어디였나요?
윈도우에서 Isaac Sim 5.1.0과 Isaac Lab 2.3.2를 함께 쓸 때 버전이 맞지 않는 곳이 있었습니다. 실제로 겪은 것만 적습니다.
| 증상 | 원인 | 해결 |
|---|---|---|
Can't find extension ... isaacsim.asset.importer.urdf = 2.4.31 | Isaac Sim 5.1.0 윈도우판에는 URDF 확장 2.4.30이 들어 있고, Isaac Lab 2.3.2는 2.4.31을 찾음 | Isaac Lab 사본에서 찾는 버전을 2.4.30으로 변경 |
위를 고친 뒤 'ImportConfig' object has no attribute 'set_merge_fixed_ignore_inertia' | 2.4.30에 없는 함수 | 함수가 있을 때만 부르도록 조건 추가 |
Warp error: Failed to open file ... | 윈도우 사용자 폴더 이름이 한글이라 임시 파일 경로가 깨짐 | 환경 변수 WARP_CACHE_PATH를 영문 경로로 지정 |
No module named 'h5py' | 기록 기능에 필요한 부품이 없음 | h5py 추가 설치 |
| 예전 K1 설정을 그대로 쓰면 관절을 못 찾음 | 옛 설정은 Left_Knee_Pitch 같은 옛 이름, 지금 URDF는 left_knee_pitch_joint | 관절 이름 규칙을 지금 URDF에 맞춰 새로 작성 |
K1 URDF의 팔·머리 관절 일부는 이름 앞에 aa가 붙어 있습니다(aahead_yaw_joint 등). 원본 이름 그대로이니 오타로 오해하지 않으셔도 됩니다.
실제 로봇에 바로 올릴 수 있나요?
아직은 아닙니다. 이번 결과는 평지 시뮬레이션에서만 확인했습니다.
v4는 마찰·무게를 바꾸고 밀어 보는 조건으로 학습했지만, 실제 로봇으로 가려면 시뮬레이션과 실제의 차이를 검증하는 단계가 더 필요합니다. 관절 게인도 제조사 공식 값이 아니라 추정치입니다. 저희는 이 단계를 아직 하지 않았습니다.
수업으로 옮긴다면 이번 실습은 "설치 → 모델 확인 → 학습 → 곡선 읽기 → 전후 비교 → 점수 고쳐 다시 학습" 한 묶음으로 쓸 수 있습니다. 마지막 단계가 "AI는 시킨 것만 한다"를 직접 보는 시간입니다.
자주 묻는 질문
이 정도 학습에 어떤 GPU가 필요한가요?
저희는 RTX 4060 Ti 16GB 한 장으로 했고, v1 학습 중 GPU 메모리는 약 4.9GB를 썼습니다. 다른 GPU에서는 시험하지 않았습니다.
넘어지지 않으면 성공 아닌가요?
저희도 처음엔 그렇게 봤습니다. v1은 넘어지지 않았지만 1초에 15.2번 딛는 종종걸음이었습니다. 걸음 모양에 점수를 준 v4에서 1초 3.6번으로 사람다운 걸음이 됐습니다.
리눅스가 아니어도 되나요?
이번 실습은 Windows 11에서 했습니다. 다만 Isaac Lab 2.3.2와 Isaac Sim 5.1.0 윈도우판 사이의 URDF 확장 버전 차이를 직접 고쳐야 했습니다.
학습한 정책을 실제 K1에서 쓸 수 있나요?
아직 확인하지 않았습니다. 평지 시뮬레이션 결과이고, 실제 로봇 적용에는 시뮬레이션과 실제 차이를 확인하는 추가 검증이 필요합니다.
관절 게인은 어디서 가져왔나요?
Booster 공개 학습 저장소의 T1 값을 참고해 K1 무게에 맞게 낮춘 추정치입니다. 제조사 공식 값은 아닙니다.
확인한 버전: Isaac Sim 5.1.0 · Isaac Lab 2.3.2 · rsl-rl-lib 3.1.2 · booster_assets 커밋 3c2dfa9
출처: 에스브이로보틱스 Isaac Sim 실습 기록(K1 변환 시험, K1 걷기 강화학습 절차서, v1↔v4 걸음 비교), BoosterRobotics/booster_assets(BSD-3-Clause), BoosterRobotics/booster_gym(걸음 점수 방식 참고), isaac-sim/IsaacLab v2.3.2(BSD-3-Clause)
이 글과 그림의 저작권은 SV로보틱스에 있습니다. 원문 링크를 밝힌 인용은 환영하며, 전문 복제·재배포와 교육 자료로의 전재는 허락이 필요합니다.