05. 평지 보행 학습 — 49분 만에 걷기, 그런데 잘 걷나?

이번 단계 목표: 드디어 학습 버튼입니다. 내장 환경 Isaac-Velocity-Flat-G1-v0을 RSL-RL PPO로 학습시키고, 시즌 1의 “10분 만에 걷기”와 학습 시간·자원·결과를 정면 비교합니다. 그리고 성공했다고 믿지 않는 연습을 합니다.


실행

# 학습 (4096 환경, 1500 iteration)
python -u <IsaacLab>/scripts/reinforcement_learning/rsl_rl/train.py \
    --task Isaac-Velocity-Flat-G1-v0 --num_envs 4096 --headless --max_iterations 1500

# 학습 곡선 그리기 (콘솔 로그 파싱)
python scripts/05_plot_curve.py <학습 로그>

# 결과 재생 + 영상 (Play 환경: 랜덤화 꺼짐, 소수 환경)
python -u <IsaacLab>/scripts/reinforcement_learning/rsl_rl/play.py \
    --task Isaac-Velocity-Flat-G1-Play-v0 --num_envs 9 --headless --video --video_length 400

체크포인트와 텐서보드 로그는 logs/rsl_rl/g1_flat/<타임스탬프>/에 쌓입니다. 시즌 1과 같은 rsl_rl 계열이라 구조도 같아요(model_<번호>.pt).


결과 — 49분 만에 걷기 (그리고 ‘안 넘어지기’는 5분 만에)

학습 곡선

항목 시즌 1 (Genesis) 시즌 2 (Isaac Lab)
학습 시간 1000 iter ≈ 10분 1500 iter = 49분 18초
반복당 시간 ~0.6초 ~2.0초
환경 수 / rollout 4096 / 24 4096 / 24 (동일)
표본 처리량 ~16만 step/s ~4.9만 step/s
VRAM (16GB 내 여유) 5.5GB / 16GB
최종 보상 / 에피소드 길이 28.3 / 991(만기 1000)
정책이 제어한 관절 12 37

영상:

— 랜덤화를 끈 Play 환경에서 9대가 각자의 명령(초록 화살표)을 따라 걷습니다.

읽어낼 것 셋입니다.

  1. 곡선에 이야기가 셋 있습니다. ① 초반 130 iter 부근까지 보상이 −10까지 파입니다. 벌점(자세·토크·넘어짐 −200)만 쌓이는 “맞으면서 배우는” 구간이죠. ② 그 직후 에피소드 길이가 수직으로 1000에 붙습니다 — “안 넘어지기”는 150 iter, 즉 5분 만에 해결됩니다. ③ 나머지 44분은 전부 명령 추종과 효율(벌점 절감)을 다듬는 긴 꼬리입니다. 시즌 1의 곡선과 정확히 같은 3막 구조예요.
  2. 속도 차이는 5배지만 조건이 다릅니다. 반복당 2.0초 대 0.6초의 차이에는 엔진 차이만이 아니라 37관절(대 12) + 접촉 센서 전신 추적 + 보상 16항목 + 관측 노이즈가 들어 있습니다. 같은 조건 비교는 아니고, “같은 문제를 그 도구의 표준 방식으로 풀 때의 체감”입니다. 참고로 CPU governor가 powersave였으니 이 수치는 보수적입니다.
  3. VRAM 5.5GB — 16GB의 3분의 1입니다. 나중에 높이맵 관측(관측 310차원)을 얹어도 여유가 있겠다는 청신호입니다.

아직 모르는 것 — 06편의 숙제

시즌 1의 뼈아픈 교훈(10편: “그거 진짜 걷는 거 맞아?”)을 잊지 않았습니다. 보상 28.3과 만기 생존은 “넘어지지 않고 명령을 따른다”는 뜻이지 “잘 걷는다”는 뜻이 아닙니다.

04편에서 본 대로 이 환경에는 위상 클록도 대칭 보상도 없습니다. 그래서 걸음 빈도·보폭· 발 들림·대칭성을 시즌 1의 지표 도구로 실측하기 전까지는 걸음 품질을 판정하지 않기로 합니다. 영상은 꽤 그럴듯해 보이지만, 그럴듯함은 증거가 아니니까요.

막힌 점 — 내장 play.py도 종료에서 한참 걸립니다 우리 스크립트는 00편의 처방(STOP 콜백 해제)으로 몇 초 만에 닫히지만, 내장 play.py는 그 처방이 없어 영상 저장 후 종료까지 수 분을 소모했습니다. 영상 파일은 종료 전에 이미 저장되므로 실해는 없지만, 우리 평가 스크립트(06편)는 자체 종료 경로를 씁니다.


다음 단계

이제 자를 들 차례입니다. 시즌 1의 걸음 지표 도구를 이식해 이 정책이 정말 걷는지 재 봅니다 → 06. 걸음 품질 측정