18. 계단의 한계 — 눈 감은 로봇은 몇 cm까지 오를 수 있나

이번 단계 목표: 17편에서 4cm 계단을 올랐습니다. 그럼 6cm는? 8cm는? 10cm는? 단차를 계단식으로 올려 가며(말 그대로 커리큘럼), 지형 관측 없는 로봇의 등반 한계를 실측으로 찾습니다. 커리큘럼으로 12cm까지 올랐고, 글을 쓴 뒤 이어 간 실험(후기)에서는 16cm까지 올랐습니다.


실험 설계: 커리큘럼 사다리

단차가 커질수록 두 가지를 함께 올려야 합니다:

  • 지형 단차: 4 → 6 → 8 → 10 → 12cm (--stairs_height)
  • 발 들림 목표: 단차 + 4cm 여유 (실제 들림 기준 8 → 10 → 12 → 14 → 16cm)

그리고 매 단계를 이전 단계 정책에서 이어 학습합니다. 4cm를 오르는 정책이 6cm를 배우고, 6cm를 오르는 정책이 8cm를 배우는 식 — 학습 커리큘럼이 계단 그 자체입니다.

판정은 17편의 발밑 지면 판정을 스크립트로 묶은 g1_stairs_check.py로: 발밑 지면 로그가 단조 상승 + 낙상 0이어야 등반으로 인정합니다.

cd scripts/train
python g1_train.py --task stairs --stairs_height 0.06 --max_iterations 3000 \
    --resume_from logs/g1-stairs/model_8997.pt
python g1_stairs_check.py -e g1-stairs6 --out 18_g1_stairs6.mp4
# ... 0.08, 0.10, 0.12로 반복 (각각 직전 단계에서 resume)

결과: 단차별 성적표

각 단계 3000 iteration(44~48분)씩, 직전 정책에서 이어 학습한 결과입니다. 판정은 전부 발밑 지면 로그(15초, 낙상 포함) 기준:

단차 판정 15초 등반량 학습 수렴 보상 학습 중 에피소드 길이
4cm (17편) 성공 +0.29m (7단) 26.9 1001 (최대)
6cm 성공 +0.42m (7단) 25.3 1001 (최대)
8cm 성공 +0.63m (8단) 23.8 1001 (최대)
10cm 성공 +0.70m (7단) 20.8 1001 (최대)
12cm 성공 +0.84m (7단) 18.0 985 (첫 하락)

에피소드 길이는 한 번의 시도가 이어진 스텝 수로, 최대 1001(20초를 넘어지지 않고 버팀)입니다.

놀랍게도 12cm까지 전부 성공입니다. 지형 관측 없이, 몸의 감각(관절각과 몸통 기울기)만으로요. 예상(8~10cm쯤 한계)을 넘어선 건 커리큘럼의 힘으로 보입니다 — 4cm를 아는 정책에게 6cm는 작은 변화이고, 그 사다리를 타고 올라가면 처음부터라면 어려웠을 높이에 도달합니다. (참고: 15편 1차 시도에서 ±25cm 무작위 요철을 처음부터 배우게 했을 때는 붕괴했습니다. 계단 12cm를 처음부터 시켜 보지는 않았습니다.)

동시에 한계가 다가오는 신호도 숫자에 선명합니다: 수렴 보상이 단조 감소(26.9→18.0)하고, 12cm에서 처음으로 학습 중 에피소드 길이가 최대치 아래로 떨어졌습니다(넘어지는 로봇이 나오기 시작). 추세로 보면 14~16cm 어딘가가 감각만으로 오를 수 있는 한계이고, 실제 주택 계단은 높이맵 관측(인지) 없이는 어려울 겁니다 — 다음 시즌의 과제로 남깁니다. (이 추정은 아래 후기에서 틀린 것으로 드러납니다.)

단차별 등반 비교 — 왼쪽 위부터 시계방향으로 6, 8, 12, 10cm

12cm 계단을 오르는 G1

영상:

·

·

·


후기 (추가 실험): 그 ‘한계 신호’는 진짜였나

이 글을 쓰고 나서 “추정 말고 실측을 하자”며 스윕을 연장했습니다(자세한 검증은 R02). 결과는 제 예상을 두 번이나 뒤집었습니다:

단차 판정 15초 등반량 수렴 보상 학습 에피소드 길이
14cm 성공 +0.84m (6단) 18.1 1001 (최대 — 회복!)
16cm 성공 +0.96m (6단) 16.6 992
  • “14~16cm가 벽”이라는 추정은 틀렸습니다. 커리큘럼 사다리는 16cm까지 올라갔습니다. 눈 없이 여기까지 올 줄은 몰랐습니다.
  • 12cm의 에피소드 길이 하락(985)은 한계 신호가 아니라 노이즈였을 가능성이 큽니다 — 14cm에서 최대치(1001)로 회복됐으니까요. 단조 감소하는 건 보상뿐인데, 이것도 ‘더 힘든 과제에서 추종 보상을 더 잃는’ 자연스러운 현상과 구분이 안 됩니다. 한 번의 실행에서 나온 작은 변동으로 추세를 읽는 것은 위험하다 — 회고에 쓴 “추세를 읽어라”는 조언에는 이렇게 각주가 하나 필요해졌습니다: 추세는 반복 실험 위에서만 믿어라.
  • 진짜 한계는 16cm보다 위 어딘가입니다(16cm까지만 쟀습니다). 다만 스윙 발 목표가 이미 20cm(실제 들림 기준)라 무릎·엉덩이 가동범위의 기구학적 한계에 가까워질 것으로 보여, 여기서부터는 실용 가치보다 호기심의 영역이라 스윕을 멈춥니다.

영상:

·


회고

  • 커리큘럼은 사다리다. 12cm를 처음부터 배우게 했으면 실패했을 것으로 짐작합니다(직접 시험하지는 않았습니다). 4→6→8→10→12로 오르니 각 단계는 ‘조금 어려운 복습’일 뿐이었습니다. 이어 학습 체인 하나로 구현되는, 이 시리즈에서 가장 가성비 높은 기법.
  • 성공/실패보다 추세를 읽어라 — 단, 반복 실험 위에서. 일곱 단계(후기 포함) 모두 성공이었고, 보상 감소는 여유가 줄고 있다는 신호일 수 있습니다. 다만 후기에서 보듯 12cm의 에피소드 길이 하락은 14cm에서 회복됐고, 한 번의 실행에서 나온 작은 변동은 믿기 어렵습니다. 추세로 한계를 짐작하려면 반복 실험이 먼저입니다.
  • 한계의 정체는 결국 ‘눈’. 단차가 커질수록 필요한 건 더 높은 발이 아니라 어디에 단이 있는지 아는 것입니다. 감각만의 등반은 매 발걸음이 도박이고, 커리큘럼은 그 도박의 승률을 올려줄 뿐입니다. 다음 목표가 높이맵 관측(인지)인 이유입니다.

이 시리즈의 전체 글 목록 → 시리즈 목차